This documentation was provided by Dr. Goodwin Chin. It has not been checked for accuracy. It is know to be out of date with respect to the field and materials in SUPREM-IV.GS.
All lines begin with a one character code. After this character
is parsed, subsequent characters are parsed based on the
character code. The currently used single letter codes are as
follows:
v - Version number
(e.g. v SUPREM-IV 9130)
D - dimensionality (only for versions 9130 or greater)
valid values are 1 and 2
(e.g. D 2)
c - coordinate (coordinates start counting from 1)
the format of this line is as follows:
c coordinate_number x.value [y.value] [z.value] [spacing]
note that the units are microns
y.value and z.value are only valid for D=2, D=3,
respectively
the spacing value was parsed in versions A.9030 and older
but never used
(e.g. c 1 1.0 0.5 0)
In the SUPREM-IV coordinate system, into the silicon is
positive (y-axis). The x-axis values are
numbered from left to right.
e - edge (edges start counting from 1)
while not used by SUPREM-IV (it generates it's own edge
tables from scratch) it was included as output
for versions BEFORE 9130.
the format of this line is as follows:
e edge_number coordinate.number coordinate.number boundary_code
the boundary_code value was never used
(e.g. e 1 2 3 0)
r - region (regions start counting from 1)
multiple regions of the same material can exist in SUPREM-IV
so be careful
the format of this line is as folows:
r region_number material_number
material_number is a special integer code used in SUPREM-IV.
While this can be changed easily by modification of
include/material.h, the material codes have remained fairly
stable through the releases with only possible additions
in newer versions for new materials. Here is the mapping
from releases (A.8912, A.9030, and 9130).
Material Integer Code
-------- ------------
Gas 0
Silicon Dioxide 1
Nitride 2
Si 3
Polysilicon 4
Oxinitride 5
Al 6
Photoresist 7
b - boundary (boundary)
this code traces the boundary for each region. after each
region specification (r), the next lines comprise the
boundary of the region, until the presence of the next non-b
command. The boundary is traced in a clockwise
fashion. As with the e code, the b code has been elimiated
and is only included for versions BEFORE 9130.
the format of this line is as follows:
b edge_number
BEWARE. there is nothing that states that the edge are
directed properly. Edge cannot be directed
properly since for structures such as the interface
for the gate oxide in a MOS device traversal of the
silicon and oxide polygons would require that the
edges point in different directions.
t - elements (triangles) (triangles start counting from 1)
this one is complicated so be careful. SUPREM-IV has a lot
of internal smarts and rebuilds neighbor information
from the nodal description and does not rely on
the neighbor information dumped out. The neighbor
information is usually correct though.
the format of this line is as follows:
t triangle_number region_number \ (no new line)
coordinate_number coordinate_number coordinate_number \
neighbor_triangle_number neighbor_triangle_number \
neighbor_triangle_number father_triangle \
first_offspring_triangle
region_number is the same as those used in the r line.
coordinate_number are the same as those used in the c lines.
the concept of neighbors is somewhat more difficult to explain.
given a triangle with vertices a, b, c, edge a is the
edge OPPOSITE the vertex (i.e. edge a containes vertices
b and c). see below.
a
x x
x x
edge c x x edge b
x x
x x
bxxxxxxxxxxxc
edge a
now since edges aren't used in SUPREM-IV, the number of the
neighbor trangle containg the edge in question is given
in leau of the edge number. these triangle numbers
correspond to the ones now used in the t-list.
of course the problem is what do we do when the
triangle in question does not exist (e.g. at the
surface and sides of a wafer). In this case a
dummy code is given describing the boundary condition
used. The codes currently supported by SURPEM-IV
are
-1024 : reflecting boundary (von Neumann)
-1022 : exposed surface (Dirichlet)
-1023 : backside (version 9130 only)
the concept of father and offspring triangles are only
supported in version 9130. In most cases the
value is -1 to denote the absence of parents
and children. the intent is to provide a hook
for refinement and unrefinement of triangles as
done in PISCES.
s - solution information
the purpose of this line is to define the solution varialbes
available from the simulation. the format of the
line is as follows:
s number_of_solutions solution_1 solution_2 .... solution_number_of_solutions
the integer codes for solutions can be found in include/impurity.h.
These have slightly changed over time.
Impurity Integer Code Comments
------- ------------ --------
Vacancy 0
Interstitial 1
Arsenic 2
Phosphorus 3
Antimony 4
Boron 5
Electrons 6
Holes 7
X component of velocity 8 used for oxidation
Y component of velocity 9 used for oxidation
dry O2 10
wet O2 11
trap 12
Gold 13
Potential 14
x component of stress 15
y component of stress 16
mixed component of stress 17
Cesium 18
change in interface area 19
Electrically active Arsenic 20 version >= relA.9030
Electrically active Phosphorus 21 version >= relA.9030
Electrically active Antimony 22 version >= relA.9030
Electrically active Boron 23 version >= relA.9030
Polysilicon Grain Size 24 version >= rel.9130
Gallium 25 version >= rel.9130
n - node information
remember that in SUPREM-IV you can have multiple nodes
for each point in space, one for each material.
the format is as follows:
n point_number-1 material_code value_1 value_2 ... value_number_of_solutions
It is IMPORTANT that you remember the "off by 1" for the point
number. This was just an efficiency hack since C arrays start
counting from 0 and by this time, the point arrays have been
created. One might argue that the same thing should have been
done for the rest of the arrays. But it's a historical (HYSTERICAL)
problem that keeps SUPREM-IV developers employed.
The material codes have been already shown under the r command.
Note that regions were not used here so that for the
case where you have two regions of the same material
intersections (e.g. the oxides in the TCAD Framework
demo), only one set of solutions values are stored
for the oxide, not 2.
M - model information
this line can be pretty much ignored but I will give the
syntax anyways
the syntax is:
M substrate_orientation last_temperature
codes for substrate_orientation are as follows (include/material.h)
Orientation Code
----------- ----
<100> 0
<110> 1
<111> 2
last_temperature is in the units of Kelvin