With TFSim (Microsoft Store)
you can simulate and visualize 3D cross sections for semiconductor and MEMS thin film and patterning processes.
You can save the cross section after each process step in bitmaps. Each layer can also be saved in the standard STL format for 3D models.
This image shows a simplified semiconductor device cross section of a FINFET device produced with TFSim.
Such cross sections are difficult to draw by hand, in particular with many films and complicated mask layers. With TFSim you automate this based on the mask layout and the process flow to build the device.
How to run TFSim
The image below shows the main window of TFSim after it is launched:
The top window will show the rendered images when running a process script and the bottom window displays a console with relevant information. The status bar on the bottom displays the GDS and process script file currently loaded.
To run a session follow these steps:
Make a working folder on your PC. For example C:\TFSim\My-first-finfet\.
Prepare a process script file and store it in this working directory. This is a text (*.txt) file with the process steps. A process file that works with the above GDS file to make the cross section in the introduction can be downloaded from here:
download the example process script file
.
Prepare the GDS file with your layout. An example GDS layout for the FINFET device in the introduction section can be downloaded from here:
download the example GDS file
. The GDS does not need to be stored in the working folder but it could be convenient to do so.
Select Load GDS in the menu and select the GDS file that you just prepared.
Select Run Process in the menu. The program will load the process script and will run through the process steps displaying the images after every step. Possible errors in the process script are reported in the console window. In that case, edit the process script file and select ‘Run Process" again.
When the process simulation is completed, you can navigate with the arrow keys through the cross sections after each process step.
Based on the results, you can modify the process script and run the process again. You do not need to reload the GDS file each time, unless you want to have the process run with a different GDS layout.
If you’re satisfied with the results, you can save the renderings to high resolution bitmap and/or 3D STL files by selecting the Save Images menu. Also, you can save some basic statistics like the film thickness and area coverage of the film stack to a simple text file.
TFSim’s output files will be stored in a newly created subfolder in the working directory with the time of creation in the subfolder name. Besides the bitmaps and STL files, a copy of the process script file is stored.
The Process File
A process script is a text (*.txt) file with process commands you can create with any text editor. It contains a few commands with settings, followed by commands that describe the process flow to build the thin film stack. This is an example process file:
# GENERAL SETTINGS
set(N = 1400, angle = 25, heights = False, legend = True)
# CELL NAME IS "TOP"
gds(cell = TOP)
# CROSS SECTION LOCATION
loc(x = 0.000, y = -0.015, dx = 0.105, dy = 0.090)
# BUFFER OXIDE
dep(mat = OX, type = SIO2, t = 11, sc = 0.0, color = [0.16, 1.00, 0.16])
# SOURCE/DRAIN DEPOSITION
dep(mat = SD, type = AL, t = 55, sc = 0.0, color = [0.59, 0.59, 1.00])
# SOURCE/DRAIN PATTERNING: depth = 0
pat(mask = SD, id = 0, type = Dark, res = 0.001, taper = 89, bias = 0.0, mxdepth = None, targets = [AL])
# GATE INSULATOR DEPOSITION
dep(mat = GI, type = SIN, t = 11, sc = 0.6, color = [0.70, 0.70, 0.00])
# GATE METAL DEPOSITION
dep(mat = GM, type = AL, t = 11, sc = 0.3, color = [0.00, 0.00, 1.00])
# GATE METAL PATTERNING
pat(mask = GM, id = 3, type = Dark, res = 0.001, taper = 89, bias = 0.0, mxdepth = 15, targets = [AL])
# DEMONSTRATES A BLANKET ETCH
bla(mxdepth = None, targets = [SIN])
Here a the explanation and considerations:
Lines in the process script consist of a command name (dep, pat, etc.) followed between parentheses by named arguments with values. The arguments are separated by commas.
A valid process script needs to contain at least one occurrence of the set, gds, and loc commands, since these give basic settings required for the program to run.
All arguments are mandatory. You do not need to give them in order, but it is
recommended you do for consistency.
Empty lines are ignored. Text following the comment symbol # is ignored and can be used for comments.
The available parameter types for the parameter values are the BOOLEAN (True or False), INTEGER, FLOAT, and IDENTIFIER. Some parameters require a list like in Python except that lists can not be nested. For example a list is used to specify the colors of a film: color = [1.0, 1.0, 1.0]. This will specify the RGB values with each color component from 0.0 to 1.0.
An IDENTIFIER is defined as in Python but it allows a leading digit. For example, the cell name in the gds command can be 0TOP. Identifiers are used to specify material names and types. E.g. ILD and SIO2. Also they’re used to specify the targets of an etch during patterning.
A material name is a unique name for a material e.g. M1 or M2. The names need to be unique but the materials types for each can be the same. For example, the material type can be AL for both M1 and M2 as an abbreviation for Aluminum.
No parameter type conversion takes place e.g. from FLOAT to INTEGER or vice versa. This means you need to be strict in entering the right type. A FLOAT needs to contain a decimal period. For example, “0.5”, “5.” or “-.1”. An INTEGER can not contain a decimal period.
All Commands
The following gives all available commands in the TFSim process script.
The set command
This mandatory command specifies the settings for the simulation session:
Specifies the number of columns for the process simulation. This needs to be from 400 (fastest execution but low resolution) to 2000 (slowest execution, high resolution, and high memory use). Around 1000 is generally a good choice.
angle
Specifies the camera angle with respect to the horizon in degrees. Needs to be from 0 (front view) to 90 (top view). This is front view of the FinFET example of the introduction:
while this is the top view:
heights
Specifies if height values of the top surface are shown. The heights are in Angström placed at regularly spaced locations in the cross section as illustrated here:
legend
Specifies if a legend with layer names for each color is shown.
The gds command
This command sets the cell to take the cross section from. It needs to be a cell in the GDSII file loaded by the Load GDS menu:
gds(cell=IDENTIFIER)
cell
Specifies the cell name. The name, as will all identifiers, cannot contain spaces. Be sure to enter the correct cell name or the results can be unexpected.
The loc command
This command sets the cross-section location in the cell specified through the gds command above:
loc(x=FLOAT, y=FLOAT, dx=FLOAT, dy=FLOAT)
x
Specifies the x coordinate in um of the cross section in the GDS cell specified by the gds command above.
y
Specifies the y coordinate of the cross section in um.
dx
Specifies the horizontal width of the cross section in um.
dy
Specifies the horizontal depth of the cross section in um. This needs to less or equal to the width dx. If not, dy will be truncated to dx with a warning. Also, its value can not be less than 10% of the width.
It’s good practice to double check the coordinates since it’s easy to enter wrong one leading to unexpected results. Also, for the cross section width dx do not enter too small or too large values:
Too small values compared to the typical feature CDs (large zoom-in) could not show meaningful information.
Too large values compared to the typical feature CDs on the mask (far zoom-out) could lead to a large amount of “unresolvable” polygons.
Specifies the name of this layer. The name is used as label of the layer in the image output files. The name can not be used in an earlier deposition or coating step.
type
The material type of this layer. Different layers can have the same material type. For example, a device with 3 metals M1 to M3 can all be of material type.
t
Specifies the thickness of the material in Angström. Be sure to enter the right number or the results can be unexpected.
sc
Specifies the step coverage of the layer as ratio of the layer thickness. It needs to be from 0.0 from 1.0. For example, with 1.0 the entire film thickness will be deposited on vertical sidewalls of the underlayer. Note: use 0.0 for flat layers since higher values are meaningless but result in unneccesary computing times.
color
A Python style list of 3 floats each from 0.0 to 1.0 determining the color in the RGB format. For example [1.0, 1.0, 1.0] is white and [1.0, 0.0, 0.0] is red.
The coa command
This command specifies a coating step. The arguments are mostly the same as for the dep command but instead it does not have a sc step argument and it contains an argument dop specifying the degree of planarization:
Specifies the degree of planarization of the coating from 0.0 to 1.0.
This parameter determines how well the coating step covers the underlying topography. The image below is a coating with a degree of planarization close to 1.0 resulting in a close to flat surface:
The pat command
This command executes a pattern and etch step combining a single mask step of photolithography, etch, and photoresist strip:
Specifies the name of the mask used in the patterning step.
id
Specifies the layer number in the GDSII database from 0 to 65535.
type
Specifies the mask type which is either Dark (data is dark) or Clear (data is clear)
res
Specifies the photolitho resolution in um. For example, for 13.5 nm you enter 0.0135. For a typical I line stepper for OLED or LCD manufacturing with resolution 1.5 um you enter 1.5.
`taper'
Specifies the taper angle of the etch after patterning. See the figure below in the bias argument.
mxdepth
The maximum depth in Angström or None if there’s no maximum.
bias
The double-sided CD bias of the patterning step. The bias together with the CD on the mask determines the top opening of a feature. Together with the taper angle and the film thickness it determines the bottom opening. This is illustrated here:
targets
A list of identifiers specifying the material types to be etched in this patterning step. The material types need to have been defined as the type argument of one or more deposition or coating steps.
The bla command
This command executes a blanket etch without photo mask. The two arguments are the same as that of the pat command:
bla(mxdepth=INTEGER, targets=list[IDENTIFIER])
The rel command
This command executes a release process common in MEMS manufacturing. The difference with a blanket etch is that also the film is removed if it’s located in the middle of the stack. The argument is the same as the targets argument of the pat command:
rel(targets=list[IDENTIFIER])
Versions
The latest version is 1.5 with bug fixes and an improved material legend layout. Also the triangles in the STL files are not pre-merged anymore to allow the user for more options for downstream processing. Memory usage might and STL file sizes
might get larger.