SkillAgentSearch skills...

GDS3D

GDS3D is an application that can interpret so called IC layouts and render them in 3D. The program accepts standard GDSII files as input data. Along with the layout file, it requires a so called process definition file which contains the 3D parameters of the process being used. These files combined allow the program to create a 3D representation of the layout, where the user has full, real time control over the camera position and angle, much like in a 3D video game. An other repo (https://github.com/skuep/GDS3D) as the same source and add few improvement like compression with server/client process. This release add two major feature with are assembly and export 3D model for GMSH. Assembly: this mean it’s possible to merge multi GDS (with different technologies) I also try to improve net highlight.

Install / Use

/learn @trilomix/GDS3D
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GDS3D - An application used for rendering IC (chip) layouts in 3D.

University of Twente, Integrated Circuit Design Group http://www.icd.el.utwente.nl/

Another repo (https://github.com/skuep/GDS3D) has the same source and adds compression with server/client process.

This release adds two major features : assembly and export 3D model for GMSH. Assembly: this mean it’s possible to merge multi GDS (with different technologies) I also try to improve net highlight, fixed a few bugs, added support for large geometries.

ScreenShot

Contents:

  1. Introduction

  2. Command line parameters

  3. Process definition files

  4. Using the program

    4.1 Controlling Movement

    4.2 Interface Elements

    4.2.1 Legend
    4.2.2 Rulers
    4.2.3 Topcell Selection
    4.2.4 Performance Counter
    4.2.5 Exploded View
    4.2.6 Net Highlighting
    4.2.7 Export to GMSH 
    
  5. Cadence Integration

    5.1 Basic Setup

    5.2 Advanced Setup

    5.3 Recommendations

  6. Compiling the Code

  7. Keymap

  8. Contact Information & License

  9. Introduction

GDS3D is an application that can interpret so called IC layouts and render them in 3D. The program accepts standard GDSII files as input data. Along with the layout file, it requires a so called process definition file which contains the 3D parameters of the process being used. These files combined allow the program to create a 3D representation of the layout, where the user has full, real time control over the camera position and angle, much like in a 3D video game.

  1. Command line parameters

The program can be started from a command line using the following syntax:

    GDS3D -p <process definition file> -i <GDSII file> [-t <topcell>] [-f] [-u] [-h] [-v]

Or

    GDS3D -a <assembly definition file> [-t <topcell>] [-f] [-u] [-h] [-v]

Required parameters:

    -p      Process definition file
    -i      GDSII file

Or

    -a      Assembly definition file

Optional parameters:

    -t      Top cell, will default to top-most cell in GDS if omitted
    -f      Start in full screen mode
    -u      Disable GDS file monitoring, prevents updating the 3D view if the GDSII file is changed
    -v      Verbose output
    -h      Display command-line help

The program can be run in Windows, Linux and MacOS, and each OS has its own executable. The locations of the executables are:

    Windows:    <Program folder>\win32\GDS3D.exe
    Linux:      <Program folder>/linux/GDS3D
    MacOS:      <Program folder>/mac/GDS3D

There are also run scripts for each OS that will load an example GDSII file in a mock-up process. These files are:

    Windows:    <Program folder>\RunWin32.cmd
    Linux:      <Program folder>/RunLinux.sh
    MacOS:      <Program folder>/RunMac.command

3. Process definition files

The process definition files contain the physical properties of the process being used, as well as color mappings for each layer. These files are simply text files listing every layer in the process along with its properties. An example layer, taken from the mock-up process that comes with the program, is defined as follows:

    LayerStart: Metal 1       # Start tag and layer name as it will appear in the legend
    Layer: 7                  # GDSII layer number     
    Datatype: 0               # GDSII layer data type           
    Height: 620               # Start height (usually in nm)
    Thickness: 150            # Thickness (usually in nm)
    Red: 0.00                 # Red color component (0.0-1.0)
    Green: 0.00               # Green color component (0.0-1.0)
    Blue: 1.00                # Blue color component (0.0-1.0)
    Filter: 0.0               # Transparency (do not use)
    Metal: 1                  # Metal clickable in net highlighting mode (0 for VIA)
    Shortkey: 1               # Shortcut to toggle layer visibility
    Show: 1                   # Set to 0 for layers that are not to be rendered
    Virtual: 10 AND 11        # Define a new layer where 10 AND 11 exist     
    Material: Al              # Define Material of layer for gmsh output only
    OutMaterial: SiO2         # Define OutMaterial of layer for gmsh output only
    MinSpace: 350             # Define Minimum space to merge via for gmsh output only   
    LayerEnd                  # End tag

The first layer in the file is the substrate and must always be present. Its layer number is always 255 and it is the only layer for which a filter value other than 0.0 is advised (0.5 works well here). Comments can be added to the definition file by pre-pending them with #.

Toggling layer visibility while the program is running can be easily achieved by setting a shortkey for a layer. These shortkeys can be any numerical key (0-9). Modifier keys can also be used, by pre-pending the shortkey with (a combination of) <Alt>, <Ctrl> and <Shift>.

One extra option can be added to a layer, which is "Datatype". This can normally be omitted, as most in processes different datatypes with the same layer number do not mean physically different layers. However, the developers have heard of one case where N-Well and P-Well "layers" actually had the same layer number but different datatypes. In such an event one can specify two layers with the same layer number but differing datatypes to render these layers in, for example, different colors.

  1. Using the program

4.1 Controlling Movement

When the program is running, it is possible to move the camera around using the classical 3D-game controls, the A,W,S,D (or the arrow) keys. The Q and Z keys are used to move the camera up and down and the R key can be used to reset the view.

Initially the program has a traditional mouse cursor. In this mode the user can rotate the view by pressing the left mouse button and dragging the mouse to the left or right to rotate the view, and up or down to tilt the view. Dragging the mouse while holding the right mouse button will strafe the view for left or right motion, and move forwards or backwards for up or down motion. Finally, the scroll wheel can be used to move up or down.

By pressing the M key, the program switches to mouse control mode. In this mode the mouse can be used to rotate and tilt the camera much like in a 3D-game. The scroll wheel can still be used to move up and down.

4.2 Interface Elements

4.2.1 Legend

The program contains a legend, which can be toggled with the L key, from where the visibility of each layer can be toggled. Another way to show or hide layers is by pressing the control key and scrolling the mouse wheel. Scrolling up will hide the last visible layer (basically stripping away layers from the top with each 'click') and scrolling down will un-hide the last hidden layer. By using the alt instead of the control key, the same procedure can be used, except it will start from the bottom up. The third and final way in which the user can toggle layer visibility if by using shortkeys defined in the process definition file.

4.2.2 Rulers

It is also possible to create a ruler, by pressing the K button. A red plane will appear in the layout. You can click with the left mouse button on points on the plane to define the ruler. To measure in a different layer, hold the CTRL key and scroll with your mouse wheel.

4.2.3 Topcell Selection

By pressing the T key the user can bring up a list of all the cells in the GDSII file. By clicking one of these cells it will become the "top cell", meaning only it and its sub-cells will be rendered. The cells in this window are hierachically ordered, click on the triangles to open up new hierarchy levels.

4.2.4 Performance Counter

The P key brings up a performance counter. This counter shows the number of frames per second, as well as the number of triangles being rendered at a given moment.

4.2.5 Exploded View

Pressing the E key will "explode" the view. This means the starting height of each layer will be multiplied by a constant value, basically creating gaps between the layers. This can for example be useful when viewing fringe capacitances.

4.2.6 Net Highlighting (Tracing)

Pressing the H key will start net tracing mode. The layout will turn grey and you can now left-click on the top of a metal to trace it. Only the trace will have color, making it easy to follow a line. Note that tracing ground and power lines can take a long time, press ESCAPE at any time to interrupt the tracing. In order for tracing to work properly, the process definition file must have the Metal parameter set to 1 for all metal layers (but NOT for VIA's). The tracer expects that the height and thickness of the layers are adjacent and that metals and via's alternate in the metal stack.

ScreenShot

4.2.7 Export to GMSH (OneLab)

Pressing the F key will export all geometry to a .geo file. Two files will be generate in the GmshOutPut Directory a <Top_GDS_Name>.geo and a <Top_GDS_Name>.pro with all material informations which come from the techfile. All material are hard code. So if you want to add material you must change code ... With those two files you can solve any problems based on FEM method. /!\ Still probleme with "VIA" not fully inside "Metal"

ScreenShot

  1. Cadence Integration

5.1 Basic Setup

A skill script is included with the source to enable integration of GDS3D into Cadence, it is located in the skill subfolder. This script is designed to be loaded at Cadence startup, it will automatically export GDS files from layout into a temporary location on the user's workspace and modify the run scripts to run GDS3D with the exported GDS and correct process definition file.

First, put all of the GDS3D files on a server accessible to the users. In our case, this is at:

/cadappl/ictools/3D_viewer/GDS3D_1.9/

Next, open the icdGDS3D.il skill script in t

View on GitHub
GitHub Stars247
CategoryContent
Updated1mo ago
Forks40

Languages

C++

Security Score

100/100

Audited on Feb 24, 2026

No findings