GDS Viewer for GDSII layout files
A program to view a GDSII file in 3D.
(c) 2022 - [email protected]
Process cross sections for MEMS or IC fabrication can be difficult to visualize. GDS layouts can have many overlapping layers that can stack up in a complicated way. Drawing cross sections by hand can be very time consuming with different film thicknesses, via taper angles, and etch biases. Photolithography generally introduces corning rounding which again are hard to visualize.
This program is used to make 3D process cross sections from a cell in a GDS layout file.
It requires a process file that 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. The program is also useful for Display Fabrication, Flexible Printed Circuits (FPC), Printed Circuit Boards (PCB) and Multi Chip Modules (MCM) and other technologies that use photolithography.
The process file also needs to contain the GDS cell name and the location of the cross section in the GDS cell.
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 viewer program, the cross section comes out as follows:
Note that 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.
How to run the program
It might take several runs to fix all errors in the process file. Also, be sure to double check the correction location of the cross section in the cell. If wrong, you will just see a stack of blanket films.
Commands in the process file
The commands in the process file are the following. Check the example process file in the package to really understand it. It is advised to run that as a start before making your own.
Empty lines and lines starting with a # are ignored and can be used for commenting out lines.
gen -cam -map -N
Used to enter general settings in making the cross section. Here -cam is followed by an integer 0 to 40 to specify the viewing angle with which the cross section is shown, -map an integer 0 or 1 to specify if or not film heights (in nm) are shown, and -N followed by an integer to specify the number of columns in the grid.
The number of columns can be up to 2000 but the simulation can take a long time. Something like 1200 gives reasonable quality. For very fast execution e.g. just to verify that the location is correct use something like 400.
gen -cam 30 -map 1 -N 1000
sets the camera angle at 30 degrees, makes sure film heights are shown, and sets the number of columns in the grid to 1000.
Specify the GDS cell
Used to specify the GDS cell to use. Here -cell is followed by cell name string without spaces. Note that this cell in the GDS file will be flattened to individual polygons. To limit memory allocation the number of polygons contained in the cell within the target location is maximum 10 million which should not be a practical limitation.
gds -cell TOP
selects the cell “TOP” in the GDS file selected in the main window.
Specify the cross section location and size
cut -x -y -dx -dy
A command specifying the location of the cross section in the GDS cell in GDS user units generally micrometer. The cuts can only be horizontal across the layout. A cut at a different angle can be achieved indirectly by rotating the layout in the GDS file. If the height of the cross section exceeds the width, the height is truncated to the width.
cut -x 8000 -y 1200 -dx 50 -dy 40
sets the origin of the cut at (8000 um, 1200 um) and the width and height at 50 um and 40 um, respectively. If the height is greater than the width, the height is truncated to the width.
Specify a deposition and coating
dep -name -thickness [-sc] -color [-alpha]
The deposition command with following -name the name of the material (no spaces allowed), and following -thickness the thickness in nm. The optional -sc argument is followed by a real number 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 film thickness on vertical sidewalls. The -color is followed by 4 integers indicating R, G, and B from 1 to 255 and an overall brightness scaling factor from 0 to 100.
dep -name M1 -thickness 200 -color 220 220 220 10
specifies deposition of a material named M1 with thickness 200 nm and color R = 22, G = 22, and B = 22.
coa -name -thickness [-dop -rr] -color [-alpha]
The coating command with the same parameters as in the deposition command but in addition the optional -dop a real number from 0.0 to 1.0 to specify the degree of planarization and the optionally -rr the reflow radius (in um) to use to smoothen the film.
The main difference with deposition is that the resulting film can be planarizing. A degree of planarization of 1.0 (default) will result in a flat film regardless of the underneath topography while 0.0 will result in a conformal film. The reflow radius (default 0.0) will smooth out the film within the given radius.
Specify a pattern and etch
pat -mask_name -id -type [-res] [-bias] -taper [-depth] -targets
Patterns and etches the stack. The -mask_name argument given the mask name and the -id the layer number (integer from 0 to 255) of the mask in the GDS file. If -mask_name is omitted, then it’s assumed to be a just a blanket etch.
The -type argument is 0 or 1 with 0 indicating clear type and 1 dark type.
The optional -res argument gives the resolution of the litho tool used in um. This can be for example 1.5 um.
The optional -bias argument gives the total pattern and etch bias of a feature. It’s double sided and measured on top of the feature.
The -taper argument gives the taper angle in degrees from (0, 90].
The optional -depth argument gives the maximum etch depth in nm.
The -targets argument gives the list of materials that will be etched. Each must be a material previously deposited or coated. This argument must be the last on the command line.
pat -mask_name M1 -id 12 -type 1 -res 1.5 -bias 1.0 -taper 40 -targets M1
specifies patterning of target material M1 using the mask 12 with a photo and etch bias of 1.0 um and taper angle of 40 degrees.
Specify a release process step
This command removes the layer given by the -target argument (a single material) from the stack. Unlike a blanket etch it does not matter of this material is covered by another material or not.
Specify 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 half way.