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