A basic semiconductor process simulator

By Jan Willem Bos: Send Email

Introduction

Process cross sections for IC or MEMS fabrication can be difficult to draw by hand. The layout can have many overlapping layers that can stack up in a complicated way. We have different film thicknesses, via taper angles, and etch biases. Photolithography generally introduces corning rounding which again is hard to visualize.

This software is for process or device engineers that do not want to spend a lot of time drawing process cross sections by hand.

It is used to make 3D process cross sections from a cell in a GDS layout file. The 3D layers are built with process steps listed in a custom process file.

The process file specifies the process steps in building the cross section. Layers can be deposited, coated with planarization, patterned with mask from a GDS layout, and released. Etch bias and effects due to litho resolutions can be simulated.

The process file also needs to contain the GDS cell name and the location of the cross section in the GDS cell.

Besides of use for IC and MEMS fabrication, this software can be relevant for Photonics fabrication, TFT display fabrication, Flexible Printed Circuits (FPC), Printed Circuit Boards (PCB) and Multi Chip Modules (MCM) and other technologies that use photolithography.

A simple GDS layout for a Thin Film Transistor (TFT) created for example by KLayout could look as follows:

Even with only three layers the resulting layer stack after fabrication is difficult to visualize due to the overlapping layers. If we run this through the process simulator program, the cross section comes out as follows:

The top layers in this case are drawn with transparency. The patterning includes a rounding effect due to the photo resolution which can be specified in the process file that the program reads together with the layout file.

The process file is a simple text file with all the processing commands. Parameters like the film thicknesses can be specified and for example the color that is used to display them. Also, parameters like pattern and etch bias can be entered. Layers can be shown with transparency.

Version

PSim is currently only available for Windows 64 bit. Check the version of your installed Gdsviewer through the About menu. The latest version is 3.1.0.

How to run PSim

  1. Download and run the Microsoft Software Installer: Download Setup File
  2. For some users it might be necessary to install Microsoft C/C++ redistributable for 64 bit windows: Download MS Redistributable
  3. Optional if you want to run an example: download and unzip the example GDS II database and a process file made for it: Download Example
  4. Create a working folder and move the example process file TFT example.txt and GDSII file Simple TFT.gds to it.
  5. Run PSim and load the GDS file through the menu
  6. Then run the process file:
  7. This will start the process simulation. A console window will display relevant information including possible errors found.
  8. Note that for GDS cells with many polygons, the GDS file collapse stage of the simulation could take a long time.
  9. The output bitmap files with the 3D cross sections will be placed inside a subfolder in the working folder.

Be sure to double check that the location of the cross section in the cell is correct. If wrong, you will just see a stack of blanket films.

Commands in the process file

Empty lines and lines starting with a # are ignored and can be used for commenting out lines. Below are all the commands that can be used with available named arguments. Arguments can be provided following the command in arbitrary order unless indicated otherwise. Arguments between square brackets [] are optional.

The gen command specifies some general settings:

-cam Integer from 10 to 40 specifying the viewing angle
-map Integer 1 or 0 specifying if the top heights are shown (1) or not (0)
-N Integer from 100 to 2000 specifying the number of columns in the grid used for the process simulation. The number of columns can be up to 2000 but the simulation can take a long time. Something like 1400 gives reasonable quality at faster simulation time. For very fast execution, use something like 400.

The gds command to specify the gds cell:

-cell Character string specifying the cell name to use in the GDS II database (no spaces allowed). Note that this cell will be flattened to individual polygons. To limit memory allocation the number of polygons contained in the cell within the target location is maximum one million which should not be a practical limitation.

The cut command specifies the cross section location:

-x Float specifying the bottom left x coordinate in um
-y Float specifying the bottom left y coordinate in um
-dx Float specifying the cross section's horizonal size
-dy Float specifying the cross section's vertical size. Truncated if larger then the horizonal size.

The dep command to specify a deposition step:

-name Character string specifying the name of the material (no spaces allowed)
-thickness Integer specifying the thickness of the material in nm
[-sc] Float from 0.0 (default) to 1.0 specifying the step coverage as fraction of the film thickness. A sc of 1.0 will deposit the entire film thickness on vertical sidewalls.
[-alpha] Float from 0.0 to 1.0 (default) specifying the the material transparency
-color 3 integers from 1 to 255 specifying R, G, and B and 1 integer from 0 to 100 specifying an overall brightness scaling percentage

The coa command to specify a coating step:

-name Character string specifying the name of the material (no spaces allowed)
-thickness Integer specifying the thickness of the material in nm
[-dop] Float 0.0 to 1.0 (default) to specify the degree of planarization. A degree of planarization of 1.0 (default) will result in a flat film regardless of the underlying topography while 0.0 will result in a conformal film.
[-rr] Float larger or equal to 0.0 specifying a reflow radius in um. The default is 0.0. It's roughly the radius in which the coated material will reflow.
[-alpha] Float from 0.0 to 1.0 (default) specifying the the material transparency
-color 3 integers from 1 to 255 specifying R, G, and B and 1 integer from 0 to 100 specifying an overall brightness scaling percentage

The pat command to specify a patterning (photo & etch) step:

-mask_name Character string specifying the mask name. Mask names are in a diffent name space from deposited and coated materials. If the mask_name is omitted, then it’s assumed to be a just a blanket etch and only the target materials should be entered.
-id Integer specifying the layer number (integer from 0 to 255) of the mask in the GDS file
-type Integer 0 or 1 specifying the mask type with 0 indicating clear type and 1 dark type.
[-res] Float larger or equal to 0.0 (default) specifying the resolution of the litho tool in um. This can be for example 1.5 um for a I line stepper from a TFT line.
[-bias] Float larger or equal to 0.0 (default) specifying the total pattern and etch bias of the patterning. It’s a double sided and measured on top of the feature.
-taper Integer specifying the taper angle in degrees in the interval (0, 90].
[-depth] Integer specifying the maximum depth in nm. The default is 0 in which case there is no maximum and the etch will complete till a etch stop layer is found.
-targets A list of character strings (each without space) seperated by a space that will be etched. Each must be a material previously deposited or coated. Materials not in this list will not be etched. This argument needs to be the last argument of this command.

The rel command to specify a material release:

-target A character string with the target material to be released. This must be a material previously deposited or coated.

The sto specifies to stop execution. All following commands in the process file are ignored. This is useful if you want to debug the process and stop execution somewhere halfway.

Example process file

The followings gives and example process commands with most of commands introduced in the previous section:


# EXAMPLE PROCESS FILE

# Show heights, camera at 30 degrees, 1200 columns
gen -map 1 -cam 30 -N 1200

# Cell "TOP" in the GDS II database
gds -cell TOP

# The cross section location and size
cut -x 1709 -y 812 -dx 35 -dy 25

# Silicon
dep -name PS -thickness 100 -color 0 0 230 100
pat -mask_name PS -id 3 -type 1 -res 1.5 -bias 0.5 -taper 60 -targets PS

# METAL1
dep -name GI -thickness 115 -color 255 0 0 100
dep -name M1 -thickness 200 -color 0 255 0 100
pat -mask_name M1 -id 1 -type 1 -res 3.0 -bias 1.1 -taper 60 -targets M1

# DIELECTRIC1 WITH VIA1
dep -name DI1 -thickness 800 -color 255 255 0 100 -alpha 0.5
pat -mask_name VIA1 -id 7 -type 0 -res 1.5 -bias 1.5 -taper 55 -targets DI1 GI

# METAL2
dep -name M2 -thickness 300 -color 0 255 0 80
pat -mask_name M2 -id 8 -type 1 -res 1.5 -bias 1.0 -taper 60 -targets M2

# DIELECTRIC2 WITH VIA2
dep -name DI2 -thickness 700 -color 255 255 0 80 -alpha 0.5
pat -mask_name VIA2 -id 9 -type 0 -res 1.5 -bias 1.5 -taper 55 -targets DI2