Quick Guide To Using Silvaco SUPREM.: Getting Started

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Quick guide to using Silvaco SUPREM.

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.

Figure 1. The Deckbuild window.

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.

A basic input files includes four parts:


1. A definition of the grid,
2. an initiation statement to define the wafer orientation and doping,
3. the commands for the actual processing steps to be simulated, and
4. commands for various output variables. (These are optional.)


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.

SUPREM is inherently a two-dimensional solver, and so you must define a two-dimensional


grid. The x-dimension is parallel to the wafer surface and the y-dimension is perpendicular (i.e.
into the wafer). The grid definition commands specify the grid at particular points. SUPREM
then fills in more point based on the specific points that you’ve provided. For example, the set of
grid commands:

2
line x loc=0.00 spacing=0.10
line x loc=5.00 spacing=0.10

line y loc=0.00 spacing=0.05


line y loc=5.00 spacing=0.05

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

line x loc=0.00 spacing=1.00


line x loc=1.00 spacing=1.00

line y loc=0.00 spacing=0.05


line y loc=2.00 spacing=0.05
line y loc=5.00 spacing=0.2

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:

# (100) silicon doped with boron at 1015 cm–3


init silicon c.boron=1.0e15 orientation=100

# (100) silicon doped with arsenic and having a resistivity of 5 Ω·cm.


init silicon arsenic resistivity=5 orientation=100

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.

Examples of command lines

• # Dry oxidation at 1000°C for 60 minutes



diffus time=60 temp=1000 dryo2


• # Wet oxidation at 1100°C for 30 minutes



diffus time=30 temp=1100 weto2


• # 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.)


• # Temperature ramp from 800°C to 1100°C in 20 minutes with nitrogen ambient



diffus time=20 temp=800 t.final=1100 nitro


• # Boron implant at 100 keV and dose of 1014 cm–3



implant boron dose=1.0e14 energy=100

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:

• # Find the first junction depth.



extract name="first junction" xj material="Silicon" x.val=0.5
\ junc.occno=1


Note the notation. “xj” is the command for finding junction depth, although the depth is in
the y-direction in the simulation grid. Also, note the “\” for line continuation. 


• # Find the depth of the second junction.



extract name="first junction" xj material="Silicon" x.val=0.5
\ junc.occno=2


• #Find the oxide thickness



extract name="tox" thickness oxide x.val=0.5


• #Find the sheet resistance of the top-most doped layer.



extract name="Rs" sheet.res material="Silicon" x.val=0.5 \
region.occno=1

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.

Odds and ends


Of course, input files can be saved for future use, and saved files can be re-opened. Save and
open commands are under the file menu on the Deckbuild window.

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

line y loc=0.00 spac=0.02


line y loc=3.00 spac=0.02
line y loc=6.00 spac=0.1

# initialize the substrate


init silicon phosphor resistivity=5 orientation=100

# The deposition step is modeled as a single constant-source diffusion


# We assume the SSL of boron in silicon at that temp is 6e19 cm^-3.
diffus time=25 temp=850 nitro c.boron=6.0e19

# The deposition is followed by the low-temperature oxidation


diffus time=30 temp=800 weto2

#strip off the oxide


etch oxide all

# Ramp the temperature to 1150 for the drive


diffus time=20 temp=800 t.final=1150 nitro

# 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

# Finish with the ramp-down


diffus time=60 temp=1150 t.final=800 nitro

# Extract some of the useful info


# Surface concentration
extract name="surface conc" surf.conc impurity="Net Doping" \
material="Silicon" mat.occno=1 x.val=0.5

# 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.

surface conc=6.77708e+16 atoms/cm3 X.val=0.5


tox=3877.27 angstroms (0.387727 um) X.val=0.5
xj=4.44304 um from top of first Silicon layer X.val=0.5
Rs=340.688 ohm/square X.val=0.5

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

# define a simple square grid

line x loc=0.00 spac=0.1


line x loc=1.00 spac=0.1

line y loc=0.00 spac=0.02


line y loc=3.00 spac=0.02

# Start with a boron-doped silicon wafer NA = 10^17.


init silicon c.boron=1.0e17 orientation=100

# Grow a gate oxide - hopefully around 25 nm


diffus time=20 temp=1000 dryo2

# Extract the oxide thickness


extract name="tox" thickness oxide mat.occno=1 x.val=0.5

# Deposit an aluminum gate - 0.25 micron thickness


deposit aluminum thick=0.25

#Extract the expected threshold voltage


extract name="NMOS VT" 1dvt ntype x.val=0.5

# Make plot, although it won’t be very interesting


tonyplot

quit

Results, from the displayed output:

tox=268.857 angstroms (0.0268857 um) X.val=0.5

NMOS VT=1.00459 V X.val=0.5

8
And the (nearly useless) plot.

You might also like