METHOD

Select numerical methods and models for diffusion and oxidation.

SYNOPSIS

method
[ ( vacancies | interstitial | arsenic | phosphorus | antimony | boron | gallium | oxidant | velocity | traps | gold | psi | cesium | beryllium | magnesium | selenium | isilicon | tin | germanium | zinc | carbon | generic ) ]
[ rel.error=n ] [ abs.error=n ]
[ init.time=n ] [ ( trbdf | formula ) ]
[ min.fill ] [ min.freq=n ]
[ ( gauss | cg ) ] [ back=n ] [ blk.itlim=n ]
[ ( time | error | newton ) ] [ ( diag | full.fac ) ]
[ ( fermi | two.dim | steady | full.cpl ) ]
[ ( erfc | erfg | erf1 | erf2 | vertical | compress | viscous ) ]
[ grid.oxide=n ] [ skip.sil ] [ oxide.gdt=n ] [ redo.oxide=n ]
[ oxide.early=n ] [ oxide.late=n ] [ oxide.rel=n ]
[ gloop.emin=n ] [ gloop.emax=n ] [ gloop.imin=n ]

DESCRIPTION

This statement sets the flags for selection of algorithm for various mathematical solutions. The statement also allows the user to select the complexity desired for the diffusion and oxidation models. Appropriate defaults for the numerical parameters are included in the model start up file so users should only have to specify the type of model desired for the diffusion and oxidation. The numerical methods used in SUPREM-IV for solution of the diffusion equations are described in more detail in Law and Dutton [1].

vacancies, interstitial, arsenic, phosphorus, antimony, boron, gallium, oxidant, velocity, traps, gold, psi, beryllium, magnesium, selenium, isilicon, tin, germanium, zinc, carbon, generic
These options allow the user to specify a single impurity. The error bound parameters are specific for each impurity. If error bounds are listed, an impurity must also be selected.

rel.err
This parameter indicates the precision with which the impurity block must be solved. In general, the error will be less that half of the indicated error since the program is conservative in its error estimates. The defaults are 0.01 for all impurities except the potential which is solved to 0.001.

abs.err
This parameter indicates the size of the absolute value of the error. For the dopants, the absolute error defaults to 1.0E9. For defects, the absolute error defaults to 1.0E5. For the potential, the error defaults to 1.0E-6.

init.time
This parameter specifies the size of the initial time step. It defaults to 0.1 seconds. A routine to estimate the initial time step is being worked on.

trbdf, formula
These parameters specify the method of time integration to be used. The trbdf option indicates a combination trapezoidal rule/backward difference should be used. The error is estimated using Milne's device. The formula method allows the user to specify the time step directly as a function of time ( t ), previous time step ( dt ) and grid time ( gdt ). This option is primarily for testing. The trbdf method is the default. The time step methods have been taken from literature, see Yeager and Dutton [2] and Bank et al. [3].

min.fill, min.freq
This option allows the user to specify a minimum fill. It defaults to true. This is a highly recommended option since it can reduce the matrix sizes by a factor of two or more. The size of the matrix is proportional to speed. min.freq is a parameter which controls the frequency of min fill reordering. It is only partially implemented and will have no effect on the calculation.

gauss, cg
These parameters allow the user to specify the type of iteration performed on the linear system as a whole. gauss specifies that this iteration should be Gauss-Seidel, cg specifies that a conjugate residual should be used. The default is cg. The gauss option is considerably slower, it should be deleted in the future. The CG algorithm is described by Elman [4].

back
This integer parameter specifies the number of back vectors that can be used in the cg outer iteration. The default is 3, and the maximum that can be used is 5. The higher the number, the better the convergence and the more memory used.

blk.itlim
The maximum number of block iterations that can be taken. The block iteration will finish at this point independent of convergence.

time, error, newton
These parameters specify the frequency with which the matrix should be re-factored. The time parameter specifies that the matrix should be re-factored twice per time step. This option takes advantage of the similarity in the matrix across a time integration. The error option indicates the matrix should be re-factored whenever the error in that block is decreasing. The newton option will force the re-factorization at every newton step. The default is time.

diag, full.fac
These parameters specify the amount of fill to be included in the factorization of the matrix. full.fac indicates that the entire amount of fill is to be computed. The diag option indicates that the only the diagonal blocks should be factored in the matrix. The diag option is the default, although under certain conditions (one dimensional) full.fac may perform better.

fermi, two.dim, steady, full.cpl
These parameters specify the type of defect model to be used. The fermi option indicates that the defects are assumed to be a function of the fermi level only. The two.dim option indicates that a full time dependent transient simulation should be performed. The steady option indicates that the defects can be assumed to be in steady state. The full.cpl option indicates that the full coupling between defects and dopants should be included. The default is fermi.

erfc, erfg, erf1, erf2, vertical, compress, viscous
These are oxide model parameters. The erfc option indicates that a simple error function approximation to a bird's beak shape should be used. The erf1 and erf2 models are analytic approximations to the bird's beak from the literature (see the oxide statement). The erfg model chooses whichever of erf1 or erf2 is most appropriate. The vertical model indicates that the oxidant should be solved for and that the growth is entirely vertical. The compress model treats the oxide as a compressible liquid. The viscous model treats the oxide as an incompressible viscous liquid. Real oxide is believed to be incompressible, but the compressible model is a lot faster. It's an accuracy vs. speed trade-off.

grid.oxide
This parameter is the desired thickness of grid layers to be added to the growing oxide. The value is specified in microns. It represents the desired thickness of grid layers to be added to the growing oxide. It has a side effect on time steps (see oxide.gdt).

skip.sil
This boolean parameter indicates whether or not to compute stress in the silicon. The default is false. The calculation can only performed when the viscous oxide model is used. The silicon substrate is treated as an elastic solid subject to the tractions generated by the oxide flow. It should not be turned on indiscriminately, since the silicon grid is generally much larger than the oxide grid, and the stress calculation correspondingly more expensive.

oxide.gdt
The time step may be limited by oxidation as well as diffusion; the oxide limit is specified as a fraction (oxide.gdt) of the time required to oxidize the thickness of one grid layer (grid.oxide).

redo.oxide
To save time, the oxide flow field need not be computed every time the diffusion equation for impurities is solved. The parameter redo.oxide specifies the percentage of the time required to oxidize the thickness of one grid layer which should elapse before resolving the flow field. Usually redo.oxide is much less than oxide.gdt, which is an upper bound on how long the solution should wait. It is mainly intended to exclude solving oxidation at each and every one of the first few millisecond time steps when defects are being tracked.

oxide.early, oxide.late, oxide.rel
These parameters are not normally modified by users. They relate to internal numerical mechanisms, and are described only for completeness. A node whose spacing decreases proportionally by more than oxide.late is marked for removal. If there any nodes being removed, then in addition all nodes greater than oxide.early are removed. The default values are 0.5 for oxide.early and 0.9 for oxide.late. For earlier node removal (less obtuse triangles), try oxide.late = 0.3 and oxide.early = 0.1. It makes no sense, but does no harm, to have oxide.early greater than oxide.late. The oxide.rel parameter is the solution tolerance in the nonlinear viscous model. The default is 1.0E-6 (that is, a 1.0E-4 percentage error in the velocities). It can be increased for a faster solution, but a value greater than about 0.001 will probably give meaningless results.

gloop.emin, gloop.emax, gloop.imin
This group of parameters controls loop detection during grid manipulation. The loop detection checks for intrusions and extrusions in the boundary. The intrusion-fixing algorithm is triggered by angles greater than gloop.imin. The default value is 170 for gloop.imin. A larger value means that more extreme intrusions can develop and increases the possibility of a tangled grid. A smaller value leads to earlier intrusion-fixing; too small a value will lead to inaccuracy due to premature intervention. Similar concerns apply to the other parameters. The values are a compromise between safety and accuracy. The extrusion-fixing algorithm is always triggered by angles greater than gloop.emax. Again, the default is 170. In addition, it be triggered by lesser extrusions, anything greater than gloop.emin, if the extrusion is a single-triangle glitch in the boundary. The default value is 120 for gloop.emin. None of these parameters should be less than 90, because then the rectangular edges of the simulation space would be smoothed out!

EXAMPLES

method arsenic rel.err=0.01 abs.err=1.0e9
This command indicates that the arsenic equation should be solved with a relative error of 1% and concentrations below 1.0E9 can be ignored.

method min.fill cg back=3 init.ti=0.1 trbdf fermi vert skip.sil=f
This command specifies that minimum fill reordering should be done and that the entire system should be solved using a conjugate residual technique with three back vectors. The initial time step should be 0.1 seconds and time should be integrated using the trbdf model. The fermi model should be assumed for the defects and the vertical model for the oxide growth. The stresses and potential and the silicon should not be computed.

BUGS

It is unclear if the numbering scheme provided by min.fill is optimal. More research needs to be done here, especially for band ordering on vector machines. The only need for user intervention here should be to change the oxidation and defect models.

REFERENCES

  1. M.E. Law and R.W. Dutton, "Verification of Analytic Point Defect Models using SUPREM-IV," IEEE Trans. on CAD, 7(2), p. 181, 1988.
  2. H.R. Yeager and R.W. Dutton, "An Approach to Solving Multi-Particle Diffusion Exhibiting Nonlinear Stiff Coupling," IEEE Trans. on Elec. Dev., 32(10), p. 1964-1976, 1985.
  3. R.E. Bank, W.M. Coughran, W. Fichtner, E.H. Grosse, D.J. Rose and R.K. Smith, "Transient Simulation of Silicon Devices and Circuits," IEEE Trans. on Electron Devices, ED-32, p. 1992, 1985.
  4. H.C. Elman, Preconditioned Conjugate Gradient Methods for Nonsymmetric Systems of Linear Equations, Yale University Research Report, 1981.