tag:blogger.com,1999:blog-15553585222391761702024-03-19T03:54:29.209+01:00TCAD and Device SimulationThis blog is a guide for TCAD, semiconductor device simulation and process simulations. It describes how to generate 2D and 3D meshes (or grids) for electronic devices, how to choose the appropriate models, how to postprocess and visualize simulations. Simulation of MOSFET, BJT, HBT, HEMT, MESFET, JFET, IGBT transistors, diodes and other devices will be covered.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-1555358522239176170.post-88948204752190881972009-06-04T00:12:00.008+02:002009-06-04T00:32:55.483+02:00Creating a simple mesh - PN diodeThis post show how to create a very simple mesh for a PN diode, realized with a p Gaussian diffusion on an n substrate. In this example we are more concerned with illustrating the need for a correct mesh, rather than presenting a realistic simulation.<br /><br />The mesh file is largely based on the example/PN_diode mesh from GSS.<br /><br /><span style="font-weight: bold;">diode_mesh.inp</span><br /><br /><span style="font-family:courier new;"></span>MESH Type=GSS ModelFile=mb_pn.cgns Triangle="pzA"<br />XMESH WIDTH=3.0 X.MIN=-3 X.MAX=0 N.SPACES=10<br />XMESH WIDTH=3.0 X.MIN=0 X.MAX=3 N.SPACES=60<br /><br />YMESH DEPTH=3.0 N.SPACES=30<br /><br /># Region and electrode statements<br />REGION Label=Si Material=Si<br />SEGMENT Label=Anode Location=TOP X.MIN=-1 X.MAX=1.0<br />SEGMENT Label=Cathode Location=BOTTOM<br />SEGMENT Label=Probe Direction=Vertical X=0.5 Y.top=-0.1 Y.bottom=-2<br /><br /># Specify impurity profiles<br />PROFILE Type=Uniform Ion=Donor N.PEAK=1E15 X.MIN=-3 X.MAX=3.0 \<br /> Y.TOP=0.0 Y.BOTTOM=-3.0<br />PROFILE Type=Gauss Ion=Acceptor N.PEAK=1E19 X.MIN=-1 X.MAX=1.0 \<br /> Y.TOP=0.0 Y.BOTTOM=0.0 X.CHAR=0.3 Y.JUNCTION=-0.5<br />set Carrier = pn # specify carrier type<br />set LatticeTemp = 3e2 # specify initial temperature of device at 300K.<br />set DopingScale = 1e18<br /><br />boundary Type = OhmicContact ID=Anode Res=0 Cap=0 Ind=0<br />boundary Type = OhmicContact ID=Cathode Res=0 Cap=0 Ind=0<br /><br />EXPORT CoreFile=mb_pn_coarse.cgns AscFile=mb_pn_coarse.tif VTKFile=mb_pn_coarse.vtk<br /><br />REFINE Variable=Doping Measure=SignedLog Dispersion=3<br />METHOD Type=DDML1 Scheme=Newton NS=LineSearch LS=GMRES SOLVE Type=EQUILIBRIUM #compute equilibrium state<br />REFINE Variable=Potential Measure=Linear Dispersion=0.1<br />SOLVE Type=EQUILIBRIUM<br />EXPORT CoreFile=mb_pn.cgns AscFile=mb_pn.tif VTKFile=mb_pn.vtk<br />END<br /><br />This is how the mb_pn_coarse.vtk mesh looks like. The difference in mesh refinement in the left and right side is intentional to show the effects of improper meshing.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYGp7ZwppWhyphenhyphen2RzbQBSnrkvOZwg1-oqqhWNHF3m3J2h0eeGw287kLQeLLRiyj4eYEz8pSgexzz6T6oIWAnApf5Coe12ZIy9z5sRjWrfqat8rq4RyA76AXaoMV0H9eKJNiTIbpnogwRXvo/s1600-h/Diode_coarse_logP.png"><img style="cursor: pointer; width: 320px; height: 146px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYGp7ZwppWhyphenhyphen2RzbQBSnrkvOZwg1-oqqhWNHF3m3J2h0eeGw287kLQeLLRiyj4eYEz8pSgexzz6T6oIWAnApf5Coe12ZIy9z5sRjWrfqat8rq4RyA76AXaoMV0H9eKJNiTIbpnogwRXvo/s320/Diode_coarse_logP.png" alt="" id="BLOGGER_PHOTO_ID_5343230006156094914" border="0" /></a><br /><br />This is how the mb_pn.vtk mesh looks like. Please note how the junction has been refined on the left and right side.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZCV4y7q1NgYYzhedAmZV7dlI5o2xDpgY_bZ_Xbl9Otm6BlkIEQ_wLmS_FdoPU9435ZVcfjz34jjusp7e-oItKpAPuNLFNUsJ3kZ-yYc9GqRu6Ds59rE2qu4TkL7rD-kahvCMNi0kQFJI/s1600-h/Diode_fine_logP.png"><img style="cursor:pointer; cursor:hand;width: 320px; height: 129px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZCV4y7q1NgYYzhedAmZV7dlI5o2xDpgY_bZ_Xbl9Otm6BlkIEQ_wLmS_FdoPU9435ZVcfjz34jjusp7e-oItKpAPuNLFNUsJ3kZ-yYc9GqRu6Ds59rE2qu4TkL7rD-kahvCMNi0kQFJI/s320/Diode_fine_logP.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5343230339402710642" /></a><br /><br />Then we can take both meshes and turn on the diode, bringing the potential of the p contact up to 0.8 V. The computed currents are 3.889297e-02 mA for the coarse mesh and 3.876786e-02 for the fine mesh.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.com3tag:blogger.com,1999:blog-1555358522239176170.post-22379752345696953502009-06-01T14:29:00.004+02:002009-06-01T14:40:49.576+02:00Installation - Part 2<span style="font-weight: bold;">Step 2: Compiling everything:</span><br /><br /><span style="font-style: italic;">2.a) Petsc</span><br />type these in the terminal. It seems that the new gcc compiler has some issue with the gss code.<br /><br />export CC=/usr/bin/gcc-4.2<br />export CXX=/usr/bin/g++-4.2<br /><br /><br />gunzip petsc<br />tar -xvf petsc<br />cd petsc<br />export PETSC_DIR=`pwd`<br /><br />./config/configure.py --with-cc=gcc --download-mpich=1 --with-clanguage=cxx --with-mpi=0 --download-c-blas-lapack=1 --with-precision=longdouble --with-shared=0<br /><br /><br /><span style="font-style: italic;">2.b) Cgnslib</span><br />bunzip2 cgnslib<br />tar -xvf cgnslib<br />cd cgsnslib<br />./configure<br />make<br />sudo make install<br /><br /><span style="font-style: italic;">2.c) GSS</span><br />gunzip the file<br />tar -xvf the file<br />cd GSS_dev<br />export GSS_DIR=`pwd`<br />./configure<br />make<br />sudo make install<br /><br />It takes a while but eventually you should have a working TCAD simulator.<br />Please let me know if you encounter any problem.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.com5tag:blogger.com,1999:blog-1555358522239176170.post-51762775720965112482009-06-01T13:59:00.004+02:002009-06-01T14:40:17.501+02:00Installation - Part 1<span style="font-weight: bold;">Step 1</span>: <span style="font-weight: bold;">Download all the files</span><br /><br />Download all the necessary files in the same compile directory:<br />1) go to the <a href="http://sourceforge.net/project/showfiles.php?group_id=145313&package_id=159842">GSS download page</a> and get the <a href="http://sourceforge.net/project/downloading.php?group_id=145313&filename=gss-tcad-0.46-p11.tar.gz&a=80570918">gss</a> and the <a href="http://sourceforge.net/project/downloading.php?group_id=145313&filename=cogenda-ngspice-gss-0.46-p11.tar.gz&a=33424511">ngspice</a> archives.<br /> The ones I used are named: <a id="showfiles_download_file_pkg0_1rel0_2" class="sfx_qalogger_element sfx_qalogger_clickable" href="http://sourceforge.net/project/downloading.php?group_id=145313&filename=gss-tcad-0.46-p11.tar.gz&a=64851439" onclick="init_download('http://downloads.sourceforge.net/gss-tcad/gss-tcad-0.46-p11.tar.gz');">gss-tcad-0.46-p11.tar.gz</a> and <a id="showfiles_download_file_pkg0_1rel0_1" class="sfx_qalogger_element sfx_qalogger_clickable" href="http://sourceforge.net/project/downloading.php?group_id=145313&filename=cogenda-ngspice-gss-0.46-p11.tar.gz&a=24401071" onclick="init_download('http://downloads.sourceforge.net/gss-tcad/cogenda-ngspice-gss-0.46-p11.tar.gz');">cogenda-ngspice-gss-0.46-p11.tar.gz</a> <br /><br />2) Download the PETSC library: petsc-2.3.3. I used <a href="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-2.3.1-p8.tar.gz">version 8</a> for better compatibility. Download the <a href="http://gss-tcad.sourceforge.net/ls.c">ls.c</a> patch from the gss website.<br /><br />3) Download <a href="http://www.oldports.org/data/science/cgnslib/20070909-cgnslib-2.5.1.tar.bz2">cgnslib-2.5.1</a><br /><br />4) Install the following software with synaptic. Open a terminal and paste<br /><br />sudo apt-get bison libtiff4 libtiff4-dev flex-old gcc gfortran libblas3gf liblapack3gf tk tk-dev tcl-dev vtk-tcl libadolc0 make makedev<br /><br />After you enter the password the package should install automatically.<br />If I forgot a package please tell me.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.com3tag:blogger.com,1999:blog-1555358522239176170.post-85486550238647988202009-06-01T13:40:00.005+02:002009-06-01T14:39:56.869+02:00Where do I start?Good question. A good general resource is <a href="http://www.tcadcentral.com/index.php/Main_Page">TCAD Central</a> where you can find an exhaustive collection of news, conferences, and software.<br />But ultimately, if you want to learn about TCAD you need to run some simulations yourself. I recommend the <a href="http://gss-tcad.sourceforge.net/index.htm">GSS</a> simulator by Gong Ding. It is powerful, free, open source, and its synthax is based on Medici, a popular TCAD software.<br />Installation was not trivial, so I am going to provide a step by step guide soon.<br /><br /><span style="font-weight: bold;">Step 0:</span> <span style="font-weight: bold;">Install linux</span><br />Install linux. Honestly, it's worth it. Major TCAD software runs on linux anyways.<br />Plus there are lots of open source post-processing tools that help to interpret and analyze simulations. And installing linux is much less painful these days with stuff like Wubi and such...<br />If you want advice, I personally use Ubuntu 8 and it works pretty well.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.com2tag:blogger.com,1999:blog-1555358522239176170.post-87874065035761899352009-06-01T13:28:00.001+02:002009-06-01T13:58:14.656+02:00What is TCAD, anyway?TCAD stands for Technology Computer Aided Design, which is not that self-explanatory. What it really refers to is computer programs able to simulate either the workings of a semiconductor device (device simulation) or the fabrication process of a semiconductor device (process simulation).<br />Often the result of a process simulation, which is called a "mesh" or "grid" is fed into a device simulator to evaluate the performance or the behavior of the device that has been "virtually fabricated".<br />Simulations are very inexpensive and fast compared to actual prototype fabrication. They are also an excellent tool to understand semiconductor physics.MarcoBhttp://www.blogger.com/profile/11248798127796582992noreply@blogger.com2