next up previous
Next: Multi-species reactive-diffusive model Up: Examples Previous: Examples

Multi-region diffusion with segregation

This example demonstrates a model for diffusion in two regions (silicon and oxide) with a segregation interface condition between the regions. In the silicon region, there is a single diffusion equation,

equation1647

If there is only a single impurity and if complete activation is assumed, the diffusivity is given by

equation1657

where

equation1664

Diffusion in the oxide region is given by

equation1672

where tex2html_wrap_inline2978 is a constant.

There is also a transport flux across the silicon/oxide interface which is approximated by

equation1679

where tex2html_wrap_inline2474 and tex2html_wrap_inline2478 are the concentrations of tex2html_wrap_inline2984 on either side of the interface.

The first few lines alias field names. Although aliasing field names is not necessary, it is useful to create more portable and better documented model descriptions. Some structure file formats (SUPREM) can only represent a fixed set of fields, and it may be necessary to use a strange impurity (e.g. gold) to represent another quantity of interest if that structure file format is used.

# set up some TCL variables to alias SUPREM field names
set BinSi BoronInSilicon
set BinOx BoronInOxide

The next group of lines defined the parameters that will be used in the model.

# useful constants for certain TCL variable slots in operators and functions
set zero 0.0
set one 1.0 

# use TCL to calculate Arrhenius relationship for temperature dependence
set tempC 1100
set tempK [expr $tempC + 273]
set kT    [expr 0.0259 * $tempK / 300]

proc Arrh {pre Ea} {
    global tempK
    global kT
    return [expr $pre * exp(-$Ea / $kT)]
}

# These parameters are from Stanford's modelrc.  
#   Diffusivies are in cm^2/s
#   Activation energies are in eV
#   Transport coefficients are in cm/s

set dbsi0 [Arrh 0.037 3.46]
set dbsip [Arrh 0.76 3.46]
set dbox [Arrh 3.15e-4 3.53]
set Trn [expr -1.66e-7]
set Seg 2

# Intrinsic carrier concentration
set ni0 3.9e16
set niE 0.605
set niP 1.5
set ni [expr [Arrh $ni0 $niE] * pow($tempK,$niP)]

The functions that will be used are defined next.

# There is only one dopant, and this assumes complete activation.

# For multiple dopants, one could query the available dopants and
# construct sum functions for the netActive.  
set netActive [function scaledField -parameters [list $BinSi one]]

set carrierConc [function carrierConc -parameters [list $netActive ni]]

# Use the two-parameter fermi for boron diffusivity in the silicon.
set DBSi [function fermi -parameters [list $carrierConc dbsi0 dbsip zero]]

The steps of defining operators, equations, and systems are combined into a single command. For single equation systems, this is a reasonable approach, but it should probably be broken up for more complicated system.

# The system in the silicon region is a single equation with
# diffusion and electric field terms
set siliconSystem \
  [systemInRegion -name "Fick's in Si" -region Silicon -equations [list \
     [equation -parabolic -name "Fick's" -solvesFor $BinSi \
        -operators [list \
            [operator diffusion -sign 1 -parameters [list $DBSi $BinSi] ] \
	    [operator quasiFermiEField -sign 1 -parameters [list \
	       $BinSi $DBSi $carrierConc] ] ] \
     ] ] \
  ]

# The system in the oxide region only has the diffusion term.
set oxideSystem \
  [systemInRegion -name "Fick's in Ox" -region Oxide -equations [list \
     [equation -parabolic -name "Fick's" -solvesFor $BinOx \
        -operators [list \
            [operator diffusion -sign 1 -parameters [list dbox $BinOx] ] ] \
     ] ] \
  ] 

# The interface system has the segregation flux term on both sides
# of the interface.
set interfaceSystem \
  [systemInRegion -name "Segregation" -region {Oxide/Silicon} \
    -equations [list \
     [equation -name "Flux for Si" -solvesFor $BinSi \
        -operators [list \
            [operator segregation -sign 1 \
               -parameters [list $BinSi $BinOx Trn Seg] ] ] \
     ] \
     [equation -name "Flux for Ox" -solvesFor $BinOx \
        -operators [list \
            [operator segregation -sign -1 \
               -parameters [list $BinSi $BinOx Trn Seg] ] ] \
     ] ] \
  ]

The three systems are combined into a model.

# Combine the systems into a model.
set modelDiff [model -systems [list \
  $siliconSystem $oxideSystem $interfaceSystem ] ]

At this point, there is a complete model description. The model may be applied to a device by loading a structure and using a solve command to run the model as shown below.

# Bring in structure file
sstructure -infile implant.str

# Set up the parameters for the generalized trapezoid timestepping routine
$modelDiff -deltaT 0.1
$modelDiff -relNLTol 1e-10 

# tune the SLES linear solver to use ILU preconditioning and a 
# bi-conjugate gradient squared accelerator
$modelDiff -slesPreconditioning ilu -slesAccelerator bcgs

# Stop after 1800 (seconds, in this case)
$modelDiff -stopTime 1800 

# Now, try to solve it.
$modelDiff -transientSolve

# Save the updated results
sstructure -outfile alamode-final-E.str



Dan Yergeau
Thu Nov 7 17:12:57 PST 1996