A User's Guide for SAMPLE-3D v2.0: Lithography, and Pattern Transfer


Electronics Research Laboratory

University of California, Berkeley

1.0 Introduction

1.1 Overview

SAMPLE-3D v2.0 is a program for simulating lithography and topography in three dimensions. The principal components of SAMPLE-3D are SPLAT for aerial image calculation, BLEACH for exposure simulation, DEVELOP and CRATER for development and NEtch for etching and deposition simulation. The release tape also includes 2D, 3D, contour X-window(TM) and PostScript(TM) plotting programs and a miscellany of utility software. Additionally, the 2D resist profile lithography simulator SAMPLE 1.8a is available as part of the current SAMPLE-3D release.

This version of SAMPLE-3D is similar to SAMPLE-3Dv1.0 for Lithography, but now has the capability of simulating pattern transfer through the use of NEtch. NEtch is a triangular facet advancement program in which various physical models can be toggled off and on to allow 3D simulation of wet and dry etching and deposition in integrated circuit processing. The lithography simulation capabilities have also been improved. A new version of SPLAT, SPLATv5.0, capable of generating aerial images within thin films is now included as part of the SAMPLE-3D package. The resist dissolution algorithm has been made more robust and CPU efficient by adding an octtree based deloop, thin-triangle regularization and coordinated ray trace/ray advancement. Also, an advection based dissolution simulation has been added (ADVECT) and can be compared with the cell (CRATER) and surface (DEVELOP) models. This new version of SAMPLE comes without the GUI; the user must execute the program by supplying an input deck containing the commands to be executed.

Most of the software may be run as separate stand alone programs. Communication between programs is primarily through files. This is appropriate given the large amounts of data which must be transferred. This form of information transfer also allows intermediate steps to be saved and retrieved for later use.

SAMPLE-3D is designed for use on engineering workstations running under the Unix(TM) operating systems. The plotting programs require the X window system version X11R3 or X11R4. Most of the other programs may be run under different operating systems and do not themselves require X-window support. Memory requirements are fairly large. 16 megabytes of physical memory is a lower limit for practical simulation, although some simulations require less and others are better served by 24 or 32 megabytes. File disk space requirement is typically 5 megabytes for a full 3D lithography simulation. Run times depend on the machine and the problem size but vary from 1-5 minutes for image simulation, from 1-5 minutes for exposure simulation (or 20-45 with PEB), and 10-50 minutes for 3D development on machines such as the DEC3100, DEC5000, Sun 4/280, and IBM RS6000/530.

1.2 Individual Software Components of SAMPLE-3D

The current SAMPLE-3D release version includes the following software:

SPLAT v5.0 7/7/94: calculates aerial images at the wafer plane in projection optical lithography, including lens defects and phase-shift masks. This new version of SPLAT is capable of modeling thin-film interference effects and aberrations in Zernike Polynomial form.

BLEACH v1.0 11/2/91: generates a dissolution rate matrix from image data and exposure and development models.

DEVELOP v1.0 11/2/91: simulates 3D resist development, using ray-trace. (Has a working implementation of a deloop algorithm.)

CRATER v1.0 11/2/91: is a robust program for cell-removal based on lithography development.

NEtch v1.0 7/7/94: is a new feature that simulates pattern transfer in SAMPLE-3D.

PDRAW v3.2 8/10/91: plots 3D data, with interactive viewpoint selection, back-front sorting for hidden line removal, and simple illumination.

CONTOUR v3.0 5/19/91: generates contour plots of an x-y array of data.

DRAWPLOT v2.2 7/11/91 plots 2D data in f77punch7(SAMPLE 1.8a) format.

DRAWMASK v2.2 11/2/91: accepts a SPLAT command file as input and displays the mask, assigning colors to phase-shifted regions.

CUTAWAY v1.0 11/2/91 takes a PDRAW data file and throws away everything outside of a user-defined rectangular region.

PTOM v1.0 11/2/91 converts a PDRAW data file to a file of polygons for use in Mathematica.

ASC2BIN v1.0 11/2/91 converts ascii rate files to binary format.

1.3 About this manual

This manual is divided into several main sections. The contents of the various sections are listed here:

1.0 Introduction.

2.0 Installation.

3.0 Running SAMPLE-3D and individual components. This section describes how the important simulation programs may be run either as part of SAMPLE-3D or as separate stand-alone programs. It will be of interest to users who do not have X-window terminals or who wish to create multiple files for batch-mode program execution.

4.0 A Tutorial for doing Lithography Simulation.. A simple example using thin-film SPLAT is traced to provide the user both a tutorial and a quick installation check. Use this example the first time you run SAMPLE-3D to verify that the programs were installed correctly.

4.0 A Tutorial for doing Lithography Simulation.A simple example illustrating isotropic etching into a square contact is provided in order to show the user some of the commands that are used. This example also serves as a check to see that the NEtch module was installed correctly.

6.0 Physical Models and Algorithms in SAMPLE-3D. This section describes the physical models implemented in the various programs contained in SAMPLE - SPLAT, BLEACH, CRATER, DEVELOP and NEtch.

7.0 Examples. Several simulation examples are shown, including g-line, i-line, and deep-UV lithography, with and without PEB and phase-shift, plasma etching, reflection and sputter deposition.

8.0 About the Source Code. This section is meant to give the user a feel for the flow, and some introductory information about the data-structures used to represent the surface state and do various geometric operations in SAMPLE-3D.

9.0 Appendix of Man Pages. Most of the software in the release tape is documented in Unix man page style for convenient reference.This is where the most detailed user information is located.

2.0 Installation

2.1 Requirements

The installation procedure has been tested with the following set ups. If you have an alternative or non-standard setup, you may experience problems. If you encounter any problems, please contact the ILP.

The tested setups are:

DECStation 5000, Ultrix 4.1, DecWindows 4.1

IBM RS6000, AIX 3.1, Motif 1.1

Sun 4, SunOS 4.1.2, MIT X11R4

Sun SparcStation, SunOS 4.1.1, Open Look 3.0

In addition, you need X11R3 or greater for the graphical programs (i.e. Pdraw) to install.

2.2 Organization

The distribution files are separated into a SAMPLE-3D archive and two scripts:

SAMPLE3DMake build file
SAMPLE3DClean clean all objects
SAMPLE3D Code.
The following section describes the method for installing SAMPLE-3D.

2.3 Installation

1). Make a new directory where the SAMPLE-3D application release will reside.

i.e., type mkdir destdir and
cd destdir to change to the newly created directory.
2). Copy the tarred and compressed files from the tape to this directory

3). Then uncompress the SAMPLE-3D tar file by typing

uncompress SAMPLE3Dv2.0.tar.Z
If done correctly, the .Z suffix that was previously attached to these files should vanish
4).Then untar SAMPLE3D.tar by typing:

tar -xvf SAMPLE3Dv2.0.tar
You should now see two directories such as Bleach, Contour etc. as well the two shell scripts.

5). You are now ready to start compiling. Make sure you are in the directory where you have installed the SAMPLE-3D code. Now type:

csh SAMPLE3DMake at the Unix prompt.
You will now be asked to enter the system under which your workstation is running. Please enter this information accurately and properly since the source code will not compile adequately without this information.

Since SPLAT is written in FORTRAN, you will also be asked to enter the FORTRAN compiler you have. The two types of compilers for which Makefiles are provided are the XLF (for the IBM XLF compiler) and f77 compilers. If your compiler is different from either of these two, you will need to construct your own Makefile for SPLAT and compile it individually. When compiling begins you should see the following messages about the status of the compilation on the screen:

SAMPLE-3D Release 2.0
=============================
(C) 1994 University of California, Berkeley
compilation and installation
Please enter target (SunOS or AIX or DEC) = AIX
Please enter the Fortran compiler you have (f77 or xlf etc.) xlf
Compiling for OS = AIX
===============================================
Compiling Contour
cc -c -I/usr/include main.c
cc -c -I/usr/include contour.c
cc -c -I/usr/include IOread.c
cc -c -I/usr/include array.c
cc -c -I/usr/include parser.c
cc -c -I/usr/include list.c
cc -c -I/usr/include time.c
cc -c -I/usr/include plotps.c
cc -c -I/usr/include plothp.c
cc -c -I/usr/include plotX11.c
cc -o contour main.o contour.o IOread.o array.o parser.o list.o time.o
plotps.o plothp.o plotX11.o -lm -lX11
===============================================
Compiling Cutaway
cc -O -c main.c
cc -O -c IOread.c
cc -o cutaway main.o IOread.o -lm
===============================================
Compiling Drawmask
....
and so on

Check to make sure that the exact configuration, such as the system and machine, matches your current setup.

If the installation is successful, you should see the following message:

Compilation completed successfully
Copy or link needed executables to your bin
Have a nice day!!!
If compilation is unsuccessful, you should see an error message telling you when and where compilation was terminated. In this case, please see Section 2.4 which gives you suggestions that may help the program compile properly.

6). After compilation, you may or may not want to remove the object files that were created for each program. To remove ALL the object files that were created, simply type:

csh SAMPLE3DClean at the Unix prompt.
Once again you should see some messages telling you that object files are being removed.

Please consult the SAMPLE-2D manual for instructions on installing it.

2.4 Installation Problems

The main reasons for an unsuccessful installation are:

  1. Lack of disk space
    Either provide sufficient space or adjust the ``build.all'' script to build only one module at a time and then delete the installed tar files after the build.
  2. Incorrect permission settings
    Make sure you have sufficient permission for the destination directories. Check the status display to see that the destination directories are as desired. If you are installing to a system directory (such as /usr/local/bin), you may have to ``su root.''
    ##The installation script automatically sets the permission level to 0755 for executables and 0644 for libraries. If you need to set different permission levels, you will have to modify each Makefile manually. There are no provisions for customized permission levels at this point. #
  3. Missing header or library files
    This occurs normally because of missing or incorrect X libraries. Check to make sure that your X release is complete and current. If the installation still fails, then contact us.
  4. Compilation errors
    Make sure standard compilers (like cc and not gcc, ANSI C, or CC) are used.

3.0 Running SAMPLE-3D and individual components

SAMPLE-3D consists of many powerful tools which can be combined together to simulate a process. In order to run SPLAT, for example, the splat-inputfile must be specified. Likewise, to run BLEACH, the bleach-inputfile must be given (see below for details on the file formats). DEVELOP will run only if the -et option and an etch time (in seconds) are specified. A PDRAW plot of the final result will be created automatically. If plots at intermediate time steps are desired, the -pt option may be used to specify a plot time interval.

A full 3D lithography simulation using three modules is performed by running the following:

%splat < splat-inputfile

SPLAT outputs a 2D or 3D contour file which can then be bleached to generate an etch-rate matrix. Bleach can then be run by typing:

%bleach -o bleach-inputfile -if 2D or 3D contour-file

BLEACH generates a binary file called rval.3D.binary containing the etch rates which can be developed by DEVELOP by typing:

%develop -bf rval.3D.binary -et 30.0 -pt 10.0

If an etching or deposition simulation is desired, NEtch can be run by including a command file and typing

%netch -if netch-inputfile

The following SAMPLE-3D process flow diagram will serve to explain the dependency of the various modules in a concise manner: In the diagram below, DEVELOP and CRATER serve as development tools for Lithography simulation while NEtch simulates etching and deposition processes. Also note that NEtch can be run without using any information from the SPLAT and BLEACH modules.

Specific information on the various menu options is listed in the man pages at the end of this manual.

3.1 Running SPLAT

For detailed information on SPLAT, consult the SPLAT User's Manual. The information presented here is only an introduction to running SPLAT as a stand alone program.

The SPLAT program is capable of simulating the effects of lens aberrations, apodization, spatial filtering, focus and magnification effects for high NA, etc. As mentioned before, the latest version of SPLAT (version 5.0) which comes with this release is also capable of modelling thin-film interference effects.

SPLAT accepts a file of trial numbers, with each trial number followed by a list of arguments and delimited by a semicolon (;). A command line beginning with the pound sign (#) is ignored, and a line beginning with an ampersand (&) is considered a continuation of the previous line.

The projection system is specified by defining the illumination wavelength, numerical aperture, defocus, partial coherence, and the mask is specified as a set of rectangles or triangles, each with a given transmittance and phase. Then the image is simulated for a specified region.

The parser does not recognize key words and simply skips over them. The following is a basic SPLAT command file:

# Example SPLAT file
2: wavelength = 0.436 microns;
3: NA = 0.28;
4: defocus = 0.0 microns;
5: partial coherence = 0.7;
6: simulation region is 2 x 2 um at 1 transmittance;
8: cutout (0.0, 0.0) 0.5x0.5 at -1 transmittance 180
& degrees phase;
10: calculate the Fourier coefficients;
11: calculate image intensity (0.0, 0.0)
& xlength = 1.0, ylength = 1.0
& save in file ``image.cnt'';
14: calculate intensity along (0,1) to (1,1) and save
in ``2ddat'';
0: end;
To run the above input file, type:

%splat < filename

The above example saves an image intensity file in image.cnt and saves the image along the cutline form (0,1) to (1,1) in 2ddat.

Triangular mask regions are entered with trial statement 7.

Please consult section 6.1 or the SPLAT user guide for more details on the physical models in SPLAT

3.2 Running BLEACH

BLEACH expects a bleach input file and the SPLAT contour file. It recognizes a subset of the lithography commands in SAMPLE-3D. In fact, a valid SAMPLE input file may be used as input to BLEACH. Unrecognized commands are simply ignored.

Command lines beginning with a pound sign (#) are ignored. Most command lines begin with a key word, are followed by a list of arguments and are concluded by a semicolon (;). For a list of commands recognized by BLEACH please see section 5.2, Dynamic Bleaching, Reaction and Diffusion models in BLEACH.

A typical input file appears as follows:

resmodel (0.4358) (0.5510, 0.058, 0.01)
(1.68, -0.02), (0.7133);
layers (4.73, -0.14) (1.47, 0.0, 0.074);
dose 150;
exposerun;
devrate 2 (0.23 0.0016 5.6 0.25 0.25 0.62 0.08);
In the above command file, exposerun is ignored by BLEACH but would be recognized by SAMPLE 1.8a. A full SAMPLE 1.8a command file could be created from the above commands by adding illumination data at the beginning and appending development execute commands at the end.

BLEACH is run by typing:

%bleach -o bleach-inputfile -if splat-contour-file

This is will create a rate file called rval.3D.binary. The size of the file is determined automatically from the wavelength and resist thickness.

3.3 Running DEVELOP

DEVELOP does not require a command file, receiving input data instead from command line arguments. The basic command line to run lithography development simulation is:

%etch -b binary_ratefile -mdens dens -et etchtime -pt plottime

The binary_ratefile is created by BLEACH. The option -mdens specifies the number of mesh nodes per micron along the simulation edge for the initial mesh. The option -et requires the overall etch time in seconds. The option -pt requires the time interval in seconds between plots and defaults to the etch time if not given directly. Plots are written to curves.plot, and a system call to PDRAW is made if possible. Additional options are listed in the man page for DEVELOP at the end of this manual.

3.4 Running CRATER

CRATER simulates resist development using a cell removal algorithm. It sets the number of cells for the simulation based on the number of elements in the external rate matrix. CRATER has an internal maximum limit of cells, which may be different depending on the memory available on your system. The default plotfile is 3D.cells.

CRATER allows commands to be read from external command files using the -if filename option. Commands are entered in the form of a key word followed by a parameter list and are executed in the order they are received. A semicolon signifies the end of a particular command while the pound sign (#) forces everything until the next semicolon to be ignored. CRATER may also be run interactively. A typical CRATER input file is given in the tutorial in section 3.

Advantages of using a command file include the ability to specify the number of cells in the x, y, and z, directions and to generate plots along x, y, and z planes. A complete list of CRATER commands is given in the man page at the end of this document.

3.5 Running ADVECT

Running ADVECT requires a binary ratefile. To run ADVECT, make sure that you have a binary rate file called rval.3D.binary in your current directory. Then, simply type

%advect

at the UNIX prompt. Note that ADVECT requires an extremely large amount of memory and may not run properly if this memory is unavailable.

3.6 Running NEtch

NEtch is run as follows:

%netch -if netch input file

Detailed information about NEtch commands is included in the man pages for NEtch at the end of this manual. A typical instruction file simulating an isotropic (wet) etch is given in the NEtch tutorial section (section 5.0) of the manual.

3.7 Running The Plot Programs.

The results obtained from simulating development can be plotted using a variety of programs. The plot programs, PDRAW, DRAWPLOT, and CONTOUR may all be run as independent X-Window programs. They are run by typing the program name followed by the plot data file name. PDRAW allows user interaction to rotate the plot object, set illumination shading, and do a hidden line sort. If you get an error message like ``cannot open display'', you need to set your Unix shell DISPLAY variable by typing:

%setenv DISPLAY host:display

where host is the name of your workstation and display is the number assigned to your terminal screen.

To exit a plot program, simply click the mouse in the window or in the QUIT button if one exists. The plotters will then create a PostScript file named dataplot.ps and prompt to ask if the file should be sent to the default printer. Many of the PostScript plots, especially for 3D, are quite large and may take 20-60 minutes to print on typical laserwriters.

There are also two programs that allow a user to manipulate plot data. CUTAWAY takes a PDRAW data file and four parameters defining a rectangular region and throws away everything outside of that region. PTOM converts a PDRAW data file to a file of polygons for use in Mathematica.

The plot programs all have command line arguments. Some of the programs also support option files for setting line types, axis labels etc. See the man pages at the end of this document for more details.

3.8 Running the Utilities

Two additional useful utilities are included on the tape. ASC2BIN converts ascii rate files in the form used by BLEACH, DEVELOP, and CRATER to a binary format. Similarly, SPLAT2CIF converts mask files in SPLAT input format to CIF, allowing the mask to be loaded by the GUI.

4.0 A Tutorial for doing Lithography Simulation

The following section offers a small tutorial for 3D Lithography Simulation. This tutorial simulates development of a square contact hole in which thin-film interference effects are taken into account. It is meant to help the user get a feel for running simulations in SAMPLE-3D. One can also use this tutorial to check that the software has been installed and is running properly.

4.1 Input Decks for the Simulation

The SPLAT input deck initializes various process conditions such as the wavelength, diameter of the numerical aperture, partial coherence factor and the size and geometry of the mask. The following command is used to simulate thin-film SPLAT.

stmt 35: resist layer = RESIST_LAYER 'case1.dat'
``case1.dat'' contains the thin-film SPLAT parameter values to be used in this particular simulation.

The entire SPLAT input file is shown below. For more information on these commands, please look at the explanation given under SPLAT in the Physical Models section of this manual.

# Fast thin-film SPLAT example.
# 0.30 um contact
stmt 1: print = 3
stmt 2: lambda = 0.365 um
stmt 3: na = 0.700
stmt 4: defocus = 0.25 mode = 1 #true defocus
stmt 5: sigma = 0.500
stmt 6: mask = 0.30 x 0.30 trans = 0;
stmt 7: cutout = (0.00, 0.00) 0.200 x 0.20 trans = 1;
stmt 35: resist layer = RESIST_LAYER'case1.dat'
stmt 31: mag = 5 mode = 0;
stmt 32: 10 0;
stmt 10: 0 2;
stmt 11:(-0.30 -0.30) 0.6 0.6'lyr.RESIST_LAYER.ctr';
stmt 14: cutline from (-0.30, 0.0) to (0.30, 0.0)
& with 50 points mode = 1 in'lyr.RESIST_LAYER.plot'
0;
The thin-film SPLAT input file
4.7300 -0.1400 1.00 0.00 0.36500 0.00
1.6800 0.7400 0.200 0.01200 240.0 0.5 30
To run a thin-film SPLAT input deck use the run.layers command. Type

%run.layers splat.input 1 30

run.layers is a unix script to run many thin-film interference simulations using a single input file. The script searches for the word `RESIST_LAYER' and replaces it with the current resist layer and then calls SPLAT. Therefore, in this particular simulation there will be 30 different 2D intensity contour files in the current directory

Now, in order to create a 3D intensity file that is accepted by BLEACH, type

%merge.contours lyr.RESIST_LAYER.ctr 1 30 > 3d.dat

merge.contours is another unix script used to merge 2D intensity contour files created using the run.layers command. In this example, the merged contour file is written to 3d.dat.

The merged contour file can now be sent to BLEACH for exposure simulation. BLEACH contains various process conditions such as the refractive index, A, B, C, and the thickness of the resist which convert the contour file into a binary file containing a matrix of etch rates. The BLEACH input file, bleach.in, is given below:

resmodel ((0.436)
(0.74, 0.2, 0.012)
(1.68, -0.0200)(1.0));
layers (4.73, -0.14);
dose 240;
devrate 2 (0.0620 0.0001 8.5000);
To run BLEACH, type

%bleach -o bleach.in -tf -if 3d.dat

The ``-tf'' option tells BLEACH that it is receiving a 3D intensity file from SPLAT. By default, BLEACH writes the matrix of etch rates in binary format in a file called rval.3D.binary. This file can now be sent to CRATER for development. Commands in CRATER can be entered either through a command file or interactively. The following is a valid CRATER command file:

etchtime 15;
celldensity 50 50 50;
runcells;
plotcells 3;
quit;
The etchtime command sets the development time in seconds while the celldensity command sets the density of cells in the x, y and z directions. The runcells command runs the simulation and the plotcells command stores a 3D plot in PDRAW format in `3D.cells'. To run CRATER on the binary file, type

%crater -bf rval.3D.binary -if crater.in

CRATER may also be run interactively without specifying an input file.

4.2 Output

The final result obtained from running CRATER can be viewed using PDRAW. Type

%pdraw 3D.cells

to see the final result. It should look like the figure below. Also shown below is a contour file of the very first contour (lyr.1.ctr) obtained by executing the following command:

%contour -cstep 0.08 lyr.1.ctr

NOTE: These figures are not very accurate results of the simulation since the process conditions were set up so that the simulation took very little time to run. In order to attain an accurate picture, one would have to run a more rigorous and time consuming simulation. To increase the accuracy, one also needs to increase the density of cells in the CRATER input deck and change some process conditions (for example, increase the number of layers) in the SPLAT and BLEACH input decks.

5.0 A Tutorial for Using NEtch

Both, the previous simulation and this simulation serve as a tutorial and an installation check for a new user. This simulation uses a NEtch command file to create a square hole mask for simple isotropic etching of a uniform material layer.

The program has several command line options and may not only be run like DEVELOP but may also be run interactively. Generally, however, NEtch interprets and executes commands line by line from a command file or from standard input. The basic command line to run an etching or a deposition simulation is:

%netch -if instruction file

The instructions in this file define the properties of the simulation, the etch material, and the etching process.

5.1 Generating an Input File

NEtch command files provide all of the information NEtch needs to perform an etching or deposition simulation. Parameters defining both how and what to model are included in this file. Etching and deposition rates for different layers and material are specified by the user. Rates can be specified with commands in the file, itself, with several different keywords or can be loaded with the loadrate command from a rate file created by BLEACH. In this example the rates are defined in the input file.

The sim_region command is used to demarcate the simulation region. The following instruction uses a cube of length 2.0 units as the simulation region.

sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
Now, information about the various layers must be supplied.:

etchlayers first creates one layer, 1.0 microns thick, and defines the etch rate through this layer to be 0.1mm/s. Although only one layer is defined here, the keyword etchlayers can be used to specify the etch rates for several layers. It can only be used with isotropic or directional etching. All other simulations use the keyword etchlayer instead

etchlayers 1 1.0 0.1;
The mask for this isotropic etch, defined by the keyword maskpiece, is a square mask with sides of length 1.0, beginning at the point (-0.5, -0.5). The shape is defined by the first parameter for this keyword. 0 indicates a square mask and 1 a triangular mask. The mask is chosen to be clear and the background opaque by setting the setmask parameter to 0. An opaque mask and open background could have been chosen by setting this parameter to 1.

maskpiece 0 -0.5 -0.5 1.0 1.0;
setmask 0;
The size of the mask and the simulation region define the ideal segment length of the triangles that make up the mesh. The minimum and maximum segment lengths are some factor of the ideal segment length and can be set by the min_segl_fact and max_segl_fact commands. It is recommended that these commands be used only by users with a solid background in computer graphics who understand the ramifications of resetting the segment lengths for a particular simulation. General users should not include these commands in their input deck since adequate default values are provided for simulation.

Next, the nature of the etch is defined. The keyword adv_method defines the surface advancement method. For this simulation, the fixed time step facet motion algorithm was chosen. To simulate an isotropic etch we use the etchmodel command. So, the following lines must now be added to the input file:

adv_method 1;
etchmodel 0;
The surface is etched for the given etch time of 5 seconds and the three-dimensional result is plotted on the screen, and also written in PDRAW format to a file called tutorial_file. These results can also be stored in a postscript file if desired.

etchtime 5.0 0.2;
run;
plot3D tutorial_file;
The complete file is shown here. Other statements that are not discussed above and do not affect the nature of the simulation are included to help define the output. Comments can also be included in the file by starting a line with the `#' character. Then the entire line is considered a comment and left unevaluated.

#this line is a comment...
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
analytic_rate 12;
etchlayers 1 1.0 0.1;
meshaccur 0 0 0 0;
maskpiece 0 -0.5 -0.5 1.0 1.0;
setmask 0;
noclip 1;
adv_method 1;
etchmodel 0;
meshdensity 10;
etchtime 5.0 0.2;
run;
plot3D tutorial_output;
quit;
To run the simulation, type:

%netch -if instruction file

at the UNIX prompt.

A 3D cutaway view of the final 3D result obtained by running NEtch is shown below. The cutaway view is generated by typing

%cutaway xmin xmax ymin ymax pdraw-file

Cutaway takes files in pdraw 3D plot format and cuts away everything outside of the box with corners (xmin, ymin) and (xmax, ymax). The result is stores in filename.cut.

5.2 Structure of the Input file

As seen in the above example, NEtch input files follow a general structure.

The user first sets up the structure of the simulation with keywords such as loadrate, sim_region, or etchlayers and is also given some control over the appearance of the simulation, such as the mesh and advancement algorithm with keywords like meshdensity and adv_model.

Then, after executing the simulation with run, the user is able to plot the results that are stored in the program's memory.

The necessary information must be entered in proper order, i.e. initialization commands must be entered before execution commands. The etch model and deposition model commands must be entered before the rates are specified; all other initialization commands may be entered in any order. The advancement method must also be set before specifying the etch or deposition time. It is possible to reset most initialization commands after a simulation has been performed with the exception of the mesh density and simulation region parameters.

NEtch also has a special command called save and load which lets the user save the geometry and certain specific simulation information. This command is useful for saving intermediate states of the surface geometry for loading surface information back into NEtch's data structures at a later time. The user can save the surface information using the save_surface command and load it back in during the time of a simulation by using the load_surface command. This surface will then be used as a non-planar mesh on which a desired simulation may be run. For specific details on save and load, please refer to the man pages at the end of this user guide.

6.0 Physical Models and Algorithms in SAMPLE-3D

This section presents an overview of the physical models and computational algorithms in SAMPLE-3D. The presentation moves from optical applications to deposition and etch. The models and algorithms have evolved through thesis work at UC Berkeley and the individual students' theses and publications listed in the appendix are often the most complete sources. The ultimate source of information on what is actually done is the source code. At the other extreme, the man pages can serve as a brief online reminder of what model and algorithm options are available.

6.1 Optical Image Models and Algorithms - SPLAT

The optical image simulation is carried out by SPLAT version 5.0. This thin-film version of SPLAT allows high NA images to be calculated within the resist layer.

The algorithm is based on Hopkin's approach as extended by Michael Yeung to include thin-film effects in the pupil function. SPLAT version 5.0 also allows aberrations to be specified in Zernike polynomials or wave front maps. Modified illuminations in the form of quadrupole, annular or illumination maps can be specified. Phase shift masks and inlens filtering are also included.

The program is capable of simulating the effects of lens aberrations, apodization, spatial filtering, focus and magnification effects for high NA, and modified illumination, and the five primary lens aberrations: coma, astigmatism, distortion, spherical aberration, and curvature or defocus. Apodization schemes, such as the Hitachi spatial filter, can be added to the illumination system. Annular, offaxis and quadrupole illumination sources can be also be simulated. As mentioned before, the latest version of SPLAT (version 5.0) which comes with this release is also capable of modelling thin-film interference effects.

Here are a few of the more commonly used SPLAT commands from the SPLAT user guide:

[STATEMENT] 1 printlevel

STATEMENT 1 sets the level of diagnostic output generated by the program. PRINTLEVEL=1 produces no diagnostic output, while PRINTLEVEL=2 causes the program to echo the input lines to the output. PRINTLEVEL=3, on the other hand, is primarily for interactive/diagnostic use and causes the program to report when statement execution is completed by displaying the input parameters. The default value of PRINTLEVEL is 1.
[STATEMENT] 2 wavelength

This statement sets the wavelength, in micrometers, of the light used to illuminate the mask. Currently, the program is set up to accept only a single wavelength. The default is WAVELENGTH = 0.436 mm.
[STATEMENT] 3 numerical.aperture

The imaging system is projection-type, with an imaging lens numerical aperture equal to NUMERICAL.APERTURE. Default NUMERICAL.APERTURE is 0.28.
[STATEMENT] 4 defocus[mode]

The image can be calculated at a plane other than the plane of best focus. The distance from the plane of best focus, DEFOCUS, is measured in micrometers and defaults to 0.0 Mm. Positive DEFOCUS is defined as being below the gaussian plane, while negative DEFOCUS is above it.MODE is an integer flag used to specify the type of defocus. MODE = 1 specifies that true defocus () will be used and is the default mode. MODE = 0 specifies that approximate defocus () will be used.
[STATEMENT] 5 sigma [sigma_in]

STATEMENT 5 sets the partial coherence factor, SIGMA, of the imaging system. Only values of partial coherence that lie between 0.0 (full coherence) and 1.0 (partial coherence) are accepted by the program. SIGMA defaults to 0.7, a value common to most projection printers. SIGMA_IN is used for annular illumination schemes. It indicates the radius of the illumination cone which will be blocked out. The actual illumination occurs only in the annulus from SIGMA_IN to SIGMA. SIGMA_IN defaults to 0.0.
[STATEMENT] 6 xlength ylength [transmittance [scale]]

The working area is the size of the mask which is to be imaged and is specified by XLENGTH and YLENGTH in micrometers. This specified area is actually only the first quadrant in Cartesian coordinates. The total/unfolded area is bounded by the coordinates (-XLENGTH,-YLENGTH), (- XLENGTH,YLENGTH), (XLENGTH,YLENGTH), (XLENGTH,-YLENGTH), and a periodic extension in both the X and Y directions is assumed. The optional TRANSMITTANCE is the initial transmittance of the mask (usually either 1 for transparent or 0 for opaque). The image calculation time is approximately proportional to the square of the imaged area, and to avoid long computation times, field sizes with total areas greater than 16 micrometers squared should be avoided. One way to do this is to take advantage of symmetry - see STATEMENT 7 for details. The default for TRANSMITTANCE is 0, while XLENGTH and YLENGTH both default to 2.0 micrometers. SCALE is a positive real number that can be used to scale the mask. This scale factor will also apply to any STATEMENTs 7, 8, 27, and 28 that come after a STATEMENT 6.
[STATEMENT] 7 xcoord ycoord xlen ylen transmittance [phase]

This statement is used to add a rectangular feature to the mask. The rectangle specified is mirrored across the x and y axes. Rectangles may overlap other rectangles - it is the user's responsibility to make sure no part of the mask has transmittance greater than 1 or less than 0.
XCOORD = x coordinate of lower left corner of rectangle
YCOORD = y coordinate of lower left corner of rectangle
XLEN = length of rectangle in x direction
YLEN = length of rectangle in y direction
TRANSMITTANCE= transmittance of the rectangle relative to the current transmittance of the mask where it is to be placed.
PHASE = phase angle (normally 0 degrees). This option is used for phase shifted masks.
As an example, to specify a 2 mm x 2 mm transparent square in a 5 mm x 5 mm opaque mask, the following statements could be used:
STATEMENT 6: 5 um x 5 um at 0 transmittance;
STATEMENT 7: (2.0,2.0) 2.0 um x 2.0 um at 1 transmittance;
However, symmetry can and should be utilized to reduce the computation time by locating the center of the rectangle at the origin of the coordinate system in the following manner:
STATEMENT 6: 2 um x 2 um at 0 transmittance;
STATEMENT 7: (0.0,0.0) 1.0 um x 1.0 um at 1 transmittance;
In the last two input statements above, a 1 mm x 1 mm transparent square is defined in a 2 mm x 2 mm opaque mask. Because the program automatically makes even periodic extensions in the x and y directions, the region specified by the user is actually only the first quadrant in the cartesian coordinate system; the other three quadrants are the mirror images of the first, reflected across the x and y-axes respectively. Therefore, the 1 mm x 1 mm square defined above is actually only part of a 2 mm x 2 mm square, with the center of symmetry of that larger square located at the origin. In a similar manner, an opaque square on a transparent mask can be defined using the statements below, where the transmittance is 1 for the background, and -1 for the square.
STATEMENT 6: 2 um x 2 um at 1 transmittance;
STATEMENT 7: (0.0,0.0) 1.0 um x 1.0 um at -1 transmittance;
[STATEMENT] 8 xcoord ycoord xlen ylen transmittance [phase]; or

[STATEMENT] 8 x1 y1 x2 y2 x3 y3 transmittance [phase];

Add a triangular aperture to the mask. The triangle specified is mirrored across the x and y axes. Triangles may overlap other triangles and rectangles - it is the user's responsibility to make sure no part of the mask has transmittance greater than 1 or less than 0. The triangle can be specified in two ways - as a right-angled triangle defined by the corner (right angle) point, base and height or as a general triangle defined by three points. Again, even periodic extensions in the x and y directions are assumed. Please note that if only six arguments are provided, the program assumes that the triangle being defined is a right- angled triangle.
XCOORD = x coordinate of corner of right-angled triangle
YCOORD = y coordinate of corner of right-angled triangle
XLEN = base length of right-angled triangle (may be negative to flip triangle)
YLEN = height of right-angled triangle (may be negative to flip triangle)
X1 = x coordinate of point defining general triangle
Y1 = y coordinate of point defining general triangle
X2 = x coordinate of point defining general triangle
Y2 = y coordinate of point defining general triangle
X3 = x coordinate of point defining general triangle
Y3 = y coordinate of point defining general triangle
TRANSMITTANCE= transmittance of the triangle relative to the current transmittance of the mask where it is to be placed.
PHASE = phase angle (normally 0 degrees). This option is used for phase shifted masks.
Input Statements:
Statement 6: XM x YM @0;
Statement 7: (0,0) (XL,YL) @1;
[STATEMENT] 9 nx ny [mode [xllc yllc xlen ylen [difflag]]] [`filename'];

STATEMENT 9 is used to calculate the transmittance profile of the mask. The transmittance at any point is the sum of the working area(mask) transmittance (see STATEMENT 6) and the transmittances of all rectangles or triangles defined by STATEMENTs 7 and 8 that cover that point. The output file consists of a list of transmittances at points on a grid defined by NX and NY. The default is to calculate for the entire working area, but the user can specify a smaller (or larger) area. MODE defines the type of output obtained from this statement. MODE = 0 produces output to a specified file, MODE = 1 sends a crude contour plot to the terminal, while MODE = 2 does both.
NX = number of divisions along x axis (default = 20)
NY = number of divisions along y axis (default = 20)
MODE = type of output desired
XLLC = x coordinate of lower left corner of rectangle to be plotted
YLLC = y coordinate of lower left corner of rectangle to be plotted
XLEN = length of rectangle in x direction
YLEN = length of rectangle in y direction
DIFFLAG = 1 to limit spatial frequencies (normally not used)
FILENAME= name of file into which to store the calculated intensities.
[STATEMENT] 10 [mode [force]] [`filename'];

STATEMENT 10 orders the program to calculate the transmission cross-coefficients (TCCs) as well as the Fourier coefficients of the image intensity profile. This statement can take a long time to execute. MODE = 1 stores the TCCs in binary form in the file FILENAME. FORCE is an integer flag which forces the program to choose which of the 3 integration routines should be used for TCC calculation. FORCE = 0 is the default, FORCE = 1 uses a 1-dimensional integration routine, while FORCE = 2 uses a 2-dimensional integration scheme. When aberrations other than approximate defocus are used or when magnification is set, FORCE = 2 is used automatically.
[STATEMENT] 11 [xllc yllc xlen ylen [nx ny]] [`filename'];

This statement calculates the image intensity within a rectangle specified by XLLC, YLLC, XLEN, YLEN. The intensities are calculated at each point of a rectilinear NX by NY equally spaced grid within that rectangle. (Note: Maximum NX*NY is 10000) This output file may be used with a 3-dimensional plotting package to provide either a 3- dimensional intensity profile or an intensity contour plot. The parameters are:
XLLC = x coordinate of lower left corner of rectangle to be plotted
YLLC = y coordinate of lower left corner of rectangle to be plotted
XLEN = length of rectangle in x direction
YLEN = length of rectangle in y direction
NX = number of grid-points in the x direction (default is 50)
NY = number of grid-points in the y direction (default is 50)
FILENAME= name of file into which to store the calculated intensities.
[STATEMENT] 12 `filename'

Save the Fourier coefficients that describe mask transmittance and image intensity. This input line will produce a relatively large (approx. 30 kbytes) binary output file, which contains the Fourier coefficients as well as the imaging system parameters - numerical aperture, wavelength, coherence factor, mask size. The coefficients can be reloaded with STATEMENT 13 to generate more plot files of the same mask pattern.
[STATEMENT] 13 `filename'

STATEMENT 13 is used to load the Fourier mask and image coefficients previously saved with STATEMENT 12. Therefore, for a given set of imaging system parameters (N.A., wavelength, sigma, mask size and pattern), the intensity profile need only be calculated once with STATEMENT 10. STATEMENT 12 saves the data computed by STATEMENT 10 for later use, and STATEMENT 13 reloads this data. Note that the TCCs saved via STATEMENT 10 can be used for any mask pattern, as long as the field size remains constant. On the other hand, STATEMENT 12-13 saves the Fourier coefficients only, so these can be used only for one particular mask pattern.
[STATEMENT] 14 xi yi xf yf [npts [mode]] [`filename'];

Calculate the image intensity profile along the line joining points (XI,YI) and (XF,YF). The number of points along that profile and is optionally specified by NPTS, which defaults to 50. The intensity profile is output in the same format as a SAMPLE f77punch7 file. The `x' values in the file represent the distance along the line from the point (XI,YI), while the `y' values represent the light intensity normalized to 1.00. Again, MODE is an integer flag, normally 0, used to specify the format of the intensity profile. MODE = 1 outputs the intensities with 5 decimal spaces (as compared to 3 with MODE = 0). This option is particularly useful for analysis of small patterns such as defects, where the intensity is very low.
XI = x coordinate of initial plot point
YI = y coordinate of initial plot point
XF = x coordinate of final plot point
YF = y coordinate of final plot point
NPTS = number of points (default is 50, maximum is 500)
MODE = accuracy flag (defaults to 0)
[STATEMENT] 30 spot_radius Jx Jy

STATEMENT 30 allows entry of a single illumination spot. The SPOT_RADIUS is the radius of the illumination spot while (Jx,Jy) indicate its coordinates in the entrance. pupil of the system. The radius of the entrance pupil is normalized to 1. Multiple illumination spots are specified by using up to 10 of these statements. For example, the following commands define a quadrupole illumination scheme for a system with a partial coherence of 0.695. The system partial coherence is computed automatically as the smallest sigma which will overlap all illumination spots.
STATEMENT 30: Spot_radius = 0.2 at (0.35, 0.35);
STATEMENT 30: Spot_radius = 0.2 at (-0.35, 0.35);
STATEMENT 30: Spot_radius = 0.2 at (0.35,-0.35);
STATEMENT 30: Spot_radius = 0.2 at (-0.35,-0.35);
[STATEMENT] 31 magnification [mode]

This statement is used to include magnification effects in the calculation of the aerial image. MAGNIFICATION (or more precisely demagnetization) is defined as the object height divided by the image height. MODE = 0, the default mode, specifies that the mask image will be calculated using the mask dimensions at the mask plane. MODE = 1 specifies that the mask image will be calculated using the mask dimensions scaled down by MAGNIFICATION. This statement must be called prior to STATEMENT 6.
[STATEMENT] 32 [grid_pts [symmetry]]

This statement turns on the use of the table lookup routines when calculating the TCCs. Instead of recalculating the pupil function every time, the values are stored in a table and subsequently looked up. The main use of this feature is to speed up the thin-film calculations (STATEMENT 35) and it does not provide any speedup for systems with only few aberrations. The number of columns and rows of the lookup table is initialized with dimension grid_pts X grid_pts. A good number of grid points is 50 for the thin film cases--the results differ by less than 1% from those when not using the table. The maximum number of grid points is 400 and the default is 50. The symmetry parameter refers to the use of symmetry in the calculation of the TCCs (STATEMENT 10) which normally reduces the computation time. When symmetry = 0, symmetry in the TCC calculation is turned off. This will speed up the simulation time when the mask area is very small since the determination of the symmetry dominates the simulation time. Explicitly disabling the symmetry is only permitted in conjunction with STATEMENT 35. By default symmetry = 1 which is the state of normal operation.
[STATEMENT] 35 resist_layer `thin-film_data_file'

Statement 35 allows the image to be calculated within the photoresist. The resist is split up into many thin layers as specified in the `thin-film_data_file'. The format of the thin-film input file is given below. The correct number of parameters must be listed on each line and any number of spaces (but no tabs) may be used to separate them.
Thin-film Data File Input Format
substrate_n subsrtate_k medium_n medium_k wavelength
resist_n A B C dose thickness layers
layer1_n layer1_k thickness
layer2_n layer2_k thickness
...
layer12_n layer12_k thickness
The first four parameters are the real and imaginary parts of refractive index of the substrate and medium (Air) respectively. The fifth parameter is the wavelength in the initial medium. The next line specifies the resist properties: the real part of the index of refraction; the resist A, B, C parameters, used to calculate the imaginary part of the index of refraction; dose; thickness; and number of layers. Any lines following the resist parameters specify the real and imaginary parts of the index of refraction of layers under the photoresist and their thicknesses. Up to 12 layers may be specified.
Thin-film Utilities
The following UNIX scripts and or C programs have been created:
run.layers - a unix script to run many thin-film interference simulations using a single input file
Usage: run.layers splat_input_file start_layer end_layer
The script searches for the word `RESIST_LAYER' and replaces it with the current resist layer and then calls SPLAT. At the end of the simulation there will be end_layer 1D intensity files in your current directory. Since this script calls SPLAT, it must be accessible from your current directory.
merge.layers - a unix script used to merge the 1D intensity files created using run.layers into a 2D intensity contour file
Usage: merge.layers filename_RESIST_LAYER.plot start_layer end_layer
merge.contours - a unix script used to merge the 2D intensity contour files created using run.layer into 3D intensity file for input in SAMPLE-3D
Usage: merge.layer filename_RESIST_LAYER.ctr start_layer end_layer
For an illustration of these scripts please refer to the tutorial on Lithography Simulation in section 3.1 of this document.

6.2 Dynamic Bleaching, Reaction and Diffusion - BLEACH

The Bleach program coverts the aerial image and/or the cumulative energy deposited per unit volume to etch rate versus position under appropriate process effects. When an initial aerial image is specified the effect of resist bleaching during the exposure can be calculated. Bleach then determines (or accepts from SPLAT version 5.0 run suing thin-film effects) a cumulative energy versus position throughout a 3-D volume of resist. The photo produced aid... from this distribution can then be diffused in a post exposure bake step. The rescattered distribution is then converted to an etch rate versus position throughout the 3D resist volume. To model the development of exposed resist, an analytical relationship between inhibitor concentration and etch rate of the form

R = exp(E1 + E2M + E3M2)

is used in SAMPLE.

The commands used to run a bleach process are:

resmodel wavelength A B C n k thickness;
The wavelength is in microns. A, B, and C are the Dill exposure parameters.The refractive index follows. The imaginary part is ignored and calculated from the Dill parameters. The thickness is also in microns.
layers n k [(n k thickness)...];
The first (n,k,) pair is the refractive index of the substrate. The next set of parameters is the refractive index and thickness of any material between the substrate and the resist. The layer closest to the substrate is given first. A maximum of 4 layers in addition to the substrate are allowed.
arclayer n k thickness develop_rate
This command specifies that an anti-reflective coating be used directly beneath the photoresist. The parameterss n, k, and thickness (in um) give the refractive index and the thickness of the ARC layer. The isotropic development rate of the ARC layer is set by the parameter develop_rate.
tarlayer n k thickness
A top-anti-reflecting coating will be used over the photoresist when this statement is used. The parameters n, k, and thickness (in um) give the refractive index and the thickness of the TAR layer. The TAR layer material used is assumed to be easily stripped by water, so it is removed very quickly by a development run. For that reason the ratefile will only contain information concerning the resist and possibly an ARC layer.
dose exposure.dose;
The exposure dose is given in millijoules per square micron at the wafer surface.
heatdiffus diff.length;
This statement requests a post exposure bake. The first argument gives the diffusion length in microns.
shipleyahr baketemp baketime;
These are bake parameters for R.A. Ferguson's SNR-248 acid hardening resist model.
devrate model parameters;
The model is either
  1. an analytic function with 3 parameters E1, E2, and E3 and the rate = exp(E1 + E2xM + E3xMxM)/10000 um/sec;
  2. the Kim model with 3, 6, or 10 parameters R1-R10 and the rate = f(M,z)xR(M) where R(M) = 1.0/((1.0-Mxexp(-R3x(1.0-M)))/R1 + Mxexp(-R3x(1.0-M))/R2) um/sec and f(M,z) = 1-1(R5-(R5-R6)xM))xexp(-z/R4);
  3. the Ferguson SNR-248 model with rate = R0x(1-CE/C0)^a, where R0, C0, and a are the argument list.

6.3 Resist Dissolution - CRATER, DEVELOP

The time evolution of the 3D resist profile can be simulated using cell, surface advancement, and advection methods. In all cases, the input is the etch rate versus resist position matrix output from BLEACH.

CRATER is a 3D cell-based volume removal program for simulation of photoresist dissolution. The program reads a dissolution rate file describing the etch rates ina 3D simulation region. A cell removal algorithm with a basic spillover technique is used to simulate resist development. A predetermined time step is used and the simulation is divided into many steps. At each time step, the volume removed from each surface cell is calculated. Any cells which have a volume of less than zero at the end of a step are removed, and the newly exposed underlying cells are added to the list of surface cells. A negative cell volume indicates that the etch front proceeded past the current surface cell into the underlying cells. This extra volume must be deducted from the newly exposed cells to preserve a valid surface representation. To save memory, full information is allocated only for surface cells. Other cells point to a dummy structure indicating whether the cell is full or empty.

If a neighboring cell is devoid of material, the cell face shared with that neighbor is exposed. All exposed faces are moved into the cell, with a distance given by the product of the etch rate at the cell and the time step. The volume removed is thus a product of the face area and the distance traveled.

The volume removal calculation is always performed as if the cell were completely full, until it is removed entirely. This overestimates the amount of material removed from the surface cell. However, the underlying cells do not etch until the surface cell is completely empty. This combination of overetch and underetch yields the correct overall amount of removed material.

The spillover technique is implemented by evenly dividing the excess volume removed from a surface cell among all the unetched cells that share a face with the original cell.

Factors affecting the removal of cells and the rate at which cells are removed are the etch model that is used, the etch rates that are supplied by the user either through a command file or a rate file, and other process conditions. For a list of valid commands, please refer to the Man Pages on Crater in the appendix.

Develop advances the surface using a triangle based scheme while Advect advances the surface by rigorously solving the Hamilton-Jacobie equation. For more information on the models involved in implementing either of these programs, please refer to John Helmsen's Ph.D dissertation which is listed in the References section at the beginning of the user's guide.

6.4 Physical Models for Pattern Transfer - NEtch

ETCHING SIMULATION

Plasma Etching processes in SAMPLE-3D are modeled by formulating a general etch rate based on sputter yield and particle flux distributions at the surface. The current SAMPLE-3D etching model is based on the flux distribution of incident ions and neutral particles. The following four effects must be considered while simulating an etching process:

i) Directly incident ions: In this case v(x), the velocity in the surface normal direction at x is:

where Fi(φ, θ) gives the ion flux distribution over the solid angle of the visible plasma and Ndi, the flux integrated over 0<=φ<=π/2 and 0<=φ<=2π, is a normalizing factor. Si is the normalized yield function equal to S/So while Rdi, the etch rate for a flat wafer with no shadowing, is described by

ii) Directly Incident Neutral Particles: In this case v(x) is given by:

where the variables represent the same quantities used to describe the velocity due to directly incident ions. For example, Rdn refers to the etch rate on a flat wafer with no shadowing and Ndn is still a normalizing factor.

iii) Indirect Incident Etchant Flux: The velocity function due to this effect is

iv) Isotropic Etching: The velocity function due to isotropic etching is:

vis = Ris

The rate parameters Rdn, Rdi, Ris, and Rii and the flux distributions Fi, Fn, and Fii depend upon substrate materials, etch gasses and other process conditions. The normalizing factors are computed once the flux distributions are obtained. All the individual velocity terms must then be summed up to give the total etch velocity along the surface normal.

Extensions to the basic model:

Sidewall Passivation is required to model the reduction in rate due to the deposition of material on chamber walls and trench slopes. The redeposition rate is:

Damage to the wafer surface may be caused by energetic ions. Reactive neutrals etch damaged areas more vigorously than undamaged areas. This phenomenon of ion-enhanced etching is modeled by adjusting Rdn such that

Computer Implementation of the Etch Model

So far, we have discussed the physics driving the SAMPLE-3D etching model. While trying to implement this model on a computer, however, we must modify it for reasons of speed and computational efficiency. Furthermore, in order to simulate etching on a computer, we must transform the physical etch rates obtained into etch rates along the three Cartesian coordinates. These transformed etch rates can be described by the following equations;

The overall rate along the surface is then given by:

DEPOSITION MODEL

There are two basic Deposition models:

Chemical Vapor Deposition

CVD processes in SAMPLE are modeled by invoking the Isotropic Deposition model. This is done by invoking the Isotropic Etch model discussed above with a negative etch rate as its argument.

Physical Vapor Deposition

In three dimensions, the direction and rate of growth for a point on the surface depend upon flux contributions arriving from several directions. The following formulae describe the components of the growth rate:

where Rd is the redeposition rate on a flat surface perpendicular to the z-axis, Fd is the flux distribution of arriving particles given by

flux = cosn(Aφ)

and Nd is a normalizing factor of the flux distribution over the hemisphere. These three velocity relations are used to model Physical Vapor Deposition.

Extensions to the basic model

Basic Surface Migration may be simulated by means of simple two-step model. First the flux arrival for every surface point is calculated using the flux equation used in the previous example. Then the redistribution is calculated by applying an equation of the form:

where si is the distance on the surface from node i to the node of interest, σ expresses the surface migration characteristic length, n is the number of surface points and ΔAi is an area element giving a region of influence for vi.

6.5 Extracting Solid Geometries for Capacitance Analysis

After having simulated an etching process that represents the topography of multiple solid conductors, you may be interested in analyzing the mutual capacitance between the solid conductors. To do this, a post-simulation step has be implemented to transform the surface topography by which SAMPLE-3D does its simulation into multiple self-enclosed surfaces which are used by 3D capacitance analyzers.

FastCap is a capacitance analysis program from MIT. Currently, the surface to solid routines in SAMPLE-3D outputs a list of triangular panels in the format used by FastCap. This allows FastCap to be run directly on output files and other capacitance or inductance simulators will likely accept this type of format. ((is the only 3D capacitance analyzer for which input topography files are created)). For a complete description on the use of FastCap and obtaining the software, contact:

Prof. Jacob White
Massachusetts Institute of Technology
Department of Electrical Engineering and Computer Science
Room 36-880
Cambridge, MA 02139 U.S.A.
white@rle-vlsi.mit.edu
fastcap@rle-vlsi.mit.edu
The commands used to extract surface and solid geometries from NEtch and create a FastCap input file are:

createfastcapfile filetype [z_min z_max xy_boundary_offset] fastcap_input_filename;
The first argument, filetype, can have two values, 0 or 1. A filetype of 0 means that all the current surfaces simulated with NEtch will be transferred to a FastCap input file identified by the fastcap_input_filename directly. A filetype of 1 means that the current most advanced surface from NEtch will be transformed into solid geometries using the arguments in brackets, and then the result will be transferred to the fastcap_input_filename.
For a filetype of 0, the arguments in brackets should not be supplied, and the current surfaces within NEtch are transferred to a generic FastCap file format.
For a filetype of 1, the current most advanced surface from NEtch is transformed into solid geometries using the arguments in brackets. Z_min and z_max are the z coordinates of the flat bounding planes that will be used to intersect the etched surface thereby bounding the top and bottom of the solids. Xy_boundary_offset is a positive number used to intersect bounding planes in the X and Y directions of the simulation region. Flat planes offset by the xy_boundary_offset are intersected with the etched surface thereby completing the enclosure of the solid geometries. Because an xy_boundary_offset of zero will not produce an intersection, this argument must be slightly positive.

7.0 Examples

This section contains some examples of 3D lithography, etching and deposition simulation with SAMPLE-3D v1.1. The following examples are meant to illustrate some of the possible SAMPLE-3D components described so far. The simulations were run on an 33.3 MHz IBM RS6000/530 machine with a computational speed of 11 MFLOPS. Each example contains the following:

1). A short description of the process

2). The input files required to generate the process.

3). A 3D output plot in PDRAW format.

7.1 Phase Shift Mask: i-line and Olin-Hunt HiPR 6512 resist

A 3 color phase-shift mask with defocus was used for this example. The contour file was then baked and used to generate a binary matrix containing etch rates. This matrix was supplied to etch development simulation.

#SPLAT File Created By SAMPLE-3D GUI for i-line
2 0.3650;
3 0.5000;
4 0.7000;
5 0.5000;
6 4.000000 2.680000 0;
7 Cutout = (0.250000,0.000000) (0.500000x1.440000)at 1.000 0.000;
7 Cutout = (2.250000,0.000000) (0.500000x0.940000)at 1.000 0.000;
7 Cutout = (0.250000,1.440000) (1.500000x0.500000)at 1.000 0.000;
7 Cutout = (1.750000,1.440000) (0.500000x0.500000)at 1.000 90.000;
7 Cutout = (1.250000,0.000000) (0.500000x0.940000)at 1.000 180.000;
7 Cutout = (3.250000,0.000000) (0.500000x1.440000)at 1.000 180.000;
7 Cutout = (2.250000,1.440000) (1.500000x0.500000)at 1.000 180.000;
10;
11 0.000000 0.000000 4.000000 2.680000 `image.cnt';
#Bleach File Created By SAMPLE-3D GUI for Bleach.input
resmodel ((0.3650)
(1.0500, 0.1100, 0.0120)
(1.8200, -0.0330)(1.0000));
layers (6.5220, -2.7050);
dose 240.0000;
exposerun;
heatdiffus 0.0800 1;
devrate 2 (0.0759 0.0001 7.4600);
#Command line for 3D etch simulation;
develop -b rval.3D.binary -mdens 10 -et 60.0;
The picture after 60 seconds of development generated by ETCH, an older version of DEVELOP.

NOTE: For information on recent improvements on removing these artifacts, see
  1. The information posted in the following web site: http://tanqueray.eecs.berkeley.edu
  2. The web site: http://www.eecs.berkeley.edu/~neureuth

The picture below was generated by DEVELOP. The development time for the simulation was 25 seconds. One can see that the deloop algorithm in DEVELOP was reasonably effective in removing the loop that generated by ETCH.
An attempt to run DEVELOP for a development time beyond 19 seconds resulted in an error as the surface tried to push through the sidewalls of the simulation boundary. We are currently in the process of investigating this particular problem.

not available

7.2 Elbows: deep-UV with SNR-248 resist

Nested elbows, with 0.4 micron feature sizes, were resolved in simulation of a deep-UV stepper and SNR-248 negative-tone chemical amplification resist. Once again the resulting intensity plot was baked and development simulation was done using DEVELOP.

#SPLAT File for KrF
2 0.2480;
3 0.4000;
4 0.0000;
5 0.5000;
6 1.930000 1.990000 0;
7 Cutout = (1.560000,0.400000) (0.370000x0.400000) 1;
7 Cutout = (1.160000,0.000000) (0.400000x0.800000) 1;
7 Cutout = (0.360000,1.200000) (1.570000x0.400000) 1;
7 Cutout = (0.360000,0.000000) (0.400000x1.200000) 1;
10;
11 0.000000 0.000000 1.930000 1.990000 `image.cnt';
#Bleach File
resmodel ((0.2480)
(-0.7120, 1.1570, 0.0023)
(1.7900, -0.0088)(1.0000));
layers (1.7000, -3.3800);
dose 25.0000;
shipleyahr 140.0000 60.0000;
exposerun;
heatdiffus 0.0800 1;
devrate 4 (6.4000 0.0350 6.3000);
#Command line for 3D etch simulation;
develop -b rval.3D.binary -mdens 10 -et 60.0;
A tiny rectangular buffer with very slow etch in the x-y direction was put in during development of this mask in order to ensure that the simulation proceeded in a proper manner.
The picture below was generated by running DEVELOP on the same mask with a development time of 19 seconds. An attempt to run DEVELOP for a development time beyond 19 seconds resulted in an error as the surface tried to push through the sidewalls of the simulation boundary. We are currently in the process of investigating this particular problem.

7.3 Defects: i-line, Olin-Hunt HiPR 6512.

For this i-line lithography example. An opaque 0.4x0.4 micron defect in a clear feature is too small to be resolved but large enough to cause a defect in the desired pattern.

#SPLAT File Created By SAMPLE-3D GUI for i-line;
2 0.3650;
3 0.3200;
4 0.0000;
5 0.5000;
6 2.850000 2.160000 0;
7 Cutout = (0.820000,1.270000) (1.200000x0.890000) 1;
7 Cutout = (0.820000,0.000000) (1.200000x0.870000) 1;
7 Cutout = (1.620000,0.870000) (0.400000x0.400000) 1;
7 Cutout = (0.820000,0.870000) (0.400000x0.400000) 1;
10;
11 0.000000 0.000000 2.850000 2.160000 `image.cnt';
#Bleach File Created By SAMPLE-3D GUI for Bleach.input;
resmodel ((0.3650)
(1.0500, 0.1100, 0.0120)
(1.8200, -0.0330)(1.0000));
layers (6.5220, -2.7050);
dose 180.0000;
exposerun;
heatdiffus 0.0800 1;
devrate 2 (0.0759 0.0001 7.4600);
#Command line for 3D etch simulation;
develop -b rval.3D.binary -mdens 10 -et 120.0;
The picture below was generated by using DEVELOP with a development time of 120 seconds.

7.4 Etching Simulation: Plasma Etching

This example illustrates the barreling phenomenon which resulting in ion enhanced plasma etching. Energetic ions hit the bottom of the trench resulting in a higher etch rate there. However, reactive neutrals can still attack the sidewalls resulting in a negative profile slope just under the mask. A typical input deck for this dry etching simulation is shown below. The final picture took 1290.8 seconds of CPU time to evolve. For an explanation of the commands used in this input deck, please refer to the MAN PAGES at the end of this User Guide.

#an input deck for a Plasma Etching Simulation
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
meshdensity 10;
meshaccur 0 0 1 2;
maskpiece 0 -0.21 -0.21 0.42 0.42;
setmask 0;
adv_method 1;
analytic_rate 12;
etchtime 2.0 0.04;
run;
plot3D;
plot2D -1.0 0.0 1.0 0.0 plasmaetch.2D.00s;
clearmask;
#sets advancement method to facet adaptive
adv_method 3;
#invokes the plasma etch model with:
#f=0.0; q=0.0; ion_flux=0.5; s=0.0; m=1.0
etchmodel 2 0.0 0.0 0.5 0.0 1.0;
etchnumlay 2;
etchlayer 1 0.2 0.0 0.0 0.0;
etchlayer 0 0.8 0.0 1.0 0.0;
damage 0 6.0;
etchtime 0.1 0.2;
#run simulation 4 times for intermediate plots
#same as the command ``etchtime 0.4 0.2;''
run;
plot3D plasmaetch.01s;
plot2D -1.0 0.0 1.0 0.0 plasmaetch.2D.01s;
run;
plot3D plasmaetch.02s;
plot2D -1.0 0.0 1.0 0.0 plasmaetch.2D.02s;
run;
plot3D plasmaetch.03s;
plot2D -1.0 0.0 1.0 0.0 plasmaetch.2D.03s;
run;
plot3D plasmaetch.04s;
plot2D -1.0 0.0 1.0 0.0 plasmaetch.2D.04s;
quit;
Table 1.            Plasma Etching: Dry Etch Simulation Model Parameters
Rates Fluxes Variations Sputter Yield
Ris=0.0 neutral_m=1.0 RNdep* So=0.0
Rdi=0.0 ion sigma=0.0 alpha* density=1.0
Rdn=1.0 ion current=0.5 lambda* a1*
Damage (Dn)=6.0 charging* a2*
Rii=0.0 Fii=1.0 a3*
* These parameters were not used in this simulation

7.5 Etching Simulation: RIE Lag

The phenomenon of RIE lag is shown below. Different etch rates are computed for different size contact holes. The larger hole allows a greater number of particles to contribute to the etch rate, resulting in a deeper trench. The simulation used up 1544.60 seconds of CPU time.

sim_region -1.0 1.0 -0.4 0.4 -1.0 1.0 0.0;
meshdensity 10;
meshaccur 0 0 0 2;
maskpiece 0 0.211052631 -0.21 0.42 0.42;
maskpiece 0 -0.52578947 -0.10473684 0.24 0.24;
setmask 0;
adv_method 1;
analytic_rate 12;
etchtime 2.0 0.04;
run;
plot 3D;
plot 2D -1.0 0.0 1.0 0.0 plasmalag.2D.00s;
clearmask;
adv_method 3;
etchmodel 2 0.0 0.0 0.5 0.0 4.0;
etchnumlay 2;
etchlayer 1 0.2 0.0 0.0 0.0;
etchlayer 0 0.8 0.0 1.0 0.05;
damage 0 5.0;
etchtime 0.1 0.2;
hemisize 45 10;
run;
plot3D plasmalag.01s;
plot2D -1.0 0.0 1.0 0.0 plasmalag.2D.01s;
run;
plot3D plasmalag.02s;
plot2D -1.0 0.0 1.0 0.0 plasmalag.2D.02s;
run;
plot3D plasmalag.03s
plot2D -1.0 0.0 1.0 0.0 plasmalag.2D.03s;
run;
quit;
Table 2.            RIE Lag: Dry Etch Model Parameters
Rates Fluxes Variations Sputter Yield
Ris=0.0 neutral_m=4.0 RNdep* So=0.0
Rdi=0.0 ion sigma=0.0 alpha* density=1.0
Rdn=1.0 ion current=0.5 lambda* a1*
Damage (Dn)=5.0 charging* a2*
Rii=0.05 Fii=1.0 a3*
* These parameters were not used in this simulation

7.6 Etching Simulation: Reflection

This example serves to illustrate the anisotropy which results when a simple reflection model is added to the simulation. The etch rate at the bottom of the trench is enhanced. This is modeled by using non-zero values for Rdn (the direct neutral etch rate) and Rii (the reflected rate). 911.8 seconds of CPU time were taken to run this simulation.

#an input deck to simulate the reflection model used in etching
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
meshdensity 10;
meshaccur 0 0 1 2;
maskpiece 0 -0.21 -0.21 0.42 0.42;
setmask 0;
adv_method 1;
analytic_rate 12;
etchtime 1.0 0.02;
run;
clearmask;
adv_method 3;
etchmodel 2 0.0 0.0 0.5 0.0 1.0;
etchnumlay 2;
etchlayer 1 0.2 0.0 0.0 0.0;
#the line below sets the rates:
etchlayer 0 0.8 0.0 1.0 0.5;
damage 0 3.0;
etchtime 0.1 0.2;
run;
plot3D plasmarfl.01s;
plot2D -1.0 0.0 1.0 0.0 plasmarfl.2D.01s;
run;
plot3D plasmarfl.02s;
plot2D -1.0 0.0 1.0 0.0 plasmarfl.2D.02s;
run;
plot3D plasmarfl.03s
plot2D -1.0 0.0 1.0 0.0 plasmarfl.2D.03s;
run;
plot3D plasmarfl.04s
plot2D -1.0 0.0 1.0 0.0 plasmarfl.2D.04s;
quit;
Table 3.            Reflection: Dry Etch Model Parameters
Rates Fluxes Variations Sputter Yield
Ris=0.0 neutral_m=1.0 RNdep* So=0.0
Rdi=0.0 ion sigma=0.0 alpha* density=1.0
Rdn=1.0 ion current=0.5 lambda* a1*
Damage (Dn)=3.0 charging* a2*
Rii=0.5 Fii=1.0 a3*
* These parameters were not used in this simulation

7.7 Etching Simulation: Dovetail in Reflection

When the ion enhancement term that is induced as a result of the damage to the wafer surface is removed, the inside corners of the trench etch faster due to reflection. This results in a convex taper to the bottom of the trench which looks like a dovetail. This run consumed only 211.05 seconds of CPU time.

#an input deck to simulate a dovetail
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
meshdensity 10;
meshaccur 0 0 1 2;
maskpiece 0 -0.21 -0.21 0.42 0.42;
setmask 0;
adv_method 1;
analytic_rate 12;
etchtime 1.0 0.02;
run;
clearmask;
adv_method 3;
etchmodel 2 0.0 0.0 0.5 0.0 1.0;
etchnumlay 2;
etchlayer 1 0.2 0.0 0.0 0.0;
etchlayer 0 0.8 0.0 1.0 0.5;
etchtime 0.1 0.2;
#notice that no damage term is included
run;
plot3D plasmarfln.01s;
plot2D -1.0 0.0 1.0 0.0 plasmarfln.2D.01s;
run;
plot3D plasmarfln.02s;
plot2D -1.0 0.0 1.0 0.0 plasmarfln.2D.02s;
run;
plot3D plasmarfln.03s;
plot2D -1.0 0.0 1.0 0.0 plasmarfln.2D.03s;
run;
plot3D plasmarfln.04s;
plot2D -1.0 0.0 1.0 0.0 plasmarfln.2D.04s;
quit;
Table 4.            Dovetail in Reflection: Dry Etch Simulation Model Parameters
Rates Fluxes Variations Sputter Yield
Ris=0.0 neutral_m=1.0 RNdep* So=0.0
Rdi=0.0 ion sigma=0.0 alpha* density=1.0
Rdn=1.0 ion current=0.5 lambda* a1*
Damage (Dn)=0.0 charging* a2*
Rii=0.5 Fii=1.0 a3*
* These parameters were not used in this simulation

7.8 Deposition Simulation: Sputter Deposition

Sputter Deposition entails deposition into a contact hole. The flux rate during deposition is described by

flux = cosn(Aφ)

The following SAMPLE-3D input deck was used to simulate physical vapor sputter deposition into a square contact hole that was first istropically etched for 5.0 seconds. Notice that the setnewlayer instruction needs to be specified in order to create a layer for deposition. 532 seconds of CPU time were required to run this simulation.

#an input deck to simulate sputter deposition
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
analytic_rate 12;
etchlayers 1 1.0 0.1;
meshaccur 0 0 0 2;
maskpiece 0 -0.5 -0.5 1.0 1.0;
setmask 0;
noclip 1;
adv_method 1;
#first do an isotropic etch into wafer surface
etchmodel 0;
meshdensity 8;
etchtime 5.0 0.2;
run;
noclip 1;
clearmask;
#then do hemispherical deposition on the mask
depomodel 3 -0.2 2.0 1.2 0.0 0.0 0;
setnewlayer;
adv_method 3;
depotime 1.0 0.2;
run;
plot3D sputter1.10;
plot2D -1.0 0.0.10 0.0 sputter1.2D.10;
run;
plot3D sputter1.20;
plot2D -1.0 0.0 1.0 0.0 sputter1.2D.20;
run;
plot3D sputter1.30;
plot2D -1.0 0.0 1.0 0.0 sputter1.2D.30;
quit;
Table 5.            Sputter Deposition: Model Parameters
σ (sigma) n/a
A 1.2
n 2.0

7.9 Deposition Simulation: Surface Migration

During Sputter Deposition, it is assumed that particles have a very low mobility when they hit the surface. Unfortunately, this leads to cracks, poor step coverage, and other phenomena which do not lead to reliable integrated circuits. Raising the substrate temperature, however, often increases the mobility of surface particles. This effect, in the absence of viscous flow or recrystallization can be modeled by considering simple surface migration.

As usual, an input deck simulating surface migration is given below. The execution of this input file took 1229.8 seconds of CPU time.

#an input deck to simulate surface migration
sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0;
analytic_rate 12;
etchlayers 1 1.0 0.1;
meshaccur 0 0 0 2;
maskpiece 0 -0.5 -0.5 1.0 1.0;
setmask 0;
noclip 1;
adv_method 1;
etchmodel 0;
etchtime 5.0 0.2;
run;
noclip 1;
clearmask;
#hemispherical deposition where n = 1.0, A = 1.2
depomodel 3 -0.2 1.0 1.2 0.0 0.0 0;
#the following line sets sigma = 0.2
deposurfmigration 0.2 1;
hemisize 45 10;
setnewlayer;
adv_method 3;
depotime 1.0 0.2;
run;
plot3D surfmign.10;
plot2D -1.0 0.0 1.0 0.0 surfmign.2D.10;
run;
plot3D surfmign.20;
plot2D -1.0 0.0 1.0 0.0 surfmign.2D.20;
run;
plot3D surfmign.30;
plot2D -1.0 0.0 1.0 0.0 surfmign.2D.30;
run;
plot3D surfmign.40;
plot2D -1.0 0.0 1.0 0.0 surfmign.2D.40;
quit;
Table 6.            Surface Migration: Model Parameters
σ (sigma) 0.2
A 1.2
n 1.0

7.10 Deposition Simulation: Depositing into a Mesa

A ``Mesa'' is the so-called inverse of a square contact hole. It can be viewed as a square step since its polarity is the exact opposite of the polarity of the square contact hole. This means that the mask is now opaque while the background is transparent. A ``Mesa'' is an important application since it can be used to represent one of the six corners of an elbow. The other five corners of the elbow trench can be represented by square contact holes. Therefore, superimposing the results of depositing into these two structures should give us the result of depositing into an elbow trench.

The following SAMPLE-3D input deck can be used to simulate square step deposition. It took 666.4 seconds of CPU time to obtain the resulting 3D profile.

sim_region -1.0 1.0 -1.0 1.0 -1.0 1.0 0.0
analytic_rate 12;
etchlayers 1 1.0 0.1;
meshaccur 0 0 0 2;
maskpiece 0 -0.5 -0.5 1.0 1.0;
#setmask = 1 means that mask features are opaque #and background is open, i.e. etched into
setmask 1;
noclip 1;
adv_method 1;
#first do an isotropic etch into wafer surface
etchmodel 0;
meshdensity 8;
etchtime 5.0 0.2;
run;
noclip 1;
clearmask;
#then do hemispherical deposition
depomodel 3 -0.2 2.0 1.2 0.0 0.0 0;
setnewlayer;
adv_method 3;
depotime 1.0 0.2;
run;
plot3D mesa.10;
plot2D -1.0 0.0.10 0.0 mesa.2D.10;
run;
plot3D mesa.20;
plot2D -1.0 0.0 1.0 0.0 mesa.2D.20;
run;
plot3D mesa.30;
plot2D -1.0 0.0 1.0 0.0 mesa.2D.30;
quit;
Table 7.            Depositing into a "Mesa": Model Parameters
σ (sigma) n/a
A 1.2
n 2.0

NOTE: So far we have seen that the pattern transfer utility is able to simulate a wide variety of complex processes. The simulation of the Mesa shows some of the problems that occur while trying to simulate such processes. The figure below has the right physical shape; however, we see that the surface seems to fall down from the edge.

7.11 Extracting Solid Elbows for Mutual Capacitance

This example shows the use of the input file command createfastcapfile. After performing an etching simulation through the different substrate layers, you may want to extract solid geometry information from the surface representation and perform a mutual capacitance analysis using FastCap. The example figures shown below were generated as a result of resist and plasma etching through the following input file.

#simulate & extract polylines to FastCap
loadrate 0 rval.3D.binary.elbow.ibm;
sim_region 0.0 2.0 0.0 2.0 -1.0 1.0 0.0;
celldensity 49 49 101;
meshdensity 4;
meshaccur 0 0 0 0;
meshcheck 1;
adv_method 1;
etchmodel 0;
etchtime 20.0;
noclip 1;
run;
transferpattern 1.0;
plot3D transfer.plot;
adv_method 3;
etchmodel 2 0.0 0.0 0.5 0.0 1.0;
etchnumlay 2;
etchlayer 1 0.85 0.0 0.0 0.0;
etchlayer 0 1.15 0.0 1.0 0.0;
damage 0 3.0;
etchtime 0.1 0.2;
run;
plot3D surf_etch1.plot;
run;
plot3D surf_etch2.plot;
run;
plot3D surf_etch3.plot;
createfastcapfile 1 -0.1 0.0 0.001 elb_cap.inp;
plot3D poly_elbows.plot;
quit;
As a result of the etching procedures, the surface representation of the two polyline elbows is shown below. This plot is a consequence of the plot3D surf_etch3.plot command in the input file above.

After issuing the command to createfastcapfile, the surface is intersected with bounding planes in the X,Y, and Z directions. The result is shown below. This figure is a consequence of the second plot3D poly_elbows.plot command.

For the extraction of solids from your etched surface, it may be important to suppress clipping of the etched surface (noclip 1;). Using this command retains at least one node on the etched surface in the corner of an X/Y simulation boundary. The algorithm used to properly identify which parts of an intersected surface can be eliminated uses this node to identify the portion of the surface to be retained.

At this point, a new file called elb_cap.inp has been created. This is an input file generated using the FastCap generic file format. Running FastCap with this input file produces the following capacitance matrix.

INPUT SUMMARY
Expansion order: 2
Number of partitioning levels: 4
Overall permittivity factor: 1
Total number of panels: 1326
Number of conductor panels: 1326
Number of dielectric interface panels: 0
Number of thin conductor on dielectric interface panels: 0
Number of conductors: 2
No expansions at level 4 (lowest)
Percentage of multiplies done by multipole: 82.8%
ITERATION DATA
Starting on column 1 (922_Triangle_Poly%GROUP1)
1 2 3 4 5 6 7 8
Starting on column 2 (404_Triangle_Poly%GROUP1)
1 2 3 4 5 6 7 8
CAPACITANCE MATRIX, attofarads
1 2
922_Triangle_Poly%GROUP1 1 116.3 -50.12
404_Triangle_Poly%GROUP1 2 -50.12 77.77
The utilities for extraction of solid geometries from a single surface in SAMPLE-3D are located among three modules. The primary module is called fastcapio.[hc] which contains the procedure for extracting the solids. Having created a self enclosed surface, functions for writing the surface geometry to a FastCap generic file format for capacitance analysis are also located in this module.

The fastcapio.[hc] module makes extensive use of two additional modules called intsurf.[hc] and thintria.[hc]. The intsurf.[hc] module contains routines for intersecting surfaces, combining the intersected surfaces, identifying a discontinuous surfaces, and separating a discontinuous surface into multiple surfaces. The thintria.[hc] module contains many query type functions that asks questions about the triangulation of the surface and how triangles can be manipulated so as to remove unwanted triangles without altering the macroscopic features in the surface topography. Of most power in this module is the function called remove_small_thin_triangles_throughout_surface().

8.0 About the Source Code

The source code for all SAMPLE-3D modules is available in this release version in case the user wants to modify or extend the models or utilities implemented in SAMPLE.

All models and utilities in SAMPLE are written either in C or in FORTRAN. Specifically, SPLAT ver5.0 is written in FORTRAN. The rest (BLEACH, NEtch, DEVELOP etc.) are written in C.

This section is meant to give the user a feel for the code organization, simulation as well as flow, some introductory information about the data-structures and various geometric operations in SAMPLE-3D. The information in this section is applicable primarily for the DEVELOP and NEtch modules. For a more comprehensive overview of system and source code organization in SAMPLE-3D please refer to Ed Scheckler's thesis.

SAMPLE-3D can be viewed at three levels of abstraction.

1. At the wafer state level. It maintains a wafer state representation (3D topography description) and alters it according to process models.

2. At the process flow level. It consists of a well-defined program flow for executing operations (unit process steps) on a wafer state representation.

3. At the geometric utility level. It is a collection of surface evolutions, visibility and geometric utilities for coupling process models to the advancement of a topography representation.

The layout of process simulation tools in SAMPLE-3D is shown below.

The process flow view is shown below:

Overall SAMPLE-3D Program Flow:

The basic program flow for all SAMPLE-3D programs mirrors the program flow of NEtch. After initialization, the program parses input commands from an input file. Depending upon these commands, different operations are performed. Many of the operations initialize model parameters or the surface state. Once the models are entered, the program may execute a ``run'' command. Three different run operations are possible:

1). a ray-trace algorithm for lithography development.

2). a facet-motion algorithm for general etching and deposition simulation.

3). a cell-removal algorithm for lithography simulation.

Each of these consists of a loop wherein rates are derived from a process model and applied to a topography deformation algorithm. Modules for updating and refining topography are also included.

The physical models are connected to the algorithms in the step in which the rate for each surface element node is set. Once the rate information is fully specified, facets are advanced and the surface is reconstructed. In general, the full surface motion algorithm must be applied to reconstruct the surface. This process is continued until the simulation time specified by the user is reached. Then the next set of commands entered by the user are deciphered and interpreted.

DATA VIEW

SAMPLE-3D consists of numerous data-files created by running each program. The files are active objects and are passed around from program to program depending upon the process simulation that is desired. The data view in SAMPLE-3D is best explained by the following picture:

SPLAT puts out a 2D or 3D intensity file which can then be sent to bleach for deciphering etch rates. SPLAT can also write a contour file which can be viewed using CONTOUR. BLEACH then outputs an ascii or binary ratefile which can be sent to DEVELOP for resist development simulation. DEVELOP can write the final result in PDRAW and DRAWPLOT formats.

NEtch can also put out the result of running the simulation in PDRAW and DRAWPLOT formats. If a solid extraction step is also desired, an internal transfer of data is carried out so that the current state of the surface can be captured.

9.0 Appendix of Man Pages

This section contains a list of commands in Unix manual page style for the following SAMPLE-3D component programs:

NEtch

Crater

Develop

Pdraw

Contour

For a comprehensive list of SPLAT commands, please consult the SPLAT manual. A preliminary list of commands can be found in Section 6.1 of this users's manual.


Last Modified: 06:02pm , July 24, 1998