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:

Example GDS Layout

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:

Example Cross Section

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

  1. Download and unzip the program package (only windows 64 bit currently): Download Package with Example
  2. Place the executable and all other files into your Program Files. Or you can choose any other folder since the program is fully portable.
  3. Double click gdsviewer.exe to start running the program
  4. Create a working folder and place the example process file “TFT example.txt” in it. The output bitmap files with the 3D cross sections will be placed inside a subfolder in this working folder. The process file is a simple text file with processing commands:

  1. Run the exe file and in the menu open the GDS file you want to use. This file can be located somewhere else.

  1. In the file menu open the process file. This will start the process simulation.

  1. The output cross sections will be placed in a subfolder in the working folder with the same name as the process file without the .txt file extension. If the output subfolder already exists, the program will confirm that you want to overwrite it.
  2. A console window will be created and will display information as it runs the process file. For example, it will display errors found in the process file.

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.

General settings

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.

For example

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

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.

For example

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.

For example

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.

For example

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.

For example

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

rel -target

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.