Download USER`S MANUAL - Process Evolution, Ltd.

Transcript
DRAFT COPY – DO NOT DISTRIBUTE
EVOLVE
Version 5.0i.a
USER’S MANUAL
Part II User’s Guide
August 1999
EVOLVE5.0i.a
1
DRAFT COPY – DO NOT DISTRIBUTE
EVOLVE5.0i.a is a topography-relevant process simulator.
Modules exist to simulate low pressure deposition and etch
(EVLP), high pressure deposition and etch (EVHIP), and
thermal thin film flow (EVFLOW).
This user’s manual for EVOLVE, Version 5.0i.a was updated
in April of 1999 by Max Bloomfield and David Richards of
the Process Modeling and Simulation research group at
Rensselaer Polytechnic Institute.
EVOLVE5.0i.a was developed by Timothy S. Cale, Max
Bloomfield, David Richards, and Sofiane Soukane, starting
from previous versions. It is based on extensive work by
several people, including members of the Process Simulation
Laboratory in the Center for Solid State Electronics Research
at Arizona State University (through 1997) and many
colleagues in industry.
For more information on the history of and the contributors to
EVOLVE, please see The History of EVOLVE section of Part
II of this manual.
Users can expect to find unclear, inconsistent and even
incorrect information in this manual, as it is not completed,
commercial grade documentation. For example, the
documentation for EVHP and EVFLOW are not as well
developed as that for EVLP.
EVOLVE is under development, and we would be pleased to
hear from users about potential bugs, suggestions, or novel
uses for EVOLVE
EVOLVE5.0i.a
2
DRAFT COPY – DO NOT DISTRIBUTE
Table of Contents
Introduction ..........................................................................................................................................................4
Input Files .............................................................................................................................................................6
Output Files...........................................................................................................................................................8
Guidelines..............................................................................................................................................................9
Input File Format: chooser.in ..........................................................................................................................12
Input File Format: evolve.in.............................................................................................................................13
Input File Format: hip.in..................................................................................................................................47
Input File Format: hpcode.in ...........................................................................................................................50
Input File Format: reflow.in ............................................................................................................................53
Input File Format : parameter.in.....................................................................................................................56
Input File Format: move.in ..............................................................................................................................58
Input File Format: riemann.in .........................................................................................................................60
Input File Format: specular.in .........................................................................................................................61
Input File Format: sputter.in ...........................................................................................................................63
Input File Format: materials.in .......................................................................................................................65
Installation Guide ...............................................................................................................................................66
How to execute EVOLVE ..................................................................................................................................73
Frequently asked questions and answers .........................................................................................................74
The History of EVOLVE ...................................................................................................................................78
EVOLVE5.0i.a
3
DRAFT COPY – DO NOT DISTRIBUTE
Introduction
EVOLVE is written in a combination of FORTRAN 77 and C. The version covered by this
User’s Guide is designed primarily for interactive execution in UNIX and X-windows
environments, although batch execution is an option. Double precision is adopted for real
variables used throughout EVOLVE.
This Users’ Guide is based on experience with DEC (Alpha), Sun and HP workstations with
at least 64 Mb of RAM (this is required for double precision installation), and should be
valid for other common workstations (compilers). This document describes how to build
data files for deposition, etch, and flow simulations and provides guidelines on learning to
use EVOLVE5.0i as a stand-alone program. Figure 1 shows a flow diagram of EVOLVE’s
program structure.
time step
•
•
•
•
•
•
Input Files
Geometry
Simulation
parameters
Stoichiometries
Kinetics
Transport
Operating
conditions
Main Flow Control
EVLP
Low pressure
dep. and etch
Moving
Algorithm
EVHP
High pressure
deposition
Output Files
• Profiles
• Datex files
• Run logs
EVFLOW
Thin film
thermal flow
Figure 1: Program stucture of EVOLVE 5.0i.a
For "simple" deposition simulations in single trenches, typical elapsed time per incremental
deposition (a step in the simulation) is usually a few seconds on a DEC alpha 600-5/266
EVOLVE5.0i.a
4
DRAFT COPY – DO NOT DISTRIBUTE
workstation. Total simulation times for these simple processes are usually less than one
minute, but depend on the input parameters. For more complex or high precision
simulations, elapsed time can easily exceed several minutes. The longest simulations run to
date, which involve hundreds of surface nodes, several dependent variables (species fluxes
and surface concentrations - thousands of equations) and complex reaction kinetics (surface
mechanisms) have taken several hours on a Sun Ultra 60 dual-processor workstation.
For simulations of deposition processes in trenches, execution time increases dramatically
with increasing number of features involved in the simulation, because of the number of
nodes required to represent the surface. Whenever possible, you should simulate deposition
in single trenches. Simulations of etch, high pressure CVD or reflow processes take
considerably longer than low pressure CVD process due to the requirements of smaller
simulation time steps (in case of etch), or the nature of finite element algorithm (in cases of
reflow and high pressure deposition).
Run time is affected by several parameters in the input data file, and this aspect of data file
construction should be given special consideration after learning the basics of EVOLVE. For
example, the execution time for one of the examples included in Part III of this user’s guide
(Example 5 of LPCVD) was varied by a factor of more than five by changing the values of
input parameters tol and relax somewhat. The final film profile was not affected.
One very important point to remember is that the value used for tol (the tolerance used in the
nonlinear over relaxation method (NLORM) used to determine local deposition rates, fluxes
and perhaps surface concentrations) must not be too small if single precision variables are
used. Even a value of 1.0D-6 has been found to be too small for simulations that include
surface diffusion; i.e., convergence is never attained using single precision. On the other
hand, accurate solutions for processes that involve species with a wide range of fluxes and
surface coverages may require tighter tolerances (1.0D-9 or even smaller).
EVOLVE5.0i.a
5
DRAFT COPY – DO NOT DISTRIBUTE
Input Files
For the standalone version of EVOLVE, described in this guide, the input data which define
the desired simulation for the program are contained in files whose names are pre-assigned in
the source code. These files are:
chooser.in
Controls type of EVOLVE simulation (EVLP, EVHP, or EVFLOW)
and EVOLVE’s interaction with other programs. Required for all
simulations.
evolve.in
The major input file. Defines simulation input, output, initial structure,
simulation parameters, and operating conditions. For EVLP, also
defines transport, reactions, and kinetics. Required for all simulations.
hip.in
Contains spatial domain for gas phase homogeneous reaction, reaction
kinetics, diffusivities, Only required for high pressure deposition
simulations (EVHP).
hpcode.in
Contains memory usage parameters for the finite element solution.
Only required for high pressure deposition simulations (EVHP).
reflow.in
Contains thin film physical properties such as density, viscosity, and
surface tension, etc. Also contains memory usage parameters for the
reflow finite element solution. Only required for thin film thermal
flow simulations (EVFLOW).
parameter.in
Defines memory limits and unit numbers. Required for all simulations.
move.in
Controls display of output in moving algorithm solutions, and defines
moving algorithm control parameters. Required for all simulations.
riemann.in
Controls display of output and use of critical parameter in Riemann
algorithm solutions. Required for all simulations.
EVOLVE5.0i.a
6
DRAFT COPY – DO NOT DISTRIBUTE
materials.in
Defines the material list used in EVOLVE and provides a list of some
nominal starting values for each material’s molar volume, surface
energy and site density. Required for all simulations.
specular.in
Determines the materials, species, and models used for specular
reemission calculations. Required for simulations with specular
species when using the default version of the user-definable code.
sputter.in
Determines the materials, species, and models used for sputtering of
solid materials. Required for simulations with sputtering species when
using the default version of the user-definable code.
For the majority of simulations, these input files, and a file containing the initial geometry
are the only input files needed; however, other files may be required by user supplied
routines. For example, a file that holds the source fluxes as a function of angle might be
required by a particular user-supplied udist subroutine.
EVOLVE5.0i.a
7
DRAFT COPY – DO NOT DISTRIBUTE
Output Files
Output filenames for both graphical and text outputs are read from the main input file,
evolve.in; however, they can be renamed interactively if desired.
The graphical output format used by EVOLVE is quite simple, consisting of sequences of
ordered pairs, each pair on a line and representing a point on a plane. Sequences represent
geometric regions or surfaces and are separated by two lines: a blank line and a line
containing a double quotation mark followed by a label string. This simple format may be
easily viewed by such utilities as XGRAPH, XMGR, XMGRACE, or in a pinch, Microsoft
Excel.
The main simulation graphical output, generally named with a suffix of “grf” contains the
starting structure, and nth intermediate surface profiles, as specified in the evolve.in file.
A second graphical output file, generally named with a suffix of “subs,” can be used to track
the progress of the simulation, and is updated after moving the surface and after resizing the
segments.
There are three optional graphical output files with recommended suffixes ‘prf’, ‘see’, and
‘cor’ respectively. The first file contains the final film surface in a form convenient for
further simulation using EVOLVE. The second contains the last two profiles at any time
during the simulation. This file is very useful if there are convergence problems during the
determination of the local growth rates. The third optional file tracks the largest change in
the value of the dependent variables for each iteration of the 'nonlinear over-relaxation
method' (NLORM) used to determine the local growth rates.
EVOLVE5.0i.a
8
DRAFT COPY – DO NOT DISTRIBUTE
Guidelines
The best approach to learning EVOLVE is to run the examples included in this guide. Then
try different substrate profiles for the same processes. Then change the various parameters in
the input file to see how they affect the film profile predictions. For example, if global
kinetic expressions are being used, change the operating conditions to get a feel for their
impact on sticking factors and hence film conformality or step coverage. Of course,
changing the assumed kinetics (parameters in the kinetic expression) of the deposition will
change the film profile predictions. Nevertheless, this may be instructional in order to get
the feel of the dependence of profile evolution on a system’s kinetic parameters. After
running the examples provided and perhaps reading some background on the model upon
which the simulator is based, you should be able to build your own data files. One basic data
file is generally enough for a given process chemistry. Changes to this file can be made to
simulate processes on other starting profiles or to test other kinetic expressions.
EVOLVE has several features designed to improve the accuracy of the predicted rates along
the feature surfaces and hence film profiles. For example, the distance between nodes can be
automatically adjusted after each step in the process in order to be about the same. This
improves accuracy for given number of nodes, particularly in the presence of surface
diffusion. Another feature of EVOLVE which can be used to improve the accuracy of the
simulation results is that the step size is adjusted automatically based on intersections of the
growth vectors.
In the low pressure code (EVLP), EVOLVE also has several features added to enhance
convenience for longer simulations. Because of the large number of equations which are
solved during the deposition simulation (easily several thousand), the nonlinear over
relaxation method (NLORM) is used in subroutine CYCLER in which the local film
deposition rates are determined. The NLORM parameter relax is input for use in CYCLER,
in addition to the tolerance (upper limit on changes in the unknowns). Relax is a relaxation
parameter, and is often set to one. If the method does not converge in the input maximum
number of steps, you have the option of asking the program to continue with the value of
relax the same or altered. If this occurs, then you may be using a value which is too
conservative (relax too small) If the NLORM method "blows up", you have the option of
EVOLVE5.0i.a
9
DRAFT COPY – DO NOT DISTRIBUTE
restarting that step in the deposition process with the value of relax altered. In general, lower
the value and continue. With experience, this feature can be used to decrease the number of
iterations required for convergence in each step of the simulation, hence decreasing the
actual time lapsed for the simulation. Unfortunately, values for relax which speed up the
simulation may also cause it to "blow up". Several simulations may be required before a
good value for relax is determined for a "new" process being simulated. Finally, note that
EVOLVE is not designed to catch all possible modes of failure in CYCLER.
As with other complex software packages, particularly those designed to be as general as
EVOLVE, you may need to try several times before arriving at satisfying simulation results.
The values of several of the input parameters can affect the resulting film profiles; e.g., nins
(the number of points to be inserted at an expanding corner), isize (whether or not to resize
the segments), fmin (the minimum segment length kept during resizing), and fmax (the
maximum segment length kept before resizing). Of course, it is desirable to choose values
for these parameters such that changes in them do not make significant changes in the
simulated film profile.
Troubles that occur during the simulation can often be tracked down using the graphical
output files. Many graphing programs provides a zoom feature that can be very useful. In
addition to the 'main' graph output file (suffix ‘grf’), other graph files can be used to evaluate
the progress during execution to help refine the simulation. The ‘see’ file contains the last
two surface profiles predicted by EVOLVE. The ‘subs’ file contains the current structure
and is rewritten after reading in the profile, after moving the surface, and after resizing the
segments. In addition to the output files designed for graphics, the text-based output to the
screen and to the ‘out’ file may help you refine the simulation. The iws and iwf flags defined
in evolve.in control the level detail of the text-based output. Note that text output files can be
very long.
In addition to allowing user-defined substrate profiles as input, EVOLVE can generate a
single, symmetric trapezoidal cross-section of an infinite trench or circular via as a starting
profile for convenience. These internally generated features have flat regions on either side.
Control of feature creation is discussed in Input File Format.
This version of EVOLVE assumes that the region is bounded by flat surfaces with no
gradients in species fluxes or adsorbed species concentrations along the surface. Note that
EVOLVE5.0i.a
10
DRAFT COPY – DO NOT DISTRIBUTE
this assumption is in effect whether or not the starting substrate profile is generated by
EVOLVE and should be kept in mind for all substrate profiles. If a simulation yields an
evolving film surface which is not parallel to these flat areas, towards their ends which are
farthest from the feature, then rerun the simulation with an input profile which includes
wider ’flats’. This situation is most likely to occur in the presence of surface diffusion.
These flats must be oriented such that their normal vectors point from the wafer into the
source volume.
A good way of testing how well you understand EVOLVE (EVLP) is to run a very low
sticking factor deposition simulation in a trench with vertical sidewalls. Choose a simplistic,
constant sticking factor simulation with a single reactant and single reaction in a trench of
unity aspect ratio and input a sticking factor of 0.0001. Using input parameter values
designed for high accuracy, you should be able to generate a very narrow void in the trench.
Check the deposition rate profile closely to make sure that deposition rate does not actually
increase down towards the bottom of the feature! This can occur if spaces or tol is too large.
As a feature is about to close, the NLORM used in CYCLER can fail to converge, because
EVOLVE is attempting to deposit in an extremely high aspect ratio feature. This situation
will be obvious during the simulation, because no reasonable choices for the value of the
relaxation parameter will lead to stability. The reasons for this instability are well defined,
but are beyond the scope of this document. In this type of situation one may make good use
of the graph file which tracks the last two profiles. If instability occurs, look into the
corresponding graph file. If a feature is very close to closure, then back up a time step and
increase that process step slightly. Alternatively, you might select the option that EVOLVE
gives, to terminate and plot the current profile.
One of the intended uses for EVOLVE is for comparisons of predicted and experimental film
profiles; therefore, starting profiles will often be digitized representations of actual substrate
profiles. It is often desirable to rotate, translate and scale the profile that results from the
digitization process, in case the scales and the orientations of the reference coordinate axes
were not selected precisely enough. Rotation should only be done to orient the wafer surface
such that it is "horizontal" and with coordinates increasing to the right, along the x axis.
Thus the normal to the wafer surface, away from features, points in the y direction (into the
source volume).
EVOLVE5.0i.a
11
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
chooser.in
This input data file controls the type of EVOLVE simulation to run and EVOLVE’s
interaction with other programs. It is composed of a single line containing three integer
values separated by white space. Those values and their names in EVOLVE are as follows:
islave The flag that indicates whether EVOLVE is being called by another program. The
possible values are 0 for stand alone mode, or 1for slave mode.
ichoic The flag that indicates which module or pair of modules to use for simulation. The
values of ichoic may be 1 for use of EVLP, 2 for use of EVHIP, 3 for use of
EVFLOW, 4 for use of both EVLP and EVFLOW, or 5 for use of both EVHIP and
EVFLOW.
idum This flag is reserved for future use. Any integer value will suffice.
EVOLVE5.0i.a
12
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
evolve.in
The primary input file, evolve.in, is composed of Blocks, each of which is made up of one or
more Data Items. Each individual block is associated with a single FORTRAN 77 listdirected read statement. Thus, white space (defined as blanks, tabs, or newline characters
not enclosed in single quotes) is used as the Data Item delimiter. Data Items may be of three
different types: real numbers, integers, and character strings
A Block may in general cover more than one line; however, this must be consistent with the
read statements. In FORTRAN, if a read statement expects more Data Items than are in a
given line, the next line (or part of it) is read. In general, each read statement will start
reading the next line. It is important to ensure that the variable types and the number of data
entries are consistent with those required by the Block. In general, each Data Item in each
Block must be present in the input file, even if it not used in a particular simulation.
In the following description, b.d defines the d-th Data Item number for the b-th Block of the
data file; e.g., the fifth Data Item for Block 13 is Item 13.5. The type of Data item is
indicated by a single letter enclosed in parentheses. (R) indicates a real number, (I) indicates
an integer and (C) indicates a character string. Variable names used in the program are
presented in italics.
Data Items of type (R) may be expressed in floating-point or scientific notation. Floatingpoint numbers are composed of an optional leading sign, a string of digits, and an optional
(but recommended) decimal point. Scientific numbers are composed of the following: an
optional leading sign (+,-), a numeric mantissa greater than or equal to 1.0 and less than 10.0
including a mandatory decimal point, an E or D character, an optional sign, and an integer
order of magnitude. Upper and lower limits on the order of magnitude are machine
dependent.
Data Items of type (I) are made up of an optional leading sign and a string of digits.
Data Items of type (C) are enclosed by single quotes and may not exceed twenty-five
characters in length, or the string will be truncated.
EVOLVE5.0i.a
13
DRAFT COPY – DO NOT DISTRIBUTE
If an error or an end-of-file condition is encountered while loading the parameters, the
program prints a diagnostic message and stops execution. If you are unable to pinpoint the
problem, try using a value of 1 or greater for iws (Data Item 5.1) and rerun the program. The
Block that was being loaded when the error occurred will be displayed. The problem may be
in a previous Block, because of a read statement ’overrunning’ a record. The values which
are read in for each Block are also echoed to the text output file, for a value of iwf (item 5.2)
of one or more. Scanning the text output file is also an effective way of pinpointing the
problem.
The program assigns numbers to reactant species, product phases and atoms in the solid
products based on the order in which their names are read from the input file. Before
beginning data entry, decide which reactant will be species one. This species is treated as a
reference species in the program and must exist in the source volume above the wafer; i.e.,
do not use a product species as species one, unless that species exists in the source above the
wafer. You may limit the list of gas phase species to those which are involved in or
influence the reaction rates in some way. Reactions are also numbered in the order in which
they are input. Materials are also numbered in the order they are entered, or are indicated by
the reactions which form solid phase products of which they are composed.
HEADER BLOCKS
The first 14 blocks contain filenames, the date and values related to output files. Character
Data Items are limited to twenty-five characters in length and should be enclosed in single
quotes.
BLOCK 1
1.1-
string containing the name of the run (inname) (C)
This may be any string of 25 character or less. It will be written to the screen and
throughout the text output file. It may be used to identify the simulation.
EVOLVE5.0i.a
14
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 2
2.1-
a reference date for the run (date) (I)
This may be any integer and traditionally represents a reference date that will be
written to the screen and to the text output file.
BLOCK 3
3.1-
the version of EVOLVE for which the data file was developed (ivdata) (I)
If this number doesn’t agree with the value set in subroutine LOADER, then a
warning message is displayed. You may continue with execution; however, be
careful and check the file format. The reference value for EVOLVE5.0i.a is 042699.
BLOCK 4
Holds four integers that control the execution of the program.
4.1 -
flag to indicate if the simulation is to run in batch mode (ibatch) (I)
Set to zero if interactive simulations are desired (normal). Set to 1 if the simulation is
to be in batch mode. Values for ipause, isloop, ipltfl, ipltdv, ipltft, newnam (BLOCK
6) and iride (ITEM 23.7) are reset to 0 if ibatch is set to 1. If ibatch is set to 1, and
any user defined subroutines require input, then they override the value of ibatch without redefining ibatch for the rest of the simulation.
4.2 -
flag that tells EVOLVE how far to proceed (inout) (I)
This is useful in situations where EVOLVE is being called by another program; e.g.,
a reactor scale simulator. For normal operation, set it to three. To read in the data
files and compute the reference rates, set it to one. To compute the solution, but stop
before moving the surface, set it to two.
EVOLVE5.0i.a
15
DRAFT COPY – DO NOT DISTRIBUTE
4.3 -
flag to indicates how much information about EVOLVE to print (iabout) (I)
The standard value of this flag is 0, but values greater than 0 will cause EVOLVE to
print an extended version of its banner page to standard output before beginning the
simulation.
4.4 -
flag which indicates which moving algorithm to use (lvlset) (I)
EVOLVE5.0i.a only supports a value of 0. Other values are reserved for future
expansion. This flag must be present.
BLOCK 5
Contains a set of integers that help control the input and output of the program.
5.1 -
flag to indicate write level to the screen (iws) (I)
Set to -1 to get only step number printed to the screen. Set to 0 to get only the
summary at each step after simulation starts (step number, film thickness and process
time). Set to 1 to track the progress of the simulation through each step. Set to 2 to
get more details of the simulation printed to the screen, particularly details associated
with moving and resizing the profile. Values greater than 2 may cause printing of
information not relevant to users-level use of EVOLVE.
5.2 -
flag to indicate write level to the text output file (iwf) (I)
See description for iws (ITEM 5.1). iwf is to the output text file what iws is to the
screen output.
5.3 -
flag to create the final film profile output (iprf) (I)
Set to one if the final profile is needed; e.g., if it is to be used as the input profile for a
subsequent simulation. Set to 0 otherwise. The name for this file is read in BLOCK
9, and it can be renamed interactively if newnam (5.6) is set to 1.
EVOLVE5.0i.a
16
DRAFT COPY – DO NOT DISTRIBUTE
5.4 -
flag to indicate if you want the last two surface profiles written to a file (isee) (I)
Set to 1 to have them written to an XGRAPH compatible file. Set to 0 otherwise.
The name for this file is read in BLOCK 10, and it can be renamed interactively if
newnam (5.6) is set to 1.
5.5 -
flag to indicate if you want to track the maximum correction in CYCLER (icorr) (I)
Set to 1 to have the absolute value of the maximum correction (over all variables) in
CYCLER written to an XGRAPH compatible file. Set to 0 otherwise. The name for
this file is read in BLOCK 11, and it can be renamed interactively if newnam (5.6) is
set to 1.
5.6 -
flag to indicate if you want to be prompted for filenames (newnam) (I)
Enter 0 if the filenames and date in the input file are to be used. Enter 1 if EVOLVE
should ask you at execution whether or not you would like to enter filenames from
the keyboard. If ibatch is one, then newnam is set to zero.
BLOCK 6
Contains flags that indicate the level of user interaction during execution.
6.1 -
flag to determine if EVOLVE should pause (ipause) (I)
Set to 0 for no pauses. Set to 1 to pause at the start of the simulation in order to
check the deposition rates and simulation setup. Increase to 2 to also pause after
establishing new operating conditions (for a transient simulation) by a call to SETUP
, the subroutine that sets up the initial time step and film thickness increments for the
simulation. Further increase to 3 to additionally pause after moving the profile
during each time step and after resizing the surface profile. The method of restarting
after a pause is compiler dependent; therefore, don’t use this feature unless you know
EVOLVE5.0i.a
17
DRAFT COPY – DO NOT DISTRIBUTE
the restart keyword. It is usually ’go’, ’continue’, or just a carriage return. If ibatch is
one, then ipause is set to zero.
6.2 -
flag to show the trial surface in subroutine XSECTR (in MOVE_CODE) before and
after treating loops and overlaps (isloop) (I)
Usually set to 0. Set to 1 to output the trial surface to the ‘subs’ file before and after
dealing with any loops, which may be caused by too large a time step or moving
surfaces overlapping. Although a front-tracking algorithm is used to move the
surface, this does not guarantee that loops do not form should too large a time step be
taken or non-adjacent sections of the surface meet, such as at feature closure. If
ibatch is one, then isloop is set to zero.
6.3 -
flag to indicate if flux distributions are to be put into files (ipltfl) (I)
Set to 1 if you want to generate files that may be used by a graphing package to
display the flux distributions as functions of angle expressed in radians. If flux
distributions are to be written to files, EVOLVE will ask you to enter a filename for
each of the files. Be careful not to overwrite existing files by mistake. If ibatch is
one, then ipltfl is set to zero.
6.4 -
flag to indicate if dependent variables are to be put into files (ipltdv ) (I)
Set to one if you want to generate files which can be used by a graphing package to
display the obtained solution for a variety of dependent variables as a function of arc
length. The variables available for output are reaction rates, species rates, deposition
rate, species fluxes, sticking factors, atomic fractions, surface fractions, curvature,
and curvature driven diffusion rates. If dependent variable values are to be written to
files, EVOLVE will ask you to enter a filename for each of the files. Be careful not
to overwrite existing files by mistake. If ibatch is one, then ipltdv is set to zero.
EVOLVE5.0i.a
18
DRAFT COPY – DO NOT DISTRIBUTE
6.5 -
flag to indicate if information about the final film profile is to be output (ipltft) (I)
Set to 1 if you want to generate files that can be used by a graphing package to
display final film profile information (such as thickness) after the simulation is
completed. If this information is to be written to files, EVOLVE will ask you to enter
a filename for each of the files. Be careful not to overwrite existing files by mistake.
EVOLVE will then ask whether the thickness information is to be determined using
segment midpoints or endpoints. If ibatch is one, then ipltft is set to zero.
BLOCK 7
Contains the name of the output file to be used for text output. A suffix such as “out” is
recommended. Depending upon the value entered for iwf (ITEM 5.2), this file can contain
the information needed to trace progress of the simulation; e.g., many details from the
solution at each time step (flux distributions, surface fractions, local evolution rates and
surface geometric information). This can help track down problems with the input file.
Depending upon the value of iwf, a large amount of information regarding the simulation is
written to this file during execution, including perhaps warning messages. These files can be
extremely useful for identifying problems with a simulation, as well as to interpret the
simulation results. These text output files can also be large. A filename must be present.
BLOCK 8
Contains the name of the graphical output file. This contains the starting profile as well as all
surface profiles generated up to the current profile. A suffix such as '.grf' is recommended.
BLOCK 9
Contains the name of the output file to be used for the final film profile. A name must be
here, even if the final film profile is not desired. A suffix such as '.prf' is recommended.
EVOLVE5.0i.a
19
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 10
Contains the name of the output file to be used for the file that contains the last two profiles
at any point in the execution (after the first step of course). A default extension such as ’.see’
is recommended.
BLOCK 11
Contains the name of the output file that tracks the logarithm (base 10) of the maximum
absolute value of the corrections in the dependent variable values during the iterative
solution procedure used in SOLVER_CODE at each time step. This is an XGRAPH
compatible file. A suffix such as ‘cor’ is recommended.
BLOCK 12
Contains the name of an XGRAPH compatible file that contains the current structure. This
file is opened and closed each time it is written to; i.e., the entire structure is rewritten.
BLOCK 13
Contains the name of the file that holds the final DATEX ‘geometry’ file.
BLOCK 14
Contains the name of the file that holds the final DATEX ‘simulation’ file.
CONTROL BLOCKS
Blocks 15 to 24 contain program control parameters.
BLOCK 15
Contains 4 items related to the starting substrate:
EVOLVE5.0i.a
20
DRAFT COPY – DO NOT DISTRIBUTE
15.1 - flag which indicates how the starting substrate is to be loaded (inprf) (I)
Set inprf to 0 to have EVOLVE generate an initial surface and single material
substrate. The resulting structure is symmetric, with characteristics defined by entries
in BLOCK 16.
Set inprf to 1 to read in a surface from a file and generate a single-material substrate.
The file must contain a sequence of ordered pairs, each pair consisting of two real
numbers separated by white space. Pairs must come one to a line, with no skipped
lines and the sequence being terminated by the pair 10000. 10000.
Set inprf to 2 to have the substrate read in from a DATEX file.
15.2 - Name of the input file for the initial structure
This is used for inprf (15.1) of 1 or 2. A filename must be present.
15.3 - Material name for the substrate material.
This is used for inprf (15.1) of 0 or 1. If inprf is 2, the material names are read in
from the DATEX file. A material name must be present. Material names are
installation dependent, because they can be defined by the user. The list of materials
in the standard distribution is given in Appendix A.
BLOCK 16
Contains 7 required items related to the generation of features:
16.1 - a flag indicating whether or not the feature is symmetric (isym) (I)
If isym is set to 1, EVOLVE will reflect any feature input from file about a vertical
axis through the rightmost input point. Setting isym allows EVOLVE to take
advantage of symmetry during calculations. Although isym may be set to 0 even for
EVOLVE5.0i.a
21
DRAFT COPY – DO NOT DISTRIBUTE
generated features, which must be symmetrical due to their manner of specification,
EVOLVE considers this likely to be an error and will attempt to warn the user.
16.2 - a flag indicating whether or not the feature has circular cross sections (icyl) (I)
Set icyl=1 for a feature of circular cross section. If icyl=1, then isym will be 1. May
be used with any type of profile input.
16.3 - auto-generated feature width (width) (R)
The width in microns at the mouth of the feature that EVOLVE should generate if
inprf (15.1) is set to 0.
16.4 - auto-generated feature height (height) (R)
The height in microns at the center of the feature that EVOLVE should generate if
inprf (15.1) is set to 0.
16.5 - auto-generated feature sidewall angle (wangle) (R)
The angle in radians formed relative to the wafer surface of the feature that EVOLVE
should generate if inprf (15.1) is set to 0. For features of rectangular vertical cross
section, use π/2. For tapered features, wangle is less than π/2. For reentrant features,
wangle is greater than π/2.
16.6 – auto- generated feature flat length (flats) (R)
The length in microns of the flats to either side of the feature EVOLVE should
generate if inprf (15.1) is set to 0. This should be set to provide a reasonable surface
length. After the simulation is complete, make sure that the ends of the surface
profile are horizontal. If they are not, then rerun the simulator with a larger value for
flats.
EVOLVE5.0i.a
22
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 17
Contains five items regarding the manipulation of the input profile, if inprf is 1. These items
must be present in any case. These are particularly useful when using digitized input
profiles.
17.1- the displacement distance along the x coordinate (deltx) (R)
Set to a positive value, in microns, to reduce the values of the x (horizontal)
coordinates read in the next BLOCK. Remember x runs left to right across the screen
or page.
17.2 - the displacement distance along the y coordinate (delty) (R)
Set to a positive value, in microns, to reduce the values of the y (vertical) coordinates
read in the next BLOCK. Remember y is negative into the substrate.
17.3 – the angle in radians to rotate the input profile in the plane of the paper (rotate) (R)
A positive angle rotates the input profile in the counterclockwise direction. The
angle of rotation entered should make the 'flat' surface of the wafer and the x axis
collinear. This feature is intended to allow you to correct for a small error in the
angle coordinate axes introduced during digitization of a substrate profile from an
SEM micrograph. It is important to rotate the initial structure so that the flats on
either side of the feature (representing the nominal wafer surface) are 'horizontal' or
parallel to the x axis.
17.4 - the scaling factor for the input profile along the x (horizontal) coordinate (scalex) (R)
Set to a value greater than one to expand the profile; i.e., the coordinates are
multiplied by this factor. Both this term and the next are intended to allow you to
correct for errors introduced into the scales of the coordinate axes during digitization
of a substrate profile from an SEM micrograph.
EVOLVE5.0i.a
23
DRAFT COPY – DO NOT DISTRIBUTE
17.5 - the scaling factor for the input profile along the y (vertical) coordinate (scaley) (R)
Set to a value greater than one to expand the profile; i.e., the coordinates are
multiplied by this factor.
BLOCK 18
Contains information about the kind of process being simulated.
18.1 - flag that controls the manner in which process time is determined (iprocs) (I)
Set to 0 to process until a given change in position of the wafer’s surface is realized
on the flats (target, item 18.3), but stopping when a feature has closed. Set to 1 to
process until a given change in position of the wafer’s surface is realized on the flats.
Feature closure(s) will not stop the simulation. Set to 2 to process for a particular
time (timax, item 18.4). For values of iproces from 0 to 2, process conditions are
constant and nmax (item 19.2) is checked. A value of zero or one for iprocs is a good
choice when a problem’s kinetic expressions are not well known, before running for a
given time.
18.2 - parameter indicating if the process is PVD (ipvd) (I)
Set to 1 for PVD processes to speed up simulation, or if all of the sticking factors are
unity; i.e., there is no re-emission. The transmission probabilities from surface to
surface are not calculated, which can speed up the simulation considerably. For CVD
processes or PVD processes with subunity sticking factors, set to 0.
18.3 - the target film thickness (target) (R)
Used for iprocs equal to 0 or 1, otherwise it is a dummy variable. It is the desired
change in position (y coordinate on the flat area of the wafer), in microns. This is
very useful in comparing simulation results to SEM micrographs.
EVOLVE5.0i.a
24
DRAFT COPY – DO NOT DISTRIBUTE
18.4 - the maximum process time (timax) (R)
Used for iprocs=2, otherwise it is a dummy variable. It is the duration of the
deposition process that is being simulated in seconds. The use of iproces=2 requires
good kinetic information in order to be useful.
BLOCK 19
Contains 3 items that control the numerical relations used in EVOLVE:
19.1 - the nominal number of steps in the process (nstep) (I)
The ‘nominal’ time step will be set in an attempt to make the total number of
simulation steps be this number. For simulations in which the endpoint is determined
by a distance traveled by the flats (iprocs (18.1) set to 0 or 1), the predicted amount
of time required for the simulation is determined by the instantaneous velocity of the
surface on the flats and the remaining distance to cover. For ‘timed’ simulation, that
is with iprocs set to 2, the process time remaining to reach the target time timax
(18.4) will be used in the calculation of the nominal time step.
19.2 - the maximum number of steps to be taken (nmax) (I)
This is useful to over-ride input nominal number of steps (nstep) in order to obtain a
fractional feature fill and/or to protect against too many steps being taken. It should
not be greater than nploto⋅npm (see ITEM 19.3 below for nploto; npm is the
maximum number of plots, as set in parameters.in). The maximum number of
profiles to be plotted (npm) is currently set at 100. nmax is usually much smaller than
that maximum; e.g., when used to set the number of steps the simulator takes.
19.3 - the number of steps between plots (nploto) (I)
The output profiles are plotted at this interval of steps and at simulation termination.
EVOLVE5.0i.a
25
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 20
Contains flags for segment resizing:
20.1 - flag to indicate the type of segment resizing which occurs (isize) (I)
Set to 0 for no resizing except as a result of the film movement. Set to 1 for resizing
based on spaces (ITEM 21.1), fmin (ITEM 21.2) and fmax (ITEM 21.3), which are
fractions of the nominal segment length. Typically set to 1.
20.2 - the value of isize to be used for profile setup (isize0) (I)
Set to 0 if the starting profile contains the entire desired surface profile. Set to 1 if
you are entering only the "turning points" of the profile and/or desire resizing. The
input values of fmin and fmax0 (ITEM 21.4) is used. Typically set to 1.
20.3 - the step in the deposition process in which resizing begins (istpsz) (I)
Usually set to 1. Resizing of the initial feature is flagged using isize0 (ITEM 20.2).
20.4 - a flag to indicate if spaces is to be reduced at points of high curvature (idiv) (I)
Set to 1 to have more nodes at points of high positive curvature on the input profile.
Set to 2 to have more nodes at points of high curvature (both positive and negative
curvature). Positive curvature means that the local surface is convex (from the solid
side) and will expand upon deposition. Set to zero for a curvature independent value
of spaces.
20.5 - a flag to indicate if spaces is to be reduced at points of high curvature on the input
profile (idiv0) (I)
Set to 1 to have more nodes at points of high positive curvature on the input profile.
Set to 2 to have more nodes at points of high curvature (both positive and negative
curvature). Set to zero for a curvature independent value of spaces. If only the
EVOLVE5.0i.a
26
DRAFT COPY – DO NOT DISTRIBUTE
turning points of a profile are read in, set this value to 0, because there are usually are
not enough nodes present to provide good values of curvature.
20.6 - a flag to control surface dekinking (ikink) (I)
EVOLVE has two dekinking criteria. Set ikink to 1 to turn on Independent-Angle
dekinking, to 2 to turn on Total-Angle dekinking, to 0 to turn off both types of
dekinking, and to 3 to turn on both types of dekinking. (See fkink, Data Item 21.5 for
an explanation of the dekinking criteria.)
BLOCK 21
Contains information about segment resizing.
21.1 - the nominal segment length (spaces) (R)
The nominal segment length, spaces (in microns) should be chosen small enough to
represent the details of the profile that is being deposited onto. If spaces is chosen
too small, then too many points will be generated. This depends on the total length of
the profile. Note that if isize0=1 is chosen to resize the initial profile from the
entered turning points, then there could be more nodes generated than indicated by
simply dividing the length of the surface by spaces.
Since the computer execution time increases with the number of segments, the
number should be kept as small as possible while providing acceptable answers. To
see if the solution depends on the number of initial segments, increase or decrease the
value of spaces somewhat after getting the solution for one value of spaces. For
smooth, micron-scale features use 0.05 or 0.1 µm to start, except for large features;
e.g., see example EX.3.WF6.
EVOLVE5.0i.a
27
DRAFT COPY – DO NOT DISTRIBUTE
21.2 - the minimum fraction of the nominal segment length (fmin) (R)
The fraction of spaces which is considered small enough to combine segments; i.e.,
segments shorter than this fraction of spaces will be combined with a neighboring
segment. A good starting value is 0.2.
21.3 - the maximum fraction of the nominal segment length (fmax) (R)
The fraction of spaces that is considered large enough to divide a segment. Nodes are
inserted between the nodes that define the long segment. A good starting value is 1.5,
but decrease to 1.2 for smoother curves.
21.4 - the maximum fraction of the nominal segment length for initial profile(fmax0) (R)
The fraction of spaces that is considered large enough to divide a segment on the
input profile. Nodes are inserted between the nodes which define the long segment.
A good starting value is 1.5, but decrease to 1.2 for smoother curves.
21.5 - the critical value for determining whether three segments form a kink (fkink) (R)
In Independent-Angle dekinking, a sequence of three segments which form two
angles of opposite sign, both with absolute values equal to or greater than fkink⋅•/2,
will be considered as forming a kink. For Total-Angle dekinking, a sequence of three
segments that form two angles of opposite sign, the sum of the absolute values of
which is equal to or greater in than fkink⋅π, will be considered as forming a kink.
Note that in both cases, smaller values of fkink find more kinks. If a kink is found,
then the middle segment of the three is removed if it is shorter that spaces. Otherwise
nothing is done.
BLOCK 22
Contains information about how the profile is to be moved.
EVOLVE5.0i.a
28
DRAFT COPY – DO NOT DISTRIBUTE
22.1 - the minimum fraction of the nominal time step which is to be taken (tfmin) (R)
A good value to start with is 0.5. For more accurate simulations close to feature
closure, use a smaller value. The nominal time step used in EVOLVE, dictated by
the rate of surface evolution and the input target or process time, can be changed in
MOVE_CODE because growth vectors overlap or cross region element boundaries, if
icheck (ITEM 22.5) is greater than 0.
22.2 – controls the insertion of points at ‘expanding’ corners (nins) (I)
This is the number of points per π/2 difference in segment angles to insert at an
expanding corner. Preferably set to an even number. Try two to start with. This
number can influence the shape of profiles somewhat, particularly in high sticking
factor depositions (such as PVD).
22.3 - the minimum number of nodes for which an overlap is indicated (ncover) (I)
In subroutine XSECTR in MOVE_CODE, intersections between surface segments
are determined. If a intersection involves segments which are close to each other,
then the resulting overlap is treated as a loop to be trimmed. If the intersection
involves segments whose indices differ by more than ncover, then the loop is treated
as an overlap (the feature is closing). The number to be entered depends on the
feature depths and the length of the segments (spaces). As a rough guide, set ncover
to the shallowest feature depth divided by spaces (this feature should also be one
which may form a void).
22.4 - flag indicating if the deposited film is to be 'blended' with the underlying films, if it is
the same material (iblend) (I)
If iblend is 1, then material deposited on top of the same material will be converted to
the same region. Usually set to 1. If iblend is set to zero, then a number of region
EVOLVE5.0i.a
29
DRAFT COPY – DO NOT DISTRIBUTE
elements can be generated, and the maximum number will often be exceeded. The
maximum number (nregm) is set in parameters.in.
22.5 - flag which indicates how the time step should be adjusted if the growth vectors
intersect each other or cross material boundaries (icheck) (I)
Intersections of growth vectors with other vectors or material boundaries are checked
for as specified by the value of icheck, as listed below. If the fraction of the nominal
time step required to prevent these intersections is below tfmin then it is reset to
tfmin. The latter logic can lead to loops, but a reasonable value of tfmin is sometimes
required to get results in a reasonable number of time steps and will not affect the
profile too much. EVOLVE always calls bcheck to check for intersections with
material boundariies. Set icheck to the following to check for intersections with:
1,3,5,7 (gcross) other growth vectors
2,3,6,7 (tcross) the trial surface
4,5,6,7 (ccross) the unmoved surface (coord)
icheck=1 call gcross
icheck=2 call tcross
icheck=3 call gcross and tcross
icheck=4 call ccross
icheck=5 call gcross and ccross
icheck=6 call tcross and ccross
icheck=7 call gcross, tcross and ccross
BLOCK 23
Contains 7 items related to the nonlinear solvers used in determining 1) the reference rates
(Levenberg-Marquardt or LM) and 2) the local reaction rates (nonlinear-over relaxation
method or NLORM):
EVOLVE5.0i.a
30
DRAFT COPY – DO NOT DISTRIBUTE
23.1- the maximum number of iterations for convergence in the LM algorithm (maxitr) (I)
This value is only important for simulations that include surface species. A value of
100 usually suffices. If convergence is not obtained in maxitr iterations, then the
program gives you the opportunity to enter in an incremental number of iterations and
the program continues.
23.2 - the tolerance on the surface fractions determined in the LM algorithm (tolr) (R)
This value is only important for simulations that include surface species. A good
starting value is 1.0D-6. It may be necessary to tighten the tolerance (decrease tolr)
for simulations that involve widely different fluxes to the wafer or reaction rates on
the wafer. In any case, the tolerance should be set small enough so that there are no
observable differences in the answers upon decreasing it even more.
23.3 - controls which nonlinear equation solver to use to determine local rate (ismeth) (I)
EVOLVE5.0i.a only supports a value of 1, which indicates the non-linear overrelaxation method, NLORM.
23.4 - the maximum number of iterations for convergence in the algorithm used to
determine local rates (maxit) (I)
A value of 10000 usually suffices for the NLORM. If convergence is not obtained in
maxit iterations, then the program gives you the opportunity to enter in an
incremental number of iterations and the program continues. This is often a good
idea, because the convergence can be very slow for the NLORM, because of the
value of relax used to determine the step size of the independent variables. The value
of relax needed for stability may lead to very slow convergence.
EVOLVE5.0i.a
31
DRAFT COPY – DO NOT DISTRIBUTE
23.5 - the tolerance on the fluxes and surface fractions determined in the algorithm used to
determine local rates (tol) (R)
A good starting value is 1.0D-6. It may be necessary to tighten the tolerance
(decrease tol) for simulations that involve widely different fluxes to the wafer or
reaction rates on the wafer. In any case, the tolerance should be set small enough so
that there are no observable differences in the answers upon decreasing it even more,
keeping in mind the limits of resolution of SEM micrographs. Execution time
increases significantly as tol decreases, so use the loosest (highest) value you can.
Check to make sure that the predicted profile does not depend on tol for your
application; however, the differences in predicted profiles between a tolerance of
1.0D-5 and a tolerance of 1.0D-7 are typically in the thousandths of microns.
23.6 - the relaxation parameter used in the NLORM algorithm (relax) (R)
Set to 1.0 for new problems, but change to 1.25 to achieve faster convergence for
stable problems. If you change it to 1.25 and the problem ’blows up’, reset to 1.0. In
general, lower the value if the problem fails to converge. If the problem fails to
converge for values of relax less than 0.1, then something is probably wrong in the
problem setup. If convergence is not obtained, then EVOLVE allows you to change
the value of relax.
23.7 - indicates whether or not you can change the parameters of the algorithm used to solve
for the local rates (iride) (I)
Set to zero in order to be able to change the relaxation and scaling parameters of the
solution algorithm used to determine the local rates, if the algorithm either fails to
converge or ’blows up’. Set to one to let the program terminate. Usually set to zero,
in order to use values of the relaxation and scaling parameters that will allow for
relatively rapid convergence. Such values also tend to lead to instability. Thus, the
ability to enter new values is critical, particularly if you are most of the way through a
simulation. If ibatch (ITEM 4.1) is one, then iride is set to one.
EVOLVE5.0i.a
32
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 24
24.1 - the uncertainty in angles to be used when comparing angles (perta) (R)
A good value to use is 1.0D-6 radians.
24.2 - the uncertainty in the cosine of angles (pertc) (R)
A good value to use is 1.0D-6.
24.3 - the uncertainty in lengths (perts) (R)
A good value to use is 1.0D-6 microns.
24.4 - the minimum magnitude to be considered nonzero (eps)
A good value to use is 1.0D-12 for double precision installations.
CHEMISTRY BLOCKS
Blocks 25 through 32 define the chemistry of the process. Note that gas phase products that
do not affect the reaction rates, through the reaction rate expressions, do not have to be
tracked. You should plan the input data file so that the components and reactions are in the
order you wish and are internally consistent; e.g., use the same species as reactant number
one throughout the data file.
BLOCK 25
Contains 6 items which specify the numbers and types of species:
25.1 - the number of gas phase (ballistic) reactants (ncomp(1)) (I)
This is the number of gas phase species in the system that participate in the reactions;
i.e, there is no need to include inerts or products which do not influence the reactions
rates. Inert species or non-reacting product species may be tracked if desired, unless
ipvd (ITEM 18.2) is one.
EVOLVE5.0i.a
33
DRAFT COPY – DO NOT DISTRIBUTE
25.2 - the number of chemisorbed surface species (ncomp(2)) (I)
This is the number of species considered to be chemisorbed on the surface. The sum
of the surface concentrations of these species and the vacant site concentration must
add to the total site concentration (sitec).
25.3 - the number of physisorbed species (ncomp(3)) (I)
The chemisorbed species and physisorbed species are tracked differently, because the
sum of the surface fractions of chemisorbed species and the vacant species should
add to one. No such constraint is placed on the physisorbed species.
25.4 - the number of solid phase products (ncomp(4)) (I)
This should be no more than the number of reactions, since each reaction is assumed
to produce no more than one solid product.
25.5 - the number of solid materials present (ncomp(5)) (I)
A value should be entered here, and it is checked against the number of materials in
the original substrate and the materials formed by the reactions-- not the solid phases
formed by the reactions, but rather the materials that these solid phases make up. In
many cases, these are the same, but not necessarily (see EX.4.WSI).
25.6- the number of reactions (nreact) (I)
This is the number of reactions that occur.
BLOCK 26
Contains the names of the ballistic species or collision species in the high-pressure case
(spname) (C), in single quotes and up to 25 characters in length. Thus, this block contains
ncomp(1) entries, on one or more lines. See examples.
EVOLVE5.0i.a
34
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 27
Contains the molecular weights of the ballistic species or collision species (wm).(R). Thus,
this block contains ncomp(1) entries, on one or more lines.
BLOCK 28
Contains the names of the chemisorbed species (spname) (C) in single quotes and up to 25
characters in length. Thus, this block contains ncomp(2) entries, on one or more lines. This
block will not exist if there are no chemisorbed species.
BLOCK 29
Contains the names of the physisorbed species (spname) (C) in single quotes and up to 25
characters in length. Thus, this block contains ncomp(3) entries, on one or more lines. This
block will not exist if there are no physisorbed species.
BLOCK 30
Contains the names of the solid phase products (spname)(C) in single quotes and up to 25
characters in length. Thus, this block contains ncomp(4) entries, on one or more lines.
BLOCK 31
Contains the molar volume (vol) (R) of each solid phase compound in cubic centimeters per
gram mole. This is computed as the ratio of the molecular weight to the density in grams per
cubic centimeter.
BLOCK 32
Contains the number of elements in the solid phase products (nlmnts) (I)
BLOCK 33
Contains the names of the elements in the solid phases (elname) (C), in single quotes and up
to 25 characters long. There are nlmnts entries in this block, on one or more lines.
EVOLVE5.0i.a
35
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 34
Contains the atomic stoichiometric coefficient matrix for the elements in solids phase
products (astoich )(R). There are ncomp(4)·nlmnts items in this Block, entered carefully.
There are nlmnts lines, each with ncomp(4) entries. These entries are the number of atoms of
each element listed Block 33 in solid the solid phase products listed in Block 30. See the
extended explanation in Part III of this manual, in the description of the tungsten silicide
example (EX.4.WSI).
BLOCK 35
Contains information about which materials each reaction occurs on, and which material any
solid phase products become a part of (istoic)(I). Enter this information on two lines, each of
which contains nreact entries. First line contains the material indices of the material that
each reaction occurs on. A zero indicates that the reaction occurs on any material. The
second line indicates which material any solid phase reaction products become part of. The
reaction will occur on the material formed as well as the material indicated by the first line.
BLOCK 36
Holds the transpose of the generalized stoichiometric coefficient matrix (stoich)(R). There
are nspec=ncomp(1)+ncomp(2)+ncomp(3)+ncomp(4) rows in this Block, each with nreact
entries. Thus, each line contains the generalized stoichiometric coefficients of one species
in all reactions. See the extended explanation in Part III of this manual, in the description of
the tungsten silicide example (EX.4.WSI).
KINETICS BLOCKS
Blocks 37 and 38 contain kinetic information.
BLOCK 37
Contains the integer array indicating the type of reaction rate expression used for each
reaction (irtype) (I). This block has nreact entries. Enter 1 for a flux based reaction rate
expression with a constant factor. This is used for simple, reactions with constant (at a given
EVOLVE5.0i.a
36
DRAFT COPY – DO NOT DISTRIBUTE
temperature) values for the sticking coefficients and single reactants. Enter 2 for a general
global (macroscopic) irreversible deposition reaction in terms of reactant pressures, such as
might be observed in kinetic experiments. Enter 3 for a mechanistic sequence, which include
reversible reactions and are written in terms of fluxes and surface fractions. Surface
diffusion can be included for irtype=3. Rate expression types 4 and 5 are similar to irtype=3,
except rates are written in terms of partial pressures or concentrations.
If object or source code is available, users may code their own rate expressions into the
subroutine urate, up to a maximum of nrusrm (as set in parameters.in) user rate expressions.
The irtype of any such reaction would have to be set accordingly here. See the section on
user-definable code in Part III of this manual for more details.
BLOCK 38
Contains nreact (25.6) lines with each line corresponding to one reaction, in the order given
by the stoichiometric matrix from Block 36. The items on each line depend on the relevant
value of irtype set in the previous block. In the following formulae, rparam(i,j) indicates the
ith entry of the jth line of this block.
If irtype is set to 1, the reaction rate may depend on the local flux of each species. As
usually used, the rate is written as a single component reaction with constant sticking factor.
For convenience, the reaction rate form is written more generally:
 rparam( j ,2 ) 
rate( j ) = rparam( j ,1) ⋅ exp −

temp


ncomp (1)
∏ flux(i )
rparam ( j , i + 2 )
i =1
The pre-exponential factor of the flux-based reaction (in practice, usually the sticking factor)
is given as the first entry on the line in corresponding to the reaction with irtype set to 1.
Usually for an irtype of 1, nreact is 1 and the reaction depends on the flux of a single
reactant with a sticking factor between 0 and 1; however, irtype of 1 is always a valid
reaction type and the rate may depend on any or all species fluxes. Each line corresponding
to a reaction with an irtype of 1 will contain ncomp(1)+2 items.
EVOLVE5.0i.a
37
DRAFT COPY – DO NOT DISTRIBUTE
If irtype=2 a global, multicomponent reaction rate expression, which can be expressed in the
following fairly general form, is assumed. The general form of the rate expression for
irtype=2 is
rate( j ) =
 rparam( j ,2 ) ncomp (1)
rparam ( j , k + 2 )
rparam( j ,1) exp −
 ∏ press(k )
temp

 k =1
rparam ( j , 4⋅ rncomp (1)+ 3 )
 ncomp (1)

1 + ∑ term( j , k )
k =1


where
term( j , k ) = rparam( j ,3 + ncomp(1) + 3(k − 1)) ⋅
 rparam( j ,4 ⋅ ncomp(1)3(k − 1)) 
exp −
 ⋅
temp


press(k )rparam ( j ,5 + ncomp (1)+ 3(k −1))
If irtype is 2 for a given reaction, then the rate parameters for the reaction are entered on one
or more lines. As a check when finished, count the number of entries on the line to make
sure it has 4·ncomp(1)+3 entries. Refer to the general rate form given above to guide you
through the items on the line; i.e., for each reaction:
1. The pre-exponential factor of the rate expression. This is the constant in front of
the reaction kinetic expression. The units for this factor must be consistent with
the pressure dependencies such that the deposition reaction rate has units of
gmoles/cm2/sec.
2. The activation energy for the reaction in units of Kelvin (actually enter E/Rg). If
a given reaction is not activated, enter 0.0.
EVOLVE5.0i.a
38
DRAFT COPY – DO NOT DISTRIBUTE
3. The next ncomp(1) positions contain the reaction orders with respect to each
component.
4. The parameters in the denominator of the rate expression are entered as a group of
three for each component. The adsorption constant, the heat of adsorption and the
pressure dependence. Thus there are 3·ncomp(1) entries here for each reactant.
For a constant adsorption constant, enter 0.0 for the heat of adsorption.
5. The exponent on the denominator. Enter 1.0 even if all terms in 4 above are 0.0.
If irtype is set to 3 then nreact (25.6) multicomponent mechanistic reactions from the
following fairly general class are assumed. Fluxes (gmole/cm2/sec) are represented by F,
surface concentrations (gmole/cm2) are represented by S, nd=ncomp(1)+ncomp(2) and
nm=nd+ncomp(3). The multiplications over the chemisorbed surface fractions (nc2) start at
zero because that is the vacant site concentration. The general form of the rate expression for
an irtype of 3 is
rate( j ) =
rparam( j,1)temp
ncomp(2 )
∏
S (k )
rparam( j , 2 )
rparam( j ,k + ncomp(1)+4 )
k =0
∏ S (k )
ncomp(3)
∏
ncomp(1)
∏ F (k )
rparam( j ,k +3)
rparam( j ,nm+6 )
rparam( j ,8+nm+ ncomp(1)+k )
k =0
EVOLVE5.0i.a
⋅
k =1
S (k + ncomp(2))rparam( j ,k +nd +4) −
k =1
rparam( j, nm + 5)temp
ncomp(2 )
 rparam( j,3) 

exp −
temp


 rparam( j, nm + 7) 

exp −
temp


ncomp(3)
∏ S (k + ncomp(2))
ncomp(1)
∏ F (k )
rparam( j ,nm+7+k )
k =1
rparam( j ,8+nm+ nd + k )
k =1
39
DRAFT COPY – DO NOT DISTRIBUTE
As a check when finished, count the number of entries on each line. They all should have
2(nm)+7 entries. Refer to the general rate form given above to guide you through the items
on each line (reaction):
1. The pre-exponential factor of the forward rate expression. This is the constant in
front of the forward kinetic expression. The units for this factor must be
consistent with the flux and surface coverage dependencies such that the
deposition rate has units of gmoles/cm2/s.
2.
Rate expressions often feature temperature raised to some power. The power is
entered. Enter 0.0 for temperature independence.
3. The activation energy for the forward reaction in units of Kelvin (actually enter
E/Rg). If a given reaction is not activated, enter 0.0.
4. The next ncomp(1) positions contain the reaction order with respect to the flux of
each component.
5. The next ncomp(2) positions are the dependencies of the forward rate on surface
fractions of chemisorbed species.
6. The next ncomp(3) positions hold the dependencies of the forward rate on the
surface fractions of physisorbed species.
7. The above 5 steps are repeated for the reverse reaction.
8. The total site density, upon which the reaction is based, is then added as the final
parameter.
If irtype(i)=4, then a mechanistic expression will be used, written in terms of concentrations
and surface concentrations. For irtype(i)=5, a mechanistic expression will be used, written in
terms of pressures and surface concentrations.
TRANSPORT BLOCKS
Blocks 39 through 42 contain information on the flux distributions for the ballistic species.
Blocks 43 and 44 contain information on surface diffusion.
EVOLVE5.0i.a
40
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 39
Contains the type of flux distribution model used (ipdf) (I) for each of the ncomp(1) ballistic
species.
BLOCK 40
Contains the flux distribution parameters (fparam) (R) for each of the ncomp(1) ballistic
species. This block will consist of ncomp(1) lines, the ith line with nfp(i) real number values
that characterize the source flux of the ith ballistic species, with nfp(i) determined by the
corresponding value of ipdf (Block 39). In the following formulae, fparam(i,j) denotes the jth
entry of the ith row (or the jth parameter of the flux of the ith ballistic species).
For ipdf set to 0, 1 or 2, a single parameter characterizes the flux distribution. For ipdf equal
to or greater than 3, the number of parameters for the model, nfp(ipdf), is entered through
udist, a user-defined subroutine. (See the section on user-definable code is Part III of this
manual.) The default version of udist is an example of how to use UDIST to load flux data
from a file.
For ipdf set to 0, this is the cosine distribution, and is appropriate for CVD processes, (x is in
g ( x ) = cos fparam (i ,1)−1 ( x )
radians):
For ipdf set to 1, fparam (i,1) is the parameter of the generalized cosine distribution
[
]
g ( x ) = fparam(i,1)sin 2 ( x ) + cos 2 ( x )
−1
If fparam (i,1) is greater than 1, then the distribution is narrower than the cosine and there is
’beaming’. If fparam (i,1) is less than 1, then the distribution is wider than the cosine
distribution. This is often used to model fluxes in sputter deposition. To obtain cosine
distributions, set fparam =1.0, or use an ipdf of 0.
For ipdf set to 2, fparam (i,1) is the parameter (standard deviation) of the exponential
distribution (x is in radians):
EVOLVE5.0i.a
41
DRAFT COPY – DO NOT DISTRIBUTE



−x


(
)
(
)
g x = 2π ⋅ fparam i,1 ⋅ exp
2
 2 fparam (i,1) 

2
−1
2
This is often used to model ion fluxes in a plasma.
For ipdf equal to 3, the flux distribution information is stored in a file whose name is
requested during execution. (This overrides ibatch.) The information should be given as the
relative flux at specific angles from the normal (theta), and represents g(x) above in tabular
form. Start with theta of zero and continue through π/2. EVOLVE will stop reading the file
upon reading a theta value greater than π/2.
For ipdf>3, a user-defined distribution function is used. It is defined in subroutine udist. The
number of parameters can be up to nfpm, which is set in parameters.in. This can only be
done if you have source or object code. See the section on user-definable code in Part III of
this manual for more details.
BLOCK 41
An array of flags which indicate if each species can re-emit specularly (ispclr) (I). This
block consists of one line with single integer entries for each of the ncomp(1) ballistic
species. Set an entry to 0 if a species should not be modeled specularly. The models used to
describe the conversion of specular to diffuse species must be supplied by the user in
subroutine ubeta. See Example 11 in Part III of this manual for an extended explanation of
specular transport models..
BLOCK 42
Contains 6 parameters used in the integrations of the flux distribution functions.
EVOLVE5.0i.a
42
DRAFT COPY – DO NOT DISTRIBUTE
(out of solid)
Z
θ
φ
X
(along profile)
Y
(along trench)
Figure 2 : EVOLVE’s coordinate system
42.1 - the number of intervals about the z-axis used in azimuthial integrations (nphi) (I)
EVOLVE uses a local coordinate system with the z-axis pointing out of the solid.
nphi is the number of angular increments in the domain of the azimuth angle, φ, from
zero to π, for the purposes of integration. The maximum value for nphi (nphim) is set
in parameters.in. Usually, a value of 20 or 30 is satisfactory.
42.2 - the number of angular intervals measured from the z-axis to the plane tangent to the
surface (the x-y plane) used in zenith integrations (ntht) (I)
ntht is the number of angular increments in the domain of the zenith (polar) angle θ,
from zero to π/2. The maximum value for ntht (nthtm) is set in parameters.in.
Usually, a value of 20 or 30 is satisfactory; however, for flux distributions which are
sharply peaked, a higher value is recommended.
42.3 - the number of intervals used in integrations over surfaces (ng) (I)
This is the number of steps used to integrate over surfaces to obtain the differential
transmission probabilities in infinite trenches. The maximum value for ng (ngm) is
set in parameters.in. Usually, a value of 10 is satisfactory.
EVOLVE5.0i.a
43
DRAFT COPY – DO NOT DISTRIBUTE
42.4 - the maximum number of reflections for specular species (nrflct) (I)
This is the maximum number of reflections through which a specular species may be
tracked. Moieties that reflect more than this number without being converted to
reactive flux are lost to the simulation, unless the user deals with them in the userdefinable routine ubeta. A value of nrflct of 20 allows the vast majority of moieties
to be tracked to reactive conversion or exit of the feature. For moieties which enter at
a very high angle (from the normal to the wafer surface, much larger values may be
needed, depending upon the specular to reactive conversion models used. The
maximum value for nrflct (ntrfltm) is set in parameters.in.
42.5 - a flag indicating whether to test the flux computations for an inert, diffusely emitting
species (notest) (I)
BLOCK 43
Contains two parameters associated with surface diffusion.
43.1 - flag to indicate the driving force for surface diffusion (idiff) (I)
Set to 0 for no surface diffusion, independent of other values. Set to 1 for surface
concentration driven surface diffusion. Set to 2 for curvature driven surface
diffusion. Set to 3 for combined concentration and curvature driven surface
diffusion. In order to use concentration driven surface diffusion, your model must
include surface species.
43.2 - minimum diffusivity (dmin) (R)
If the surface diffusivities entered are lower than this value, then surface diffusion is
ignored. In general use 0.0, since 1.0D-12 is added to the value in EVOLVE before
comparing with values of the surface diffusivities of each surface species. Units are
cm2/sec.
EVOLVE5.0i.a
44
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 44
Contains a number of lines, each containing a pair of surface diffusion parameters (dparam).
The number of diffusivity parameter pairs is determined by the value of idiff (ITEM 43.1).
For idiff=0, no values are required.
For idiff=1, then there are
nsurf=[ncomp(2)+ncomp(3)]·ncomp(5) pairs; i.e., a pair for each surface species on each
material. The order in which the parameters pairs are read corresponds to the species order
in ncomp(2) and ncomp(3); i.e., the first ncomp(5) pairs correspond to the first chemisorbed
species. For idiff=2, there ncomp(5) pairs, representing the curvature driven surface
diffusivity of each material. For idiff=3, there are (1+nsurf)·ncomp(5) pairs. The first
ncomp(5) pairs correspond to the curvature driven diffusivity.
The first entry in each pair is the pre-exponential factor for a diffusivity. The second item in
each pair is the activation energy for diffusion (actually enter E/Rg for units of Kelvin). If a
constant value is desired, enter that constant for the preexponential factor and zero for the
activation energy. These diffusivities are in cm2/sec.
OPERATING BLOCKS
Blocks 45 through 47 contain information about the operating conditions.
BLOCK 45
Contains the temperature, in Kelvin(temp) (R) and pressure, in torr (tpress) (R).
BLOCK 46
Contains flags for each of the ncomp(1) ballistic species indicating how the operating
conditions for the deposition are entered (ioper)(I).
Set ioper to 1 for pressure in torr, set to 2 for concentrations in gmole/cm3 and set to 3 for
fluxes in gmole/cm2/sec. These operating condition flags are entered in the order of their
species numbers, which were assigned when the species information was read into the
program.
EVOLVE5.0i.a
45
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 47
The values for the operating conditions (oper)(R). After being read by the program, in any
form, the complementary values are computed; e.g., if the pressure is entered, the
concentration and flux are computed. The relationships used are those for the equivalent
ideal gas; if the flux of a very directional species is specified on input, the partial pressure of
a Maxwellian gas which provides that same flux is computed.
EVOLVE5.0i.a
46
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
hip.in
This input file provides additional parameters for high-pressure deposition process
simulation.
BLOCK 1
1.1
The height of the solution domain (uhigh) (R).
This value should be selected large enough in order that it does not have significant
effects on the simulated film conformality. Three microns is a good point to start.
1.2
The relaxation factor used in iteration procedure (alpha) (R).
This parameter affects the coverage of the program somewhat. Smaller values of
alpha lead to better coverage, but use more iteration steps. EVOLVE takes the input
value to begin the simulation. If the equations do not converge after each hundred
iterations, EVOLVE will reduce the value of alpha by a factor of four. The
maximum number of the iteration is set to be five hundred.
BLOCK 2
The total pressure of the deposition system considered (ptotal) (R)
This parameter is used in estimating the species diffusivities in the gas phase. If the
user selects to input species binary diffusivities instead of calculating the effective
diffusivities in the mixture, this entry is dummy.
EVOLVE5.0i.a
47
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 3
3.1
The number of the inert carrier gases in the system (inert) (I).
The number of the species whose concentration distributions need to be calculated is
read in from evolve.in as ncomp(1) (Data Item 25.1). The inert carrier gases read in
from here will not be calculated during the simulation, although the will be used for
the effective diffusivity estimations.
BLOCK 4
The molecular weights of the inert gases (wm) (R). This block contains inert (Data Item 3.1)
entires. If inert is zero, this block then does not exist.
BLOCK 5
The partial pressures of the inert gases (press) (R). This block contains inert (Data Item 3.1)
entries. If inert is zero, this block then does not exist.
BLOCK 6
6.1 -
The number of the gas phase reactions (nhomrx) (I).
BLOCK 7
The types of the reaction rate expression used for each gas phase reaction (ihotyp) (I). This
block contains nhomrx (Data Item 6.1) entries. If nhomrx is zero, then this block does not
exist. This will supercede the item of the same name entered in evolve.in.
BLOCK 8
The transpose of the generalized stoichiometric coefficient matrix (hstoi) (I). As described
in evolve.in, there are ncomp(1) rows in this block, each with nhomrx (Data Item 6.1) entries.
Thus, each line contains the generalized stoichiometric coefficients of one species in all
reactions. If nhomrx is zero, then this block does not exist.
EVOLVE5.0i.a
48
DRAFT COPY – DO NOT DISTRIBUTE
BLOCK 9
This block contains nhomrx (Data Item 6.1) lines. The entries in each line depend on the
relevant value of ihotyp (Block 7). Users may refer to the evolve.in detailed description. If
nhomrx is zero, then this block does not exist.
BLOCK 10
10.1 - A flag for the method of estimating species diffusivities in the gas phase (idest) (I).
If idest is zero, the user selects to use species binary diffusivities as the diffusivities
in the mixture instead of calculating locally. The value of one indicates that
diffusivity estimations are needed and the following blocks are the parameters needed
for those estimations.
BLOCK 11
The contents of this block depend on the value of idest (Data Item 10.1).
If idest is zero, this block contains species binary diffusivities (bidiff) (R). In this case, there
are ncomp(1) (evolve.in Data Item 25.1) entries.
If idest is one, this block contains characteristic Lennard-Jones lengths of the gase phase
species (R). In this case there will be ncomp(1)+inert (evolve.in Data Item 25.1 + hip.in
Data Item 3.1) entries. The order of these lengths should be those of the ncomp(1) gas
species followed by those of the inert inert gases.
BLOCK 12
The characteristic energies of interaction of gas phase species (R). This block contains
ncomp(1)+inert entries. The order of these energies should be those of the ncomp(1) gas
species followed by those of the inert inert gases.
EVOLVE5.0i.a
49
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
hpcode.in
This input file provides memory limits for the high pressure finite element routines. In an
effort to make the input format user-friendly, this file has been designed to use
value/keyword pairs for input. Associated with each input is a unique string of alphabetic
characters that is used to distinguish it from all other inputs.
The file contains two types of lines: value/keyword pairs and comments. Value/keywords
lines are distinguished by starting with numeric characters (defined as digits, decimal points,
positive and negative signs.) They contain a real or integer value followed by the keyword
string1. Comments lines may be blank or may start with any non-numeric characters.
Memory Limits
Note: All memory limits are of integer type.
Limit/Keyword: NELEMX
The maximum number of triangles available to represent the solution domain.
Limit/Keyword: IBCMX
The maximum number of boundary elements available to represent the boundaries of the
solution domain.
Limit/Keyword: CODEMX
1
On some UNIX systems, the keyword string may need to be enclosed in single quotes to be recognized.
EVOLVE5.0i.a
50
DRAFT COPY – DO NOT DISTRIBUTE
The maximum number of points in the mesh, including T6 midpoints, available to represent
the solution domain.
Limit/Keyword: LENSUF
The bounds of a work array used to trianglate the solution domain. Should be equal to or
less than IBCMX.
Limit/Keyword: IBCMX
The maximum number of boundary elements available to represent the boundaries of the
solution domain.
Limit/Keyword: MXT
The maximum number of triangles available to represent the solution domain.
Limit/Keyword: MXV
The maximum number of mesh vertices available to represent the solution domain.
Limit/Keyword: MXB
The maximum number of boundary elements available to represent the boundaries of the
solution domain.
Limit/Keyword: MXJB
The maximum number of edges, boundary and internal, available to represent the mesh of
the solution domain.
EVOLVE5.0i.a
51
DRAFT COPY – DO NOT DISTRIBUTE
Limit/Keyword: LENW
The dimension of the working array used by the meshing algorithm. Should be at least 200 +
6(3MXV + LENSUF).
EVOLVE5.0i.a
52
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
reflow.in
This input file provides thermophysical properties, simulation parameters, and memory
limits for the viscous thermal flow process simulations. In an effort to make the input format
user-friendly, this file has been designed to use value/keyword pairs for input. Associated
with each input is a unique string of alphabetic characters that is used to distinguish it from
all other inputs.
The file contains two types of lines: value/keyword pairs and comments. Value/keywords
lines are distinguished by starting with numeric characters (defined as digits, decimal points,
positive and negative signs.) They contain a real or integer value followed by the keyword
string2. Comments lines may be blank or may start with any non-numeric characters.
Thermophysical Properties:
Property: Viscosity
Type: Real
Keyword: VISCOSITY
This entry specifies the dynamic viscosity of the film under the flow conditions in poise.
Property: Surface Tension
Type: Real
Keyword: SIGMA
This entry specifies the surface tension of the film under the flow conditions in dyne/cm.
Property: Density
Type: Real
Keyword: DENSITY
This entry specifies the mass density of the film under the flow conditions in g/cm3.
Simulation Parameters
2
On some UNIX systems, the keyword string may need to be enclosed in single quotes to be recognized.
EVOLVE5.0i.a
53
DRAFT COPY – DO NOT DISTRIBUTE
Parameter: Reflow Material Index
Type: Integer
Keyword: RFINDX
This is the position in the “materials.in” file indicating the substance to be reflowed. It may
correspond to any material with the exception of the “Void” material.
Parameter: Penalty Parameter, ε
Type: Real
Keyword: EP
This is the penalty function parameter, ε, used in the finite element algorithm. It is a small
number, typically .10-9
ε
-4
10 .
Memory Limits
Note: All memory limits are of integer type.
Limit/Keyword: NELEMX
The maximum number of triangles available to represent the film.
Limit/Keyword: IBCMX
The maximum number of boundary elements available to represent the boundaries of the
film.
Limit/Keyword: CODEMX
The maximum number of points in the mesh, including T6 midpoints, available to represent
the film..
Limit/Keyword: LENSUF
EVOLVE5.0i.a
54
DRAFT COPY – DO NOT DISTRIBUTE
The bounds of a work array used to trianglate the film. Should be equal to or less than
IBCMX.
Limit/Keyword: IBCMX
The maximum number of boundary elements available to represent the boundaries of the
film.
Limit/Keyword: MXT
The maximum number of triangles available to represent the film.
Limit/Keyword: MXV
The maximum number of mesh vertices available to represent the film.
Limit/Keyword: MXB
The maximum number of boundary elements available to represent the boundaries of the
film.
Limit/Keyword: MXJB
The maximum number of edges, boundary and internal, available to represent the mesh of
the film.
Limit/Keyword: LENW
The dimension of the working array used by the meshing algorithm. Should be at least 200 +
6(3MXV + LENSUF).
EVOLVE5.0i.a
55
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format : parameter.in
10
nbm is the maximum number of ballistic species
10
nim is the maximum number of intermediate surface species
5
nspm is the maximum number of solid phases involved in reaction
5
nem is the maximum number of atomic species (elements) in the
solid phases
15
nrxm is the maximum number of reactions
10
nratem is the maximum number of reaction rate models
4
nfpm is the maximum number of flux distribution parameters in the
pdfs
5
npdfm is the maximum number of flux distribution models
90
mxdata is the maximum number of flux data points which can be read
in user file
4
nbpm is the maximum number of parameters in the models for
specular reemission (beta)
5
nbetam is the maximum number of models for specular reemisson
4
nypm is the maximum number of parameters in the models for
sputter yield
5
nyldm is the maximum number of models for sputter yield
551
nsmax is the maximum number of surface segments (elements).
10
ninsm is the maximum number of nodes to be inserted at expanding
corners.
10
npm is the maximum number of plots
20
intdim is the maximum number of overlaps (intersections)
100 nregm is the maximum number of regions.
30 nmtlsm is the length of the array used to store material names
20
ngm is maximum number of interation increments for geometry
6
nspdm is the maximum numer of integration increments for speed
90
nphim is the maximum number of integration increments for phi
180
nthtm is the maximum number of integration increments for theta
100
nrfltm is the maximum number of specular reflections
3
ngpmax is the dimension of parameter vector of length NP, used in
riemann_code
**************************************************************
5
nstip is the unit number for the standard input (keyboard)
6
nstop is the unit number for the standard output (screen)
3
nfinp is the unit number of the input file.
4
nftop is the unit number of the text output file.
8
nfgop is the unit number of the graphical output file
9
nfpop is the unit number of the profile output file
10 nflop is the unit number of the file holding the last two profiles
11 nfcop is the unit number of the file holding the corrections from
cycler (convergence info)
12 nfdip is the unit number of the datex ’geometry’ input file
13 nfdop is the unit number of the datex ’geometry’ output file
14 nfsop is the unit number of the datex ’simulation’ output file.
15 nfssp is the unit number of the file for the current substrate
16 nfdbp is the unit number of the file for backing up geometry data
17 nfdmp is the unit number of the file for geometry data in move
18 nfsbp is the unit number of the file for backing up sim. data
EVOLVE5.0i.a
56
DRAFT COPY – DO NOT DISTRIBUTE
19
21
22
23
24
25
nfsmp
nfuup
nfdvp
nfrsp
nflow
nfhip
is
is
is
is
is
is
EVOLVE5.0i.a
the
the
the
the
the
the
unit
unit
unit
unit
unit
unit
number
number
number
number
number
number
of the file for sim. data in move
for user defined models & integers
of the file for writing dep. variables
of the file for writing scaled rates
of the file for reading reflow.in
for reading EVHIP files
57
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
move.in
This input file controls display of output in moving algorithm solutions, and defines moving
algorithm control parameters
BLOCK 1
The following items are ignored by EVOLVE for values less than, or equal to 0.
1.1 -
Equivalent to iwf, but confined inside mover_code, iwe (I)
1.2 -
Equivalent to iws, but confined inside mover_code, iwm (I)
1.3 -
Equivalent to iws, but confined inside vector_code,iwv (I)
1.4 -
Equivalent to iws, but confined inside xsector_code, iwx (I)
1.5 -
Equivalent to iws, but confined inside check_code, iwc (I)
1.6 -
Equivalent to iws, but confined inside mover_code and defreg_code, iwd (I)
1.7 -
currently not used, iwu (I)
1.8 -
see descriptions in evolve.in. iwf (I)
BLOCK 2
2.1 -
for use in mover_code, see descriptions in evolve.in. ipause (I)
2.2 -
for use in mover_code, see descriptions in evolve.in. isloop (I)
2.3 -
for intermediate profile inspection. ispave (I) (1-generate profile graph)
2.4 -
for use in mover_code, see description in evolve.in. icheck (I)
EVOLVE5.0i.a
58
DRAFT COPY – DO NOT DISTRIBUTE
2.5 -
for use in move_code, see description in evolve.in. nins (I)
BLOCK 3
3.1 -
critical arc length for void formation. arccrt (R)
3.2 -
nominal scaling factor. sfactr (R)
EVOLVE5.0i.a
59
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
riemann.in
This input file controls the Riemann algorithm solutions
Block 1
1.1 -
istring(I), a specific segment number to apply this block to. Non-positive values
apply to all segments.
1.1 -
iws(I) for use in riemann_code, see description in evolve.in.
1.2 -
iwf(I) for use in riemann_code, see description in evolve.in.
Block 2
This block is unlike other blocks and uses the keyword system used in the hpcode.in and
reflow.in files. It is entirely optional, and for most simulations, should not be present. It may
be used to reset the value for angcrt, the smallest angle between adjacent segments by which
the Riemann problem may divide to obtain an angular growth rate derivative.
The entire block is composed of a real value followed by white space and the string
‘ANGCRT’ enclosed in single quotes. This value of angcrt, if present, supercedes the
default value of angcrt used within riemann_code of 0.01 radians.
This block is used almost exclusively for reflow simulations.
EVOLVE5.0i.a
60
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
specular.in
This input file, read by the default user-definable routine ubeta, contains information about
which model, model parameters, and material are used for specular transport. Note: The
file format give here is valid only as long as it is not redefined in the routine ubeta. A
particular user with object or source code who modifies ubeta may completely alter or
eliminate the use of this file.
The following set of 5 blocks is repeated, in order, once for each specular species.
Block 1
A string used to identify to the user the model of specular reflection EVOLVE is to employ.
(C)
Block 2
The name of the specular species, as given in evolve.in (C)
Block 3
A string used to identify the material, as in material.in, from which the species is reflecting.
‘All’ or ‘all’ is reserved for species which reflect identically off of all materials. (C)
Block 4
The number of model parameters employed by this model. The number must be greater than
or equal to 1. (I)
Block 5
The appropriate model parameter on one line. (R)
EVOLVE5.0i.a
61
DRAFT COPY – DO NOT DISTRIBUTE
Block 6
The particular string ‘Done’ or ‘done’ is used to indicate that no more information about
specular species is to be read. Any lines after this block are silently ignored.
EVOLVE5.0i.a
62
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
sputter.in
This input file, read by the default user-definable routine uyield, contains information about
which model, model parameters, and material are used for specular transport. Note: The
file format give here is valid only as long as it is not redefined in the routine uyield. A
particular user with object or source code who modifies uyield may completely alter or
eliminate the use of this file.
The following set of 5 blocks is repeated, in order, once for each sputtering species/sputtered
material pair.
Block 1
A string used to identify to the user the species/material sputtering model that EVOLVE is to
employ in yield calculations. (C)
Block 2
The name of the sputtering species, as given in evolve.in (C)
Block 3
A name of the sputtered material, as given in material.in, that is sputtered by the species
listed in Block 2. The particular string ‘All’ is reserved for species which sputter all materials
using the same model. (C)
Block 4
The number of model parameters employed by this model. The number must be greater than
or equal to 1. (I)
EVOLVE5.0i.a
63
DRAFT COPY – DO NOT DISTRIBUTE
Block 5
The appropriate model parameters, listed on one line. If your model does not require any
parameters, set Block 4 to 1 and list a dummy parameter on this line. (R)
Block 6
The particular string ‘Done’ or ‘done’ is used to indicate that no more information about
specular species is to be read. Any lines after this block are silently ignored.
EVOLVE5.0i.a
64
DRAFT COPY – DO NOT DISTRIBUTE
Input File Format:
materials.in
This data file defines the materials and is required for all simulations. It provides a list of
material names and some nominal starting values for each material’s molar volume, surface
energy and site density. Materials may be added to the file, but the user is cautioned that a
non-standard materials.in file is a potential source of errors if unknowingly used in a
simulation not designed using that particular file.
’Silicon ’
’Polysilicon ’
’Silicon_Dioxide ’
’Silicon_Nitride ’
’Aluminum ’
’Aluminum_Nitride ’
’Titanium ’
’Titanium_Nitride ’
’Titanium_Silicide ’
’Tungsten ’
’Tungsten_Nitride ’
’Tungsten_Silicide ’
’Titanium-Tungsten ’
’Ti-W-N ’
’Copper ’
’Molybdenum’
’Metal ’
’Dielectric ’
’Resist ’
’Substrate ’
’Deposit ’
’Void ’
’Unknown ’
’
’
EVOLVE5.0i.a
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
10.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
1000.
2.5d-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
2.5D-9
65
DRAFT COPY – DO NOT DISTRIBUTE
Installation Guide
Requirements:
Every effort has been taken to make EVOLVE5.0i.a conform to ANSI FORTRAN 77 and
ANSI C standards. The motivation for this has been to make the code as portable as
possible. It has been successfully compiled and run in many different UNIX environments.
To the best of our knowledge, there are no issues that outright prevent the code from being
compiled and run successfully on any architecture for which ANSI FORTRAN and ANSI C
compilers are available.
This installation guide is written for implementation on UNIX workstations. EVOLVE has
specifically been written to allow its integration with other programs; i.e., the routines which
simulate dep/etch/reflow processes can be used as a standalone simulator or as a subroutine
called by another program (e.g., SAMPLE). This Installation Guide is for the standard
distribution, for which EVOLVE is a standalone program. The data files required are
described in the User’s Guide.
The Contents of the Distribution:
The EVOLVE5.0i.a distribution is composed of three main directories: bin, examples,
and code. bin will hold the binary which you will compile, examples holds a large
number of sample simulations which are ready to be run (see Distributed Examples), and
code holds the source code of EVOLVE5.0i.a.
EVOLVE5.0i.a is distributed in the standard tarred, gzipped format. Tools for unzipping and
untarring files are widely available. For example, the program gunzip from the GNU
Project, and the SYSTEM V UNIX utility tar may be used. It is assumed that an
explanation of the expansion of the archive is unnecessary.
The tar file will be named something along the lines of evolve5.0i.a.tar.gz.
EVOLVE5.0i.a
66
DRAFT COPY – DO NOT DISTRIBUTE
Building EVOLVE
Building EVOLVE5.0i.a requires ANSI compliant FORTRAN 77 and C compilers. Further,
there compilers must be interoperable, such that object code and symbol tables created by the
two compilers be compatible. Most commercial compiler suites fulfill this requirement. The
GNU Project has compilers available which are (as of 4/1999) interoperable.
Configuration
Upon moving into the code directory, you will see that EVOLVE is set up to use the make
utility. It is highly recommended that you use this utility, as compiling EVOLVE by hand
may be difficult and is unsupported. The file local_compile has been set up as a central
location for configurational changes. Included in the distribution are several versions of this
file, each prepared for a different set of compilers. Available are local_compiles for
Sun, HP, and DEC native compiler suites and for the GNU project compilers. Using one of
these files as a starting point for configuration will make the process much easier.
local_compile
This file contains make definitions which you must customize to work with your
compilers. These definitions are:
CC and F77 which should be set to the path names to your compilers.
FOFLAGS and COFLAGS should be set to any optimization flags you wish to use in
the compilation.
FLIBS which should be set to the F77 flags that cause linking to the appropriate
libraries. The math and C libraries must be linked to, as must any libraries required
as a result of other compiler flags. (e.g., If optimizing is turned on above, an
optimization library may require linking.)
FUFLAGS and CUFLAGS should be set to cause the F77 and C compilers to output
the same format to the symbol table. See the section below: Compiler matching.
EVOLVE5.0i.a
67
DRAFT COPY – DO NOT DISTRIBUTE
FDATAFLAGS and CDATAFLAGS should be set adjust the default word length and
alignment rules of the compilers in the unlikely event that those of the compilers do
not match each other.
FCFLAGS and CCFLAGS should be set cause the compilers to skip the linking stage.
In each case, this is almost always -c. Additionally, any compiler specific flags may
be set here, such as a range checking flag or an ANSI C flag.
You most likely will not need to change any of the remaining make variables, but they are
included here for completeness.
FDFLAGS and CDFLAGS should be defined as the debugging flags for the compilers.
These may be left blank if not compiling in debug mode.
FLOUT is the flag that directs the F77 compiler to output to a specific filename. It is
most likely –o.
FLFLAGS is a catch-all for any F77 flags that the linker needs to properly do its job.
It is included solely for non-standard compiler/linkers and should remain blank in
almost all cases.
Compiling and linking
After you have established local_compile you may proceed to build EVOLVE by
running make. The default make target should compile and link EVOLVE, placing the
binary executable in the bin directory.
Troubleshooting the Build:
Common problems and their solutions:
•
Cannot execute the make command.
Verify make is in your path. Use an explicit pathname if necessary.
EVOLVE5.0i.a
68
DRAFT COPY – DO NOT DISTRIBUTE
•
make fails to compile any object files.
You have no path to the compilers. Alter local_compile to use explicit
pathnames.
Permission are set incorrectly. Change the ownership and group status of the
distribution to belong to you. Add read permissions on the code files and write
permissions to the directories within code.
•
symbol not found or code unsatisfied errors during linking
Your FORTRAN and C compilers are using different conventions regarding
underscores and function names in the symbol table. See the section on Compiler
matching.
EVOLVE5.0i.a
69
DRAFT COPY – DO NOT DISTRIBUTE
Compiler matching
This may be the most difficult part of configuring EVOLVE. Although an F77 and C
compiler may produce completely interoperable binary code, they may not use the
same convention to place the lookup names in the symbol table- even compilers from
the same suite can do this!
Often, symbol names are simply the function or subroutine names prefixed or
postfixed with one or more underscores, but this is compiler dependent. Thus, the C
function FOO(BAR) may end up as __FOO_ in the symbol table, but the F77 code
CALL FOO(BAR) may try to reference _FOO_, depending on the compiler used.
Your job is to read the compiler documentation, looking for the flags that alter this
behavior. When you find them, you must decide which to use. Use any errors
returned by the linking stage to guide you. Routines with names regarding memory
allocation or sizing of arrays may most often be assumed to be C routines. Also, F77
routine names are limited to six characters. For example, if part of the output from the
linking stage is:
Unresolved reference: evolve_size_
first encountered in evolvr.o
Unresolved reference: mover
first encountered in mv_allocate.o
Here evolve_size and mv_allocate are C functions, and evolvr and mover
are F77 routines. Obviously, by default, the F77 compiler postfixes an underscore, or
it would not be looking for one at the end of a routine name. Also apparent is the fact
that the C compiler does not add an underscore.
Thus, any flag which causes the C compiler to add an underscore, or causes the F77
compiler to not add an underscore is the appropriate one. (Don’t do both!)
EVOLVE5.0i.a
70
DRAFT COPY – DO NOT DISTRIBUTE
Distributed Examples
EVLP examples
EX.1.PVD
PVD
EX.1C.PVD
PVD in a feature of circular cross section
EX.2.CVD
Simple CVD
EX.2C.CVD
Simple CVD in a feature of circular cross section
EX.3.WF6
LPCVD Tungsten
EX.4.WSI
LPCVD Tungsten silicide
EX.5.SURF
PVD with surface diffusion
EX.6.PECVD
PECVD
EX.7.CURVE
PVD with curvature driven surface diffusion
EX.7C.CURVE
PVD in a feature of circular cross section with
curvature driven surface diffusion
EX.8.COLL
Collimated PVD
EX.8C.COLL
Collimated PVD in a feature of circular cross section
EX.9.POLY
Polysilicon deposition into high a high aspect ratio
trench
EX.10.TIW
Sputter deposition of Ti-W
EX.11.SPEC
PVD with specular transport
EX.12.IPVD
IPVD sputtering of TaN
EX.13.ETCH
Anisotropic reactive ion etch
EVOLVE5.0i.a
71
DRAFT COPY – DO NOT DISTRIBUTE
EX.13C.ETCH
Anisotropic RIE in a feature of circular cross section
EVHP examples
EX.14.HPCVD
High-pressure CVD deposition of SiO2 from TEOS
EX.14.HPCVD
High-pressure CVD deposition of SiO2 from TEOS
with an alternate chemical model
EVFLOW examples
EX.16.FLOW
EVOLVE5.0i.a
BPSG glass film reflow
72
DRAFT COPY – DO NOT DISTRIBUTE
How to execute EVOLVE
It is recommend that you run EVOLVE as follows:
1. Include the path to evolve/bin in your path. (Add to path statement in .login,
.cshrc, or other such initialization file. Alternatively, type
set path = ($path PATHNAME)
at the UNIX prompt, where PATHNAME is the full path to evolve/bin.
2. Copy examples from the evolve/examples subdirectory into your file space. Keep
an unchanged set of the example files that are distributed with EVOLVE in a safe
place.
3. Run EVOLVE by typing EVLP at the UNIX prompt. In the example directory,
the runit script may be used.
Keep in mind that this version of EVOLVE does not ask for input file names unless you
specify in evolve.in. All major *.in input filenames are preassigned inside source code. As
described in the User’s Guide, these *.in files are: evolve.in, chooser.in, move.in,
riemann.in, materials.in, (and sometimes include sputter.in, specular.in, hip.in, and
reflow.in). For your convenience, I have placed every set of these files in each example
subdirectory
EVOLVE5.0i.a
73
DRAFT COPY – DO NOT DISTRIBUTE
Frequently asked questions and answers
The following Q&A were compiled by our graduate students during their learning of
EVOLVE. We hope this will help those who just start to learn EVOLVE. If you have
discovered something in your use of EVOLVE that you feel would be particularly beneficial
to the EVOLVE user community, please contact the authors.
GENERAL QUESTIONS
Q: What is the best way to start learning EVOLVE?
A: The best way to start learning evolve is to get copies of examples and to run them ’as is’
and then change the parameters to see what effect this has, but don’t change more than 2
parameters at a time in case you get an error. It is best to put examples in their own folders.
Q: What files do I need in my folder for running an example?
A: The files always required are:
evolve.in,
chooser.in,
riemann.in,
materials.in, and move.in. The files which are sometimes required are:
specular.in (for simulations employing specular species), sputter.in (for
simulations employing sputtered materials), hip.in (for high pressure simulations only),
hpcode.in (for high pressure simulations only), and reflow.in (for reflow simulations
only).
TROUBLESHOOTING
Q: If I run into fatal errors (i.e. the program won’t run), what can I do to try to get EVOLVE
to run?
A: Try changing the write level (iwf and iws) to 2. Then spend time carefully going through
the header information which EVOLVE prints out at the start of a run. 90% of error may be
found by careful review of the headers! Are the reactions/species/materials that EVOLVE
outputs really the ones you think you put in? Are the flat-wafer calculations reasonable?
EVOLVE5.0i.a
74
DRAFT COPY – DO NOT DISTRIBUTE
Q: What are some common fatal errors? (Why won’t my simulation even start?)
A: Some common fatal errors are:
•
TYPOS! The EVOLVE input format can be quite demanding, so verify everything in the
header outputs. Some common typos are:
•
One of the large blocks of numbers, such as the stoichiometry matrix (stoic) or the
kinetic expression parameters (rparam) has the wrong number of entries.
•
Inconsistencies in material names between evolve.in., materials.in, and any
datex file used for input. “Silicon_Dioxide” is not the same as “Silicon_dioxide”!
•
Spacing in the input datex file. Unfortunately FORTRAN 77’s record-based input
routines are not very forgiving, so check your datex file’s format carefully against
one of those included in the examples directory.
•
ncomp(1) is not equal to the number of ballistic species for low pressure simulations.
•
ncomp(1) is not equal to the collision species for high pressure simulations.
•
ioper does not have the same number of components as the number of ballistic species
•
oper does not have the same number of components as the number of ballistic species
•
for high pressure simulations (in hip.in): binary diffusivity does not have the same
number of components as the number of collision species.
•
If an error such as array index out of bounds is produced, then chances are
that some piece of code was not allocated enough memory. Check parameters.in to
verify that you have enough space allocated for the corresponding model in
evolve.in.
•
An error such as Allocation failed for… indicates that your environment is
limiting the memory resources you may use. The most common fix for this is to run
“unlimit datasize” in your UNIX window before running EVOLVE. If this fails
to help, consult your system administrator or pare down memory usage in
parameters.in.
EVOLVE5.0i.a
75
DRAFT COPY – DO NOT DISTRIBUTE
Q: What are some common semi-fatal errors (Why can’t my simulation finish?)
A: Some of more common errors that can cause a simulation to stop prematurely are:
•
The maximum number of plots (nplotm) or the maximum number of steps (nmax) has
been exceeded. (Very common!)
•
The time step is far too large, causing a growth vector to exceed the simulation domain.
Try using iproc 0 or 1 for initial time step calibration.
•
Your surface has consumed all available segments. EVOLVE attempts to stay within the
bounds set by nsmax in parameters.in when resizing, but enough segments must be
available to accurately describe the surface. Increase nsmax in parameters.in.
Q: What are some common non-fatal errors? (Why do the results look so strange?)
A: Some common non-fatal errors are:
•
Time steps are too large. Halve timax or target, or double nstep.
•
nins is too small to accurately represent quickly expanding corners. Increase nins.
•
Etch is far too anisotropic due to failure to consume an activating species such as ions. If
the overall sticking factor listed in the header for flat-wafer data is note exactly 1, then
some fraction of the species is being re-emitted with a cosine distribution.
•
The number of increments in zenith integrations (ntheta) is too small to represent a tight
flux distribution.
•
Failure to converge/solver “blows up”: read the section on relax and tol.
SOME HELPFUL HINTS
•
Make sure your reaction parameters are consistent with the type of reaction you are
using.
•
Make sure the diffusivity parameters are consistent with the type of diffusion you are
using.
EVOLVE5.0i.a
76
DRAFT COPY – DO NOT DISTRIBUTE
•
Make sure your operating conditions are entered in with the correct units.
•
The surface coverages used in irtype 2 are not surface fractions, but absolute coverages.
Make sure your rate coefficients reflect this.
Tips for running REFLOW simulations:
•
Define all melted film parameters. Input them into reflow.in.
•
Alter total process time (timax), number of time steps (nstep), and plot frequency (nploto)
to complete the simulation with good spacing between profiles.
•
Check to make sure that (spaces) defines a proper mesh density for resolution, while
minimizing simulation space.
•
Change one parameter at a time to investigate the effects on simulations.
EVOLVE5.0i.a
77
DRAFT COPY – DO NOT DISTRIBUTE
The History of EVOLVE
EVOLVE was started by Tim Cale in 1990 at Motorola. Motorolans who supported the effort
in the early days include Ed Hall, Tom Zirkle and Len Borucki. Over the years, SRC, NSF,
the DoD and a number of companies have supported the development of EVOLVE. At the
SRC, Bill Lynch, Bill Holton, Mike Witty, Bill Atkins and Jim Hutchby have helped in a
variety of ways.
The various versions of the low pressure module have been written by Tim Cale. That code
forms the basis for much of the code in the high pressure and thin film flow modules.
The first versions of the high pressure module and thin film flow module were written by
Hang Liao for his Ph.D. thesis at Arizona State University.
Zongwu Tang was the first to integrate these three modules. That work was completed in
1997. The current, more integrated version was written by Tim Cale, Max Bloomfield and
Sofiane Soukane.’
The moving algorithm has taken quite a bit of effort, with input from a number of people.
They include: Ganesh Rajagopalan, Max Bloomfield, Sofiane Soukane, and Vadali
Mahadev.
Over the years, a number of colleagues have helped guide the development of EVOLVE. In
addition to those listed above, colleagues who have contributed code, testing, and/or
significant input include:
•
Tushar Merchant at Motorola
•
Dan Coronell at Motorola
•
Andrew Labun at DEC and Intel
•
Eric Egan at Motorola
•
Anthony Toprac at SEMATECH
•
Valery Sukharev at LSI
EVOLVE5.0i.a
78
DRAFT COPY – DO NOT DISTRIBUTE
•
Mike Coltrin at Sandia National Labs
•
Mary Hudson at Sandia National Labs
•
Fletcher Jones at IBM
In addition to these contributors, there have been a large number of people who I have
worked with over the years to define models.
EVOLVE5.0i.a
79