Process Tutorial

From Flooxs
Jump to navigation Jump to search

FLOOPS is the subset of FLOOXS that deals with process modeling of electronic devices. This page serves as an introduction to the commands and concepts used by FLOODS to model electronic device fabrication. The goal of process modeling is to use physics informed models to predict how different process parameters change the structure of electronic devices .

Semiconductor Process Tutorial

Each step in the device fabrication process is modeled by a FLOOPS command that uses the LevelSet method to compute the structure. Once the structure is computed a new mesh is generated and another process step can be applied to the mesh. Each command will be explained and an example will be given.

Base Layer and Gas

In order to preform any device fabrication we need to start with a base layer. This base layer can be a silicon wafer, oxide, or some other material that thin films can be processed on. To begin modeling another material called Gas is needed. Gas is a region of the mesh that allows FLOOPS to keep track of some region outside the base layer. To create these two materials run the following commands:

   line x loc=-1.5 spac=0.1 tag=GasTop 
   line x loc=0.0  spac=0.1 tag=Top
   line x loc=1.0  spac=0.1 tag=Bottom
    
   line y loc=-2.0 spac=0.1 tag=Left
   line y loc=2.0  spac=0.1 tag=Right
   
   region Gas     xlo=GasTop xhi=Top    ylo=Left yhi=Right
   region Silicon xlo=Top    xhi=Bottom ylo=Left yhi=Right
   init
   
   window row=1 col=2 width=800 height=800
   plot2d grid gas

The line commands define spatial locations that need to be in increasing order in each xyz dimension. The region command creates a box region of the specified material in the line tags. Init generates the mesh based on the specified regions. To plot the grid we use the window command to open up a window with 2 plot columns of with 800 pixels and height 800 pixels. The two columns will be useful later. To actually plot the grid the 'plot2d grid gas' command plots the grid and the gas. You should get the following result:

Deposit

The next step we are going to deposit an oxide isotopically. Using the -help command that works on all commands, we see the deposit command has the following options:

   deposit -help

Result of above command:

   Deposit
   Length Scale Default is microns which can be changed with the option command
   Name            Type     Default               Information
   mater           Switch                        material specification
   rate            Float    1.000000e-01         isotropic deposition rate default length scale/min
   time            Float    1.000000e+00         isotropic deposition time min
   spacing         Float    1.000000e-02         spacing in the level set mesh
   grid            Int      1                    grid steps in the deposition
   tolerance       Float    1.000000e-02         grid accruacy tolerance in default length scale
   plot.surface    Boolean  0                    plot the surface step by step

From the list of these options we see that to deposit a material we only need to specify the material name. However, we probably want to specify the rate and time to match our exact process. For this example we will run the following command after our Base Layer and Gas example.

   deposit oxide time= 5.0 spacing= 2.0e-2
   plot2d grid gas

This deposits an oxide that is about 500nm thick. The spacing command is something you can play around with. It is a command that defines the spacing of the LevelSet grid and has the following tradeoff, making it larger decreases computation time but makes the computation less accurate. The results of this deposition:

Etch

To perform an etch we need to define a mask before we etch. A mask needs a name, to know if it is positive or negative, and an exposed region defined by left and right. A negative mask will remove what is between the markers while a positive mask will remove everything but what is in between. By default the mask command creates a positive mask. To make a negative mask specify the word negative. The following commands set the mask, etch, and plot.

   mask name= mask1 negative    left=-1.500 right= -0.500
   etch oxide aniso mask= mask1 time=6.5    spacing= 3e-2 
   plot2d grid gas

The results of the tutorial so far plus the three commands are as follows:

After over etching for a bit, we were able to etch a hole through the oxide to the silicon base layer. Now in a typical fabrication process, we would probably dope the wafer at this point. To illustrate this, we will use the implant command.

Implant

The implant command has many capabilities so it is best if we start by looking at the options given by the -help command.

   implant -help

Results of above command:

   mater           Switch                        material specification
   species         String                        species name
   file            String                        data file location
   min.conc        Float    1.000000e+10         minimum concentration to use
   name            String                        Data Field name
   mod             Switch                        what model this file is used for
           pearson         Boolean
           gaussian        Boolean
           tasch           Boolean
           dualpearson     Boolean
   adapt           Boolean  1                    adapt the mesh to fit the implant
   energy          Float    0.000000e+00         energy in keV
   dose            Float    0.000000e+00         dose in cm-2
   angle           Float    0.000000e+00         wafer tilt to beam
   tilt            Float    8.000000e+00         wafer tilt to beam
   rotation        Float    3.000000e+01         wafer rotation
   sliceang        Float    0.000000e+00         2d slice angle
   mult_rot        Int      1                    rotate the wafer
   dop             Switch                        species
           boron           Boolean
           arsenic         Boolean
           phosphorus      Boolean
           bf2             Boolean
           antimony        Boolean
   mask            String                        mask for the implant

By default FLOOPS detects what materials are present and has values preloaded for the dopants displayed above. The mask becomes unnecessary in our case. Only the dopant, dose, and energy need to be given for most calculations. Let's now run the implant with typical values and see what the results are.

   implant boron dose=1.0e15 energy=20
   sel z= Boron*material(Silicon)
   plot2d levels=100 graph= Boron

The reulsts of the implant can be seen with the sel z= command. This command creates a string buffer that is plotted using the plot2d command. The tag levels=100 specifies the number of color levels used in the tow dimensional plot. The results are as follows:

Diffusion

Diffusion simulation is accomplished by solving Fick's law diffusion using the partial differential equation solver available in FLOOXS. Thus far, the user has been exposed to FLOOXS as an extension of the TCL programming language. Performing Fick's law Diffusion requires the use of the alagator scripting language to solve partial differential equations.

First, the diffusion species must be defined as an alagator partial differential equation solution variable with the solution command. We will use Boron as an example.

   solution add name=Boron pde solve !negative

Second, the governing equation can be written in the alagator scripting language. For Fick's law diffusion, two special operators are needed: ddt() for a single time derivative and grad() for the Laplacian operator (two spatial derivatives are implied). All alagator pde equations are written implicitly equal to zero. Thus the Newton-Raphson method is used to find the solution by finding the roots of the equations. Units are cgs units. The diffusion constant of 1e-17 has units cm^2/s.

   pdbSet Si Boron Equation "ddt(Boron) - 1e-17*grad(Boron)"

Lastly, the diffusion simulation must be run on the finite element grid. This is accomplished with the diffuse command. Two arguments are given to this command, time and movie. Time is the amount of time to run the diffusion simulation in seconds. Movie is a TCL code block that will be run every time step and is primarily used for plotting. The movie command is unnecessary for those interested in seeing the results of diffusion after a fixed time. The data after each diffuse step is stored as a field under the solution variable name. Any FLOOXS post-processing techniques can be used on the field data.

   diffuse time=10 movie = {
       sel z=Time
       set current_time [interpolate silicon x.val=0.1]
       ...
   }

Sputter

Metal can be sputtered with the sputter command. This command accounts for the visibility of each surface node to a hypothetical sputter target.

   sputter metal time=6