Quick Guide To Using Silvaco SUPREM.: Getting Started
Quick Guide To Using Silvaco SUPREM.: Getting Started
Quick Guide To Using Silvaco SUPREM.: Getting Started
Getting started
The Silvaco software runs in Windows on the NSF lab computer.
1. If the Mac Mini is operating in Mac mode, re-start the computer and hold down the
option key until the screen shows the two boot options — Mac or Windows.
2. Double-click on the Windows icon and wait for Windows to boot up.
3. Log in as the ee432 user.
4. Double-click the “S.EDA Tools” short-cut icon to open a window with a list of more
short-cuts.
5. Double-click the “Deckbuild” short-cut icon to launch the program.
1
Basics of running SUPREM via Deckbuild
The input to a SUPREM simulation is a simple text file, which consists of a series of (sometimes
arcane) commands. Generally, each command line corresponds to one step in the fabrication
process. You will have to type most of the commands directly into the file. The simple examples
below will show you the basic syntax of commands that will be useful for EE 432/532 work.
There are also many example input files available – C:/sedatools/examples/ – that can be
examined to see command syntax. Of course, there is always the manual, too. There is some
flexibility in the syntax and parameters included in the various commands. In the examples that
follow, you may see different instances of the same commands that look somewhat different.
As with any program, explanatory comments are helpful. In the input file, comment lines are
denoted with a #-symbol. (They chose this before the days of Twitter.)
The Deckbuild window has two parts. Commands are entered in the upper window. The lower
window displays comments and results as the program runs. The simulation flow is controlled
using the buttons just above the upper window.
Once the input file is complete, the simulation can be started. This can be done in a line-by-line
mode or the whole file can be run in one shot. In either case, copious amounts of (sometimes
mysterious) output will appear in the lower window. If you have requested specific output
information, it will appear within this output, so you will need to watch for that. Also, you can
plot the results using an auxiliary program called TonyPlot.
Grid
SUPREM solves the diffusion and oxidation equations using finite element techniques, so it is
necessary to define a grid of points within the region of interest. The oxidation and diffusion
equations will be solved at each of those points. As is always the case with finite-element
computations, there is a trade-off between grid density and computation speed. Defining a very
dense array of grid points will allow you to generate smooth curves, but the computation will
take correspondingly longer. Defining a relatively sparse grid will shorten up computation time
but may lead to “ragged” plots or the possibility of missing interesting things that are happening
on length scales smaller than the spacing between grid points.
2
line x loc=0.00 spacing=0.10
line x loc=5.00 spacing=0.10
defines a square space ranging 0 ≤ x ≤ 5 µm and 0 ≤ y ≤ 5 µm. The commands specify grid
spacings of 0.1 in the x-direction and 0.05 µm in the y-direction at the corners. SUPREM will
use these basic definitions to fill entire the computational space with grid points, with x-spacing
of 0.1 µm and y-spacing of 0.05 µm.
The grid spacing does not have to be uniform. You can define a dense grid in regions where
doping profiles are changing rapidly and a sparser grid in the regions where changes are slower.
By including more grid commands, you can have SUPREM define regions of denser and sparser
grids points. For example, the commands
will lead to a denser grid spacing of 0.05 µm in the region 0 ≤ y < 2 µm, and then a sparser
spacing between 2 µm and 5 µm. Note in the example that there will be only two grid points in
the x-direction, x = 0 and x = 1.0 µm. This is a way of defining a “quasi-1D” problem. You can
use this trick if you are interested only in what happens in the y-direction.
SUPREM has it’s own method for determining grid points between the defined points, so the grid
may differ from what you might intuitively expect. (See the software manual, if you really want
to know the details.) Usually, this is not a big issue.
Substrate initialization
The next step is a single line to define the starting substrate. You can specify many things about
the silicon wafer, but the two most important are orientation and doping. The doping can be
specified by concentration or by resistivity. Examples:
3
Fabrication commands
Following the substrate initialization, the fabrication command lines are entered. Each command
line describes a specific step. Note that all high temperature steps — including oxidations — are
called “diffusions”. The command line includes any parameters that are needed specify the
particular fab step. The commands should be entered in the correct order (for obvious reasons),
and so can be made to look almost like a process traveler.
• # Constant-source phosphorus diffusion, 1000°C for 30 minutes, surface conc. = 1021 cm–3
diffuse time=30 temp=1000 c.phosphor=1.0e21
(The c.phosphor parameter sets the surface concentration of the constant-source diffusion. In
this case, c.phosphor is chosen to be equal to the solid-solubility limit of phosphorus in
silicon at 1000°C.)
There are also commands for etching, depositing layers of many different types (including
oxides, nitrides, and polysilicon) and growing silicon epitaxial layers.
The full capability of SUPREM becomes evident in setting up the process steps. Things that we
could only approximate or discuss qualitatively (like temperature ramps, multiple oxidation/
diffusion steps, lateral diffusions, and segregation effects) are handled with ease by SUPREM
Plus, you have control over all kinds of parameters relating to the process steps. We won’t be
looking at these in this short tutorial (We’ll stick with default values), but all parameters are
described in the manual.
Extraction commands
Various quantities can be determined from the simulation results. Of typical interest are things
like oxide thicknesses, junction depths, sheet resistances, and MOS threshold voltages. These are
defined by extraction commands and the results are displayed in the lower Deckbuild window or
printed into the results file. From the menu, the extraction commands can be generated using
Commands -> Insert Extract -> “whatever” or you can type them directly. For most of the
extraction commands, you must specify an x-value within the grid where the particular value will
be extracted and you must give the variable a unique name. Also, since there can be more than
4
one junction or sheet resistance, an “occurrence number” might be included. (The counting
starts at the top surface.)
Some examples:
Plotting
SUPREM works with an associated plotting program called Tonyplot. You can insert a tonyplot
command within a file to make a plot at any time. Or you run the simulation (line-by-line or all
at once) and then invoke Tonyplot manually (Commands -> Plot Current Structure). Note that in
invoking Tonyplot manually, you must first click in the file window to de-select the last executed
line. (If you don’t, Tonyplot tries to use that entire line as a file name.) Once you have the plot,
you can print it or save it as a separate graphics file.
One neat feature about SUPREM is that you can re-start a simulation in the middle of the file.
Once each line is run, a temporary history file recording everything up to that point is saved. So
to re-run just the last portion of a file, position the cursor just before the first line of the section
that you would like to run again. Click the “line” button in the lower part of the Deckbuild
window (thus re-setting to the proper history file), and then “next” to execute one line or “run” to
execute the remainder of the file. Note that if you have a “quit” statement at the end of the input
file, you won’t be able to re-start in the middle once the quit statement has been executed.
5
Diffusion example
Here is a “quasi-1D” simulation file for p-well boron diffusion used in the CyMOS process.
go Athena
# Set up the 1-D grid. (There are only 2 points in the x-direction.)
line x loc=0.00 spac=1.0
line x loc=1.00 spac=1.0
# The 5 drive is done in 2 steps: The first 15 minutes to grow on oxide, and
# the second in nitrogen
diffus time=15 temp=1150 weto2
diffus time=285 temp=1150 nitro
# Oxide thickness
extract name="tox" thickness oxide" mat.occno=1 x.val=0.5
# Junction depth
extract name="xj" xj material="Silicon" mat.occno=1 x.val=0.5 junc.occno=1
# Sheet resistance
extract name="Rs" sheet.res material="Silicon" mat.occno=1 x.val=0.5 \
region.occno=1
quit
6
Example 1 — results
The results of the extraction commands (plucked out of the info displayed in the lower window
during the run). A plot of doping concentration is shown below.
Note how the boron surface concentration drops down due to the segregation at the oxide/silicon
interface. Using the same basic parameters in the spreadsheet calculators gave: N(0) = 2.4 x 1017
cm–3, xj = 4.0 µm, tox = 0.35 µm.
7
Example 2 – a simple NMOS structure
go athena
quit
8
And the (nearly useless) plot.