GDS Viewer for GDSII layout files

A program to view a GDSII file in 3D.

(c) 2022 -


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 GDS layout. It requires a process file that specifies the different process layers and their patterning. 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.

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. Layers can be shown with transparency. Also, parameters like pattern and etch bias can be entered.

How to run the program

  1. Download and unzip the program package (windows 64 bit): Download Package with Example
  2. Place the executable and the included glew32.dll file together in any folder say in your program files.
  3. Place the example process file (.txt) in a working folder. The output files will be placed inside a subfolder that will be created in a subfolder of the working folder.
  4. Run the exe file and in the menu open the GDS file you want to use. After that open the process file. This will start the process simulation.
  5. The output cross sections will be placed in a subfolder in the folder with the process file with the same name as the process file. If the output subfolder already exists the program will confirm that you want to overwrite it.
  6. A console window will be created and will display information as it runs the process file. For example, it will display errors when errors were found in the process file.

Commands in the process file

The commands in the process file are the following. As mentioned above an example process file and corresponding GDS layout is included in the download package. 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 and 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 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 1000 columns in the grid


gds -cell

Used to specify the GDS cell to use. Here -cell is followed by cell name without spaces. Note that this cell in the GDS file will be flattened to individual polygons. To limit memory allocation the number of polygons 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.


cut -x -y -dx -dy

A command specifying the location of the cross section in the GDS cell in GDS user units. 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.

dep -name -thickness -color [-alpha]

The deposition command with following -name the name of the material (no spaces allowed), the thickness in nm. The -color is followed by 4 integers indicating R, G, and B from 1 to 255 and an overall brightness scaling factor from 1 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 -dop a real number from 0.0 to 1.0 to specify the degree of planarization and -rr the reflow radius (in um) to use to smoothen the film.

The difference with deposition is that the resulting film can be planarizing. A degree of planarization of 1.0 will result in a flat film regardless of the underneath topography while 0.0 will result in a conformal film. The reflow radius will smooth out the film within the given radius.


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 patterns and etch is using the mask of GDS layer 12 with a bias of 1.0 um and taper angle of 40 degrees.


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.


All following commands in the process file are ignored.