1GDS3D - An application used for rendering IC (chip) layouts in 3D.
2=
3University of Twente, Integrated Circuit Design Group
4http://www.icd.el.utwente.nl/
5
6An other repo (https://github.com/skuep/GDS3D) as the same source and add few improvement like compression with server/client process.
7
8This release add two major add featurs : assembly and export 3D model for GMSH.
9Assembly: this mean it’s possible to merge multi GDS (with different technologies)
10I also try to improve highlight net.
11
12![ScreenShot](GDS3D_screenShot.png)
13
14Contents:
151. Introduction
162. Command line parameters
173. Process definition files
184. Using the program
19
20   4.1 Controlling Movement
21
22   4.2 Interface Elements
23
24       4.2.1 Legend
25       4.2.2 Rulers
26       4.2.3 Topcell Selection
27       4.2.4 Performance Counter
28       4.2.5 Exploded View
29       4.2.6 Net Highlighting
30       4.2.7 Export to GMSH
31
325. Cadence Integration
33
34   5.1 Basic Setup
35
36   5.2 Advanced Setup
37
38   5.3 Recommendations
39
406. Compiling the Code
417. Keymap
428. Contact Information
43
44
451. Introduction
46
47GDS3D 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.
48
49
502. Command line parameters
51
52The program can be started from a command line using the following syntax:
53
54        GDS3D -p <process definition file> -i <GDSII file> [-t <topcell>] [-f] [-u] [-h] [-v]
55Or
56
57        GDS3D -a <assembly definition file> [-t <topcell>] [-f] [-u] [-h] [-v]
58
59Required parameters:
60
61        -p      Process definition file
62        -i      GDSII file
63Or
64
65        -a      Assembly definition file
66
67Optional parameters:
68
69        -t      Top cell, will default to top-most cell in GDS if omitted
70        -f      Start in full screen mode
71        -u      Disable GDS file monitoring, prevents updating the 3D view if the GDSII file is changed
72        -v      Verbose output
73        -h      Display command-line help
74
75The program can be run in Windows, Linux and MacOS, and each OS has its own executable. The locations of the executables are:
76
77        Windows:    <Program folder>\win32\GDS3D.exe
78        Linux:      <Program folder>/linux/GDS3D
79        MacOS:      <Program folder>/mac/GDS3D
80
81There are also run scripts for each OS that will load an example GDSII file in a mock-up process. These files are:
82
83        Windows:    <Program folder>\RunWin32.cmd
84        Linux:      <Program folder>/RunLinux.sh
85        MacOS:      <Program folder>/RunMac.command
86
873. Process definition files
88
89The 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:
90
91        LayerStart: Metal 1       # Start tag and layer name as it will appear in the legend
92        Layer: 7                  # GDSII layer number
93        Datatype: 0               # GDSII layer data type
94        Height: 620               # Start height (usually in nm)
95        Thickness: 150            # Thickness (usually in nm)
96        Red: 0.00                 # Red color component (0.0-1.0)
97        Green: 0.00               # Green color component (0.0-1.0)
98        Blue: 1.00                # Blue color component (0.0-1.0)
99        Filter: 0.0               # Transparency (do not use)
100        Metal: 1                  # Metal clickable in net highlighting mode (0 for VIA)
101        Shortkey: 1               # Shortcut to toggle layer visibility
102        Show: 1                   # Set to 0 for layers that are not to be rendered
103        Virtual: 10 AND 11        # Define a new layer where 10 AND 11 exist
104        Material: Al              # Define Material of layer for gmsh output only
105        OutMaterial: SiO2         # Define OutMaterial of layer for gmsh output only
106        MinSpace: 350             # Define Minimum space to merge via for gmsh output only
107        LayerEnd                  # End tag
108
109The 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 #.
110
111Toggling 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>.
112
113One 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.
114
115
1164. Using the program
117
1184.1 Controlling Movement
119
120When 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.
121
122Initially 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.
123
124By 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.
125
1264.2 Interface Elements
127
1284.2.1 Legend
129
130The program contains a legend, which can be toggled with the L key, from where the visibility of each layer can be toggled.
131Another 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.
132The third and final way in which the user can toggle layer visibility if by using shortkeys defined in the process definition file.
133
1344.2.2 Rulers
135
136It 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.
137
1384.2.3 Topcell Selection
139
140By 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.
141
1424.2.4 Performance Counter
143
144The 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.
145
1464.2.5 Exploded View
147
148Pressing 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.
149
1504.2.6 Net Highlighting (Tracing)
151
152Pressing 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.
153
154![ScreenShot](GDS3D_screenShot_Highlight.png)
155
1564.2.7 Export to GMSH (OneLab)
157
158Pressing 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.
159/!\ Still probleme with "VIA" not fully inside "Metal"
160
161![ScreenShot](GDS3D_GMSH_screenShot.png)
162
163
1645. Cadence Integration
165
1665.1 Basic Setup
167
168A 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.
169
170First, put all of the GDS3D files on a server accessible to the users. In our case, this is at:
171
172	/cadappl/ictools/3D_viewer/GDS3D_1.8/
173
174Next, open the icdGDS3D.il skill script in the skill subfolder and change the GDS3D_SRC variable into the path where you have put GDS3D. This way the script knows its own location.
175
176After starting Cadence for the first time, load this script by entering something like this:
177
178	load("/cadappl/ictools/3D_viewer/GDS3D_1.8/skill/icdGDS3D.il")
179
180into your Virtuoso window. A new ICD-Tools menu-item has been added in the Virtuoso screen with items:
181
182	Layout -> GDS3D
183	Run GDS3D
184
185Open a layout view from one of your favourite libraries and click on the Layout -> GDS3D menu-item. You will get an error message now about a missing process definition file. The script will look at the technology file attached to your layout in Cadence and assume there is a corresponding process definition file in the techfiles subfolder. So copy the example file and modify it to correspond to your process.
186
187With the correct process definition file in place, export again and a new folder will appear in your user workspace:
188
189	~/GDS3D/
190
191It contains the appropriate run scripts and gds file to run GDS3D with the layout you just exported. You can run these scripts directly, or use the Run GDS3D item in the ICD-Tools menu. The viewer will now start up and show the layout in 3D. It is of course a good idea to load icdGDS3D.il from your own startup scripts so that it is always available for your users.
192
193In the skill script, the GDS3D_DST variable dictates where these temporary files are put. There is also a GDS3D_LOCAL_COPY variable, which when set to true will copy the executables and techfiles to the user workspace as well. This will allow you to run the viewer without needing server access (works create with SMB over a windows network).
194
1955.2 Advanced Setup
196
197In some cases there might be problems with the GDS exporting in Cadence 5 (Cadence 6 looks good so far). This is because some design kits have convoluted ways of exporting GDS files, especially with specifying layermap files. If this is the case, follow these instructions.
198
199In the ICFB window, choose File->Export->Stream to stream out a GDS file in the way that your design kit requires. Make sure that in the Stream Out Options, the Convert PCells to Geometry is enabled! This will flatten PCells and is essential for getting good FPS out of the viewer.
200
201Please check if you can manually load in the exported GDS into GDS3D by using the commandline parameters. If this is okay, save a Template File from the Stream Out window. Rename this file to have the same name as your process definition file, but with the .template extension instead of the .txt extension and put it in the techfiles subfolder.
202
203Use Layout->GDS3D from the ICD-Tools menu again to test the new setup. The skill script will detect the template file and stream out using these settings, instead of the default settings.
204
2055.3 Recommendations
206
207For a smooth experience, we have some recommendations for your hardware and software setup.
208
209First of all, make sure your clients have installed the latest video drivers. Out-of-the-box Windows drivers are NOT good enough, please go to your graphics card manufacturer's website for drivers. Almost any ATI/AMD or NVidia card is good enough, Intel on-board graphics suck in general.
210
211If your clients run Linux and are connected to the Cadence server with X Window, there is not much you have to do to get Cadence integration running. Just make sure that GLX is installed on your server and clients. You can check this by running the glxinfo and glxgears commands in a terminal. The OpenGL version must be 1.5 or higher to make full advantage of the high speed rendering in GDS3D.
212
213If your clients are running Windows and you are looking for a X Windows client, we recommend Exceed 3D with the latest service packs, as it is optimized for 3D rendering.
214
215Thin clients working with NX Machine or VNC are not suitable, as they render graphics on the server and transfer pixels only. In this case, you can try to set the GDS3D_LOCAL_COPY variable to true, and access your workspace through SMB or FTP and run the viewer locally.
216
2176. Compiling the Code
218
219The compiled executables delivered in the packages should work on Windows XP, OS X Snow Leopard, Linux Kernel 2.5, and higher. If you are having difficulties, you can recompile the source.
220
221For Windows:
222- Get Visual Studio
223- Open win32/GDS3D.sln
224- Build in Visual Studio
225- Clean up by removing the Release and Debug folders in win32
226
227For Linux:
228- Depending on your distribution, make sure you have installed the development packages of G++, GL, GLU, GLX and X11. (It helps to install G++ 4.5 or higher)
229- On Ubuntu, these are: g++, libgl1-mesa-devel, libglu1-mesa-devel and libx11-dev
230- Open a terminal to the GDS3D path
231- Run: make -C linux
232- To clean, run: make -C linux clean
233
234For Mac OS:
235- Install Xcode 8.3.2
236- Open mac/GDS3D.xcodeproj
237- Build in Xcode
238Or:
239- Install any version of Xcode
240- Open a terminal to the GDS3D path
241- Run: make -C mac
242- To clean, run: make -C mac clean
243
2447. Keymap
245
246Interface:
247F1:                 Toggle Keymap
248F8:                 Take Screenshot
249P:                  Toggle Performance Counter
250L:                  Toggle Legend
251T:                  Topcell selection
252R:                  Reset View
253E:                  Toggle Exploded View
254F:                  OutPut to gmsh (geo File)
255K:                  Enable Ruler
256H:                  Enable Net Highlighting
257ESC:                Cancel
258
259Motion:
260M:                  Lock Mouse
261W, Up:              Forward
262S, Down:            Backward
263A, Left:            Left
264D, Right:           Right
265Q:                  Up
266Z:                  Down
267Hold Shift:         Increase Movement Speed
268
269Mouse Special:
270Hold Left Button:   Rotate
271Hold Right Button:  Walk and Strafe
272Wheel Up/Down:      Move Up/Down
273<Alt> Wheel Up:     Show First Invisible Layer
274<Alt> Wheel Down:   Hide First Visible Layer
275<Ctrl> Wheel Up:    Hide Last Visible Layer / Change Ruler Layer
276<Ctrl> Wheel Down:  Show Last Invisible Layer / Change Ruler Layer
277
2788. Contact Information
279
280If you are having difficulties running this program, don't hesitate to contact me for free support through the GitHub website:
281
282https://github.com/trilomix/GDS3D
283
284Trilomix
285