|
| 1 | +\documentclass[11pt]{article} |
| 2 | +\newcommand{\devsim}{\mbox{DEVSIM}} |
| 3 | +\newcommand{\devsimllc}{\mbox{DEVSIM LLC}} |
| 4 | +\newcommand{\gmsh}{\mbox{Gmsh}} |
| 5 | +\newcommand{\matplotlib}{\mbox{matplotlib}} |
| 6 | +\newcommand{\numpy}{\mbox{NumPy}} |
| 7 | +\newcommand{\python}{\mbox{Python}} |
| 8 | +\newcommand{\visit}{\mbox{VisIt}} |
| 9 | + |
| 10 | +\usepackage{indentfirst} |
| 11 | +\usepackage{fullpage} |
| 12 | +\usepackage{helvet} |
| 13 | +\renewcommand{\familydefault}{\sfdefault} |
| 14 | +\usepackage{mathptmx} |
| 15 | +%\usepackage[dvips,colorlinks,breaklinks,pagebackref,citecolor=blue,urlcolor=blue,bookmarks,bookmarksnumbered,linkcolor=blue]{hyperref} |
| 16 | +\usepackage[colorlinks,breaklinks,pagebackref,citecolor=blue,urlcolor=blue,bookmarks,bookmarksnumbered,linkcolor=blue]{hyperref} |
| 17 | +\title{\devsim\ BJT Example} |
| 18 | +\author{Juan E. Sanchez\\ juan.sanchez@devsim.com} |
| 19 | + |
| 20 | +\setcounter{secnumdepth}{2} |
| 21 | + |
| 22 | +\begin{document} |
| 23 | +\maketitle |
| 24 | +\thispagestyle{empty} |
| 25 | +\section{Introduction} |
| 26 | +This package includes the examples for the article ``Semiconductor Device Simulation Using \devsim''. In this example, the meshing, modeling, simulation, and visualization for a bipolar junction transistor~(BJT) is developed. |
| 27 | +%\section{Installation} |
| 28 | +%\subsection{\devsim} |
| 29 | +\devsim\ is an open source simulation software for technology computer-aided design~(TCAD) and is developed by \devsimllc. It uses a generalized partial-differential equation~(PDE) approach to perform semiconductor device simulation on a mesh. The software and documentation is available from \url{http://www.devsim.org}. |
| 30 | + |
| 31 | +In addition to \devsim, the following software packages are used to perform meshing, analysis, and visualization of results. |
| 32 | + |
| 33 | +~\\~\\ |
| 34 | +\noindent |
| 35 | +\begin{tabular}{p{1.5cm}p{5cm}p{5cm}p{2cm}} |
| 36 | +\hline\noalign{\smallskip} |
| 37 | +Name & Description & Website & License$^a$ \\ |
| 38 | +\gmsh & Mesh Generator & \url{http://geuz.org/gmsh} & GPL\\ |
| 39 | +\matplotlib & Python 2D Plotting Library & \url{http://matplotlib.org} & \matplotlib \\ |
| 40 | +\numpy & Python Scientific Computing & \url{http://numpy.org} & BSD\\ |
| 41 | +\python & Scripting Language & \url{http://python.org} & PSF\\ |
| 42 | +\visit & Visualization Tool & \url{http://visit.llnl.gov} & BSD\\ |
| 43 | +\noalign{\smallskip}\hline\noalign{\smallskip} |
| 44 | +\end{tabular} |
| 45 | + |
| 46 | +\section{Running the Examples} |
| 47 | +\begin{minipage}{\textwidth} |
| 48 | +Here are some of the files in the package used for simulation. |
| 49 | + |
| 50 | +\begin{tabular}{ll} |
| 51 | +\texttt{bjt.geo} & Mesh description for \gmsh\\ |
| 52 | +\texttt{bjt.msh} & Resulting gmsh mesh\\ |
| 53 | +\texttt{initial\_guess.py} & Creates initial guess from Potential only simulation\\ |
| 54 | +\texttt{refinement.py} & Sets up E-field based refinements for creating background mesh\\ |
| 55 | +\texttt{netdoping.py} & Specifies analytical doping profile\\ |
| 56 | +\texttt{bjt\_refine.py} & Runs \devsim\ to create a background mesh\\ |
| 57 | +\texttt{bjt\_bgmesh.pos} & Background mesh generated by \devsim\ for refinement using \gmsh\\ |
| 58 | +\texttt{physics/} & subdirectory containing physics files used in simulation. |
| 59 | +\end{tabular} |
| 60 | +\end{minipage} |
| 61 | + |
| 62 | +\subsection{Meshing and Refinement} |
| 63 | + |
| 64 | +The file \texttt{bjt.geo} contains the initial mesh specification for the bjt structure. This file is run through \gmsh\ in order to create a triangular mesh for use in \devsim. The resulting mesh file is called \texttt{bjt.msh}. In order to create a mesh suitable for devsim, the \texttt{bjt\_refine.py} script is run to create a background mesh with element sizes appropriate for simulation. The background mesh is then used with the original mesh specification to create a refined mesh. This procedure is repeated until the mesh is sufficiently refined for use in \devsim. |
| 65 | + |
| 66 | +\begin{minipage}{\textwidth} |
| 67 | +The steps are: |
| 68 | +\begin{verbatim} |
| 69 | +gmsh -2 bjt.geo |
| 70 | +devsim bjt_refine.py |
| 71 | +gmsh -2 bjt.geo -bgm ./bjt_bgmesh.pos |
| 72 | +devsim bjt_refine.py |
| 73 | +gmsh -2 bjt.geo -bgm ./bjt_bgmesh.pos |
| 74 | +devsim bjt_refine.py |
| 75 | +gmsh -2 bjt.geo -bgm ./bjt_bgmesh.pos |
| 76 | +devsim bjt_refine.py |
| 77 | +gmsh -2 bjt.geo -bgm ./bjt_bgmesh.pos |
| 78 | +devsim bjt_refine.py |
| 79 | +\end{verbatim} |
| 80 | +\end{minipage} |
| 81 | +\\~\\ |
| 82 | + |
| 83 | +The resulting mesh from each \devsim\ run can be visualized by running Visit. |
| 84 | +\begin{verbatim} |
| 85 | +visit bjt_refine.tec |
| 86 | +\end{verbatim} |
| 87 | +\subsection{Simulation} |
| 88 | +The dc and ac sweeps used in the publication are listed in \texttt{simsbatch.txt}. These simulations can be run in sequence or in parallel. |
| 89 | + |
| 90 | +\subsubsection{$V_c$ sweep} |
| 91 | +For a given value of $V_b$, sweep $V_c$ from $0$ to $1.5$~V. |
| 92 | +\begin{verbatim} |
| 93 | +bjt_circuit2.py 0.1 &> data/vb2_0.1.out |
| 94 | +\end{verbatim} |
| 95 | + |
| 96 | +\subsubsection{$V_b$ sweep} |
| 97 | +For a given value of $V_c$, sweep $V_b$ from $0$ to $1.0$~V. |
| 98 | +\begin{verbatim} |
| 99 | +devsim bjt_circuit3.py 0.0 &> data/vc_0.0.out |
| 100 | +\end{verbatim} |
| 101 | + |
| 102 | +\subsubsection{$V_e$ sweep} |
| 103 | +For a given value of $V_c$, sweep $V_e$ from $0$ to $-1.0$~V. |
| 104 | +\begin{verbatim} |
| 105 | +devsim bjt_circuit4.py 0.0 &> data/ve_0.0.out |
| 106 | +\end{verbatim} |
| 107 | + |
| 108 | +\subsubsection{Small-signal ac sweep} |
| 109 | +For a given value of $V_c$, sweep $V_e$ from $0$ to $-1.0$~V. Do a small signal frequency sweep from fmin to fmax with given points per decade. |
| 110 | +\begin{verbatim} |
| 111 | +devsim bjt_circuit5.py 0.0 1e3 1e11 3 &> data/ssac_0.0.out |
| 112 | +\end{verbatim} |
| 113 | + |
| 114 | +\subsection{Visualization} |
| 115 | +The \texttt{data/} directory contains scripts used to generate the plots used for publication. A script was written to collect the data from the simulations to create plots using \texttt{matplotlib}. This script is in the \texttt{data/} directory and is called \texttt{prep.sh}. |
| 116 | + |
| 117 | +\begin{tabular}{ll} |
| 118 | +\texttt{ft.py} & Small-signal ft simulation\\ |
| 119 | +\texttt{gummel.py} & Ic, Ib versus Vbe.\\ |
| 120 | +\texttt{ic\_vec.py} & Ic versus Vce.\\ |
| 121 | +\end{tabular} |
| 122 | +\end{document} |
| 123 | + |
0 commit comments