This tutorial describes how a integrated circuit in the DIMES03 technology can be designed,
from schematic to GDS file, using the Cadence design system. As an example a simple
differential amplifier is created that consists of 4 bipolar transistors and 5 resistors. All important
aspects of integrated circuit design are discussed, such as schematic entry, simulation, layout
synthesis, DRC, extraction, LVS, re-simulation and GDS file generation.
This tutorial was created using Cadence version 4.4.3. Note that at Delft University, currently,
only Cadence version 4.4.5 and version 4.4.6 are supported. These versions can also be used for
this tutorial, but you will find out that some window appearances and command names may be
slightly different from what is shown in this tutorial.
The tutorial uses the Cadence DIMES03 design kit installed under
/opt/cad/cadence/DesignKits/dimes03 on TU-Delft Micro-Electronics machines, or available for
ftp as dimes03Lib.tar.gz. The design kit contains a cell library that is described in the DIMES03
library.
An example of the design data that is created during the tutorial can be found in the directory
tutorial/cad/dimes03 of the tutorial tree (installed under /opt/cad/cadence/DesignKits/dimes03 on
TU-Delft Micro-Electronics machines or available for ftp as dimes03Tutorial.tar.gz).
For more information about the DIMES03 technology, see the DIMES03 Design Manual,
version 1.0, nov. 2002, Editor: Tjander Nathoeni, DIMES IC Processing.
DIMES03 Design Tutorial - Basics
$ source /opt/cad/cadence/4.4.6/sourceme
$ setenv CDS_Netlisting_Mode Analog
Note that it is best to include these lines in your .cshrc file (or similar file that you use to set paths during
login).
$ source /opt/cad/cadence/DesignKits/dimes03/sourceme
Starting Cadence
Start Cadence in the DIMES03 working directory as follows:
$ cd ~/cad/dimes03
$ icfb &
The Command Interpreter Window (CIW) will appear, which is the central window to start Cadence tools
etc.. Note that by Clicking on "Help" in the upper right corner of most of the Cadence windows, the
Cadence OpenBook documentation will show up.
The library manager
To bring up the library manager, click on Tools -> Library Manager in the CIW window.
The library manger window shows the libraries that are known during this Cadence session and
initially shows the libraries analogLib, basic, cdsDefTechLib and dimes03Lib. (The library
manager reads its information from the file cds.lib in your working directory.) The library
analogLib, basic and cdsDefTechLib are delivered with the Cadence software and contain
general cells like input sources, supply and ground connections etc. The library dimes03Lib
contains a cell library, including layouts, especially for components (transistors, resistors etc.) in
the DIMES 03 process (see http://warga.et.tudelft.nl/cadmgr/dimes03CellLib/cells.html).
Note that all of the above library names are in fact links to libraries that are physically stored at
other places, and that they are read-only for the user. The libraries can not be used to create your
own design data in. Therefore, you should create your own, local, library, which is explained in
the following.
Type after Cell Name the name of the cell that you will create: diffamp, select for Tool
Composer-Schematic (for View Name automatically schematic will be filled in) and next click on
OK. The schematic cell view will be created and the Composer window will appear:
To start the schematic entry tool on an existing cell view, select from the Library Manager the
appropriate library, cell and view. Next click on File -> Open, or position the cursor on
schematic, click the right mouse button and select Open
component number
npn2x1 2
npn4x1 2
res500lp 2
res10klb 3
To close the Library Browser and Add Instance window, click on respectively Close and Cancel, or press
the Escape key.
You can move a component that has already been placed by first clicking on Edit -> Move, next
clicking on the component with the left mouse button to select it, moving the component to its
new position, and next clicking on the left mouse button again. You can rotate a component by
first clicking on Edit -> Rotate and next clicking on the component with left mouse button. You
can mirror a component by first clicking on Edit -> Rotate, next pressing on F3, selecting
Sideways in the Rotate window that pops up, and next clicking on the component with left
mouse button. Finally, a component can be deleted using Edit -> Delete and selecting it with the
left mouse button. All of the above commands are finished by pressing the Escape key or, if
appropriate, by clicking Cancel in the corresponding window.
To add pins/ports for the cell, click on Add -> Pin or on the 14th. button at the left side of the
window. The Add Pin form appears. Type the name of the pin after Pin Names, choose the
Direction of the pin (input, output or inpoutOutput), possibly change the Orientation of the pin,
and place the pin with the cursor by clicking on the left mouse button. Add the following pins:
vcc input
vee input
in input
gnd input
out output
Click on Cancel or press Escape to finish the Add Pin form. You can move, rotate and mirror pins in a
similar way as components.
To add a wire, click on Add -> Wire (narrow) or on the 11th. button from above at the left side
of the window. Create the wire by moving with the cursor to the required positions and clicking
the left mouse button to start and finish wires or to create corners. To finish the add wire
command, press the Escape key. Complete the circuit as follows:
Save the schematic by clicking on Design -> Save. Exit the program by clicking on Window ->
Close.
In the Symbol Generation Options form that appears, use after Left Pins: in gnd, after Right Pins:
out, after Top Pins: vcc, and after Bottom Pins: vee. Next, click on OK.
To simulate the diffamp circuit we will create a new cell called diffampConfig. This cell will call an
instance of cell diffamp and it will additionally define the simulation environment (simulation input
sources and load capacitance) for the diffamp cell.
Create a schematic cell diffampConfig in library dimes03Tutorial, using File -> New -> Cell
View in the library manager, similar as described in the previous section. Add an instance of the
cell diffamp and complete the circuit as shown below. Use the following components with the
following parameters. The value of a parameter is specified in the corresponding field of the Add
Instance form before the component is placed
diffamp dimes03Tutorial -
gnd analogLib -
Use Add -> Wire Name, or the 13th button from above at the left side of the window, to add the
names "in" and "out" to the wires connected to respectively the input and output of the diffamp
circuit.
Save the design using Design -> Check and Save.
To specify simulation analyses, click on Analyses -> Choose in the Analog Artist Simulation
window. To specify an ac analysis select the ac button. Complete the form as follows and click
on OK.
To specify the outputs during simulation click on Outputs -> To Be Saved -> Select On
Schematic. Click on respectively the wire named "in" and the wire named "out" in the
Composer-Schematic window and finish the selection by clicking on the Escape key. Select the
two lines that have now appeared in the Outputs field by clicking on them with the left mouse
button while pressing the Shift key. Click on Outputs -> To Be Plotted -> Add To to select
plotting of the outputs. The Analog Artist window will then have the following contents:
Note: When running Cadence version 4.4.3 on an HP computer, Cadence will fail when
Analyses -> Choose has been clicked and the ac button is selected. To enter an ac analysis
without using the Choosing Analysis window, quit from Analog Artists, create the following file,
e.g. called artistenv:
envLoadFile("artistenv")
Next, when Analog Artist is started again, an ac analysis will be specified. After this, continue with the
specification of the outputs as described above.
After the Save As field, a name for the state can be specified (default is state1). Next click on
OK.
In the Analog Artist window, click on Outputs -> To Be Saved -> Select On Schematic. In the
Composer window, click on Design -> Hierarchy -> Descend Read and next click on the
diffamp block. In the Descend window that will appear then, check that for View Name
schematic is selected, and click on OK. The Composer window will now show the schematic
view of the diffamp cell. Click on the collector pin of the transistor that is connected to the
emitters of the two input transistors. In the Analog Artist window, in the Outputs field, a line will
then appear with a name similar to I0/Q2/C. Finish the selection by clicking on the Escape key.
In the Composer window, return to cell diffampConfig by clicking on Design -> Hierarchy ->
Return.
In the Analog Artist window, select the new line in the Outputs field with the cursor and the left
mouse button and click on Outputs -> To Be Plotted -> Add To. Select the two other lines in
the Outputs field with the cursor and the left mouse button, while pressing the Shift key for the
second line. Click on Outputs -> To Be Plotted -> Remove From. Run a new simulation by
clicking on the button with the green traffic light. The following window will then appear:
DIMES03 Design Tutorial - Layout Synthesis
Starting the layout synthesis environment
In this section we will generate a layout for the diffamp circuit using the placement and routing tools that
are available in Virtuoso XL.
To start the Virtuoso XL environment, open the schematic view of cell diffamp. Next, in the
Composer window, click on Tools -> Design Synthesis -> Layout XL. The Virtuoso XL
Startup Option window will appear, asking whether a new layout cell view should be created or
an existing layout cell should be used. Enable Create New and click on OK. A Create New File
window will then appear. Use for Library Name dimes03Tutorial, for Cell Name diffamp, for
View Name layout, and for Tool Virtuoso, and click on OK. The following layout of windows
will be shown:
The upper middle window is the Composer window that shows the schematic view of the
diffamp cell. The right window is the Virtuoso XL window that will later show the layout view
of the diffamp cell. The upper left window is the LSW window (see also below) that shows the
layers that are available in the layout view and that can be selected for editing. Finally, the lower
left window is the CIW window.
Placement
An initial placement was obtained using Edit -> Place from Schematic. Often, the placement can or
must be improved by moving the instances and/or pins. The instance and pins should be close enough to
minimize the total chip area and wire length, while they should be far enough from each other to have
enough space between them to connect all wires. Also, note that instances should not be closer than 4
micron to prevent that the dp regions of the instances are to close to each other (design rule DP.2.1). The
latter can e.g. be checked by runing a DRC on the layout of the placement, as described in Section
"Design-Rule Checking".
To move an instance or pin, select the instance or pin by clicking on it with the left mouse button
or by drawing a selection rectangle around it. Next, click on Edit -> Move or press the m key.
Move the object by first clicking a reference point with the left mouse button and next clicking
the new position for the reference point.
Also the bounding box for placement and routing can be adjusted to better fit the placement area,
and the area that will be needed for routing. The bounding box for placement and routing is
defined by a prBndry layer rectangle and this rectangle is edited similar to the way how other
layout polygons are edited. The prBndry rectangle can e.g. be changed by first deleting the
existing one and next adding a new one.
To delete the prBndry layer rectangle, first select it by clicking on it with the left mouse button
and next click on Edit -> Delete. To add a prBndry layer rectangle, first click with the left
mouse button in the prBndry rectangle in the LSW window to select this layer as edit layer.
Next, create the rectangle by first clicking Create -> Rectangle and next click on the position
for the first corner and the position for the opposite corner respectively
The final result of the placement may be something like as shown below.
Routing
Routing is done in Virtuoso XL by using IC Craftsman. Before starting IC Craftsman, a directory
cellImages, where cell is the name of the cell that we are are going to route, has to be created in you
directory ~/cad/dimes03. This directory should contain links to the image files for the library cells that we
are going to use. These image files are present in the directory
/opt/cad/cadence/DesignKits/dimes03/iccImages. In our case, for cell diffamp, this directory can then be
created as follows:
$ cd ~/cad/dimes03
$ mkdir diffampImages
$ ln -s /opt/cad/cadence/DesignKits/dimes03/iccImages/* diffampImages
To export the layout and connectivity data from Virtuoso XL to IC Craftsman, click on Route -> Export
to ICC... in the Virtuoso XL window. The Export to IC Craftsman window as shown below will appear.
Enable the option Use Rules File and specify in the field below it the file name
/opt/cad/cadence/DesignKits/dimes03/icc.rules. Check that the options Full Connectivity and Incremental
Update are enabled and click on OK.
After some time, the IC Craftsman window will appear showing the placement for cell diffamp
and flight lines for the unconnected nets:
To start the routing, click on Autoroute -> Route... in the IC Craftsman window. Next, in the
AutoRoute form click OK. After the routing has finished, IC Craftsman will show a picture as
shown below:
To read the routing results into Virtuoso XL the results have first to be written by IC Craftsman.
This is done by clicking on File -> Write -> Session in IC Craftsman. In the Write Session form
that appears it is specified that routing data will be written as diffamp.ses. Click on OK. On a
warning about same net checking, click Yes.
To read the results of IC Craftsman into Virtuoso, click Route -> Import from ICC... in the
Virtuoso window. Check that the form has the following contents and click OK.
Virtuoso XL will then show the routed layout:
To quit IC Craftsman, click on File -> Quit.
Click on a pin, net or device in the layout or schematic. The object and the corresponding object
in the other view will be highlighted and the names of the objects will be printed in the Probe
Options form.
To find a particular net in the schematic or layout view, based on its name, click on List Nets...
in the Virtuoso XL Probe Options form. A Probe Net List form will appear from which a net
name can be selected, e.g. net out. After clicking on Apply, this net is then highlighted in the
schematic and the layout view:
To find a particular device in the schematic or layout view, based on its name, click on
Connectivity -> Change Instance View... in the Virtuoso XL window. The Change Instance
View form will appear. Click on List Devices... and next the Change Inst View Device List form
will appear listing the names of all the devices that are present in the layout. When selecting a
device in the list and next clicking on Apply, the corresponding device will be highlighted both
in the layout view and the schematic view.
As an example we will replace one of the resistors in our schematic design by a parameterized
cell, update the layout instances and perform incremental routing to connect the new instance in
the layout.
First, remove the resistor cell res500lp in the layout that corresponds to the cell res500lp that was
removed from the schematic. Use the command Edit -> Delete. Also delete some wires around
it, such that the following layout is obtained:
Next, click Connectivity -> Update -> Components and Nets. If a window pops up with the
message "Schematic extraction is needed ...", click OK. In the Layout Generation Options form
that appears, in the section I/O Pins, at the end of the line starting with Defaults, disable the
button below "Create" and click on OK.
Now, an instance of the layout view of cell res100_1klb with correct layout dimensions, will
automatically be placed under the prBoundary area. If you do not immediately see the instance,
press key f in the Virtuoso window to fit the total layout onto the Virtuoso window. Use Edit ->
Move to move the new instance to the position where the deleted cell res500lp was. When
enabling Connectivity -> Show Incomplete Nets you will see a picture as shown below:
If you want you can now try to change the value of the resistance for cell res100_1klp in the in
the schematic view and update the layout of the cell accordingly. Therefore, first select the
instance in the schematic view by clicking on it with the left mouse button, press q to bring up
the Edit Object Properties window, change the value for the resistance and click on OK. Then, in
the Virtuoso XL window, click on Connectivity -> Update -> Layout Parameters and watch
how the layout is updated.
Incremental routing
Click on Route -> Export to ICC to bring up the Export to ICC Craftsman window. Next, start the
routing tool. by clicking on OK. The following window will appear, showing the wires that have already
been routed and flight lines for the nets that still need to be routed.
Click on Autoroute -> Route ... to start an incremental routing for the nets that still need to be
routed. A result similar to as shown below will be obtained.
DIMES03 Design Tutorial - Design-Rule
Checking
Running the design-rule checker
The layout can be checked on design-rule errors by clicking Verify -> DRC... in the Virtuoso window.
The DRC window will then appear as shown below. By clicking on OK the design-rule checker will be
started. The layout design rules as described in the DIMES03 Design Manual, version 1.0, nov. 2002,
Editor: Tjander Nathoeni, DIMES IC Processing will be checked.
In our example we notice that are a lot of design-rule errors. This is because the cells in the
dimes03Lib library are designed with some optimizations that do not obey the general design-
rules. In the next section it will be shown how to skip these error messages, but here we use them
to see how DRC errors are presented.
To see which errors occur for areas that are flashing, click on Verify -> Markers -> Explain in
the Virtuoso window. Next click on an area with the left mouse button. In a new window the
corresponding error(s) will be listed, as for example shown below. The marker explain command
can be finished by pressing the Escape key.
DRC and DIMES03 library cells
As we saw above, the cells in the dimes03Lib library contain some violations against the general DIMES
03 design-rules as default checked by the design-rule checker. It is possible to let the design-rule checker
suppress the messages that correspond to these errors by setting the switch noLibDRC in the DRC
window. This is done by clicking Set Switches in the DRC window, next selecting the switch noLibDRC
and finally clicking on OK in the Set Switches window. The DRC window will then look as follows.
emergencyICrules
Use the (less strict) emergency rules for layer icm, as described in the DIMES03 Design Manual,
Section 3.1.
noLibDRC
Suppress design-rule error messages for the DIMES03 library cells.
singleMetalSCPrules
Use the single metal rules for mask scp instead of the double metal rules. With the single metal
rules, layer icm is used in combination with scp for boundaing pads, and with double metal rules,
layer in is used in combination with scp.
DIMES03 Design Tutorial - Extraction
Running the extractor
A netlist can be extracted from the layout view of cell diffamp by clicking on Verify -> Extract... in the
Virtuoso window. The following form will appear then:
Default the extractor will extract all transistors, lp and lb resistors, and junction and interconnect
capacitances. By setting one or more switches, using the Set Switches command in the Extractor
form, the elements that are extracted can be controlled:
diodes: Junction capacitances are extracted as diodes. Unfortunately this option will not work in
combination with resistance extraction. Therefore it implies switch "no_resistance" and it will reset
switch "epi_resistance" when it has been turned on.
Virtuoso will show the layout that has been extracted including bounding boxes for the extracted
components. To see a symbol representation of the extracted components, press Shift-f in the
Virtuoso window. After zooming in it can clearly be seen that for the extracted components also
the parameters are shown.
Netlisting
The extracted netlist can be viewed by starting from Virtuoso the tool Analog Artist. Click in Virtuoso
Tools -> Analog Artist. Next, in the Analog Artist window, click Setup -> Simulator/Directory/Host ...
and choose for Simulator spectreS. We use the spectre format to view the netlist since this format is better
readable than e.g. the SPICE netlist format. Click OK to finish the Setup Simulator/Directory/Host
window. Next, click Simulation -> Netlist -> Create Final in the Analog Artist window and the
extracted netlist will appear after some time in a separate window:
* begin cppStatements
#include
* end cppStatements
* netlist/diffamp.c.raw
* Netlist output for spectreS.
* Generated on Aug 9 13:25:36 2001
* Include files
* End of Netlist
*
simulator lang=spectre
tempOptions options
+ temp= 27
keepAllVoltages options save=allpub
simOptions options
+ reltol=1m
+ vabstol=1u
+ iabstol=1p
+ tnom=27
+ scalem=1
+ scale=1
+ gmin=1p
+ rforce=1
+ maxwarns=5
+ digits=5
+ cols=80
+ pivrel=1m
+ ckptclock=1.8K
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
DIMES03 Design Tutorial - LVS
Running LVS
Open the extracted view of cell diffamp. Click on Verify -> LVS.... For Rules File use divaLVSr.rul.
This LVS rule will compare the transistors and resistors. To compare only transistors, use divaLVS.rul.
To compare transistors and capacitors, use divaLVSc.rul. To compare transistors, resistors and capacitors,
use divaLVSrc.rul.
In the LVS window, click on Run. If a window pops up with the question to save the extracted
cell view, click OK. However, it has been noted that on an HP Cadence sometimes crashes then.
Therefore it is better to first save the open design(s) from their Virtuoso window using Design ->
Save.
After some time, the Analysis Job Succeeded window will appear to notify that the LVS job has
finished. Click on OK in that window.
layout schematic
instances
un-matched 0 0
rewired 0 0
size errors 0 0
pruned 0 0
active 34 9
total 34 9
nets
un-matched 0 0
merged 0 0
pruned 0 0
active 10 10
total 10 10
terminals
un-matched 0 0
matched but
different type 0 0
total 5 5
Probe files from /u/38/38/arjan/cad/dimes03/LVS/schematic
devbad.out:
netbad.out:
mergenet.out:
termbad.out:
prunenet.out:
prunedev.out:
audit.out:
devbad.out:
netbad.out:
mergenet.out:
termbad.out:
prunenet.out:
prunedev.out:
I /+33
? Device removed because of user's 'removeDevice' request.
I /+32
? Device removed because of user's 'removeDevice' request.
I /+31
? Device removed because of user's 'removeDevice' request.
I /+30
? Device removed because of user's 'removeDevice' request.
I /+29
? Device removed because of user's 'removeDevice' request.
I /+28
? Device removed because of user's 'removeDevice' request.
I /+27
? Device removed because of user's 'removeDevice' request.
I /+26
? Device removed because of user's 'removeDevice' request.
I /+25
? Device removed because of user's 'removeDevice' request.
I /+24
? Device removed because of user's 'removeDevice' request.
I /+23
? Device removed because of user's 'removeDevice' request.
I /+22
? Device removed because of user's 'removeDevice' request.
I /+21
? Device removed because of user's 'removeDevice' request.
I /+20
? Device removed because of user's 'removeDevice' request.
I /+19
? Device removed because of user's 'removeDevice' request.
I /+18
? Device removed because of user's 'removeDevice' request.
I /+17
? Device removed because of user's 'removeDevice' request.
I /+16
? Device removed because of user's 'removeDevice' request.
I /+15
? Device removed because of user's 'removeDevice' request.
I /+14
? Device removed because of user's 'removeDevice' request.
I /+13
? Device removed because of user's 'removeDevice' request.
I /+12
? Device removed because of user's 'removeDevice' request.
I /+11
? Device removed because of user's 'removeDevice' request.
I /+10
? Device removed because of user's 'removeDevice' request.
I /+9
? Device removed because of user's 'removeDevice' request.
audit.out:
Note that the output shows that capacitors have been removed from the extracted view (Device removed
because of user's 'removeDevice' request) before the netlists were compared. This was done since we are
use an LVS rule file in which only transistors and resistors are comapred.
layout schematic
instances
un-matched 0 1
rewired 0 0
size errors 0 0
pruned 0 0
active 31 9
total 31 9
nets
un-matched 2 2
merged 0 0
pruned 0 0
active 10 10
total 10 10
terminals
un-matched 1 1
matched but
different type 0 0
total 5 5
devbad.out:
I /R0
? Device does not cross-match.
netbad.out:
N /vee
? Net does not cross-match. It has 3 connections.
N /net24
? Net does not cross-match. It has 2 connections.
mergenet.out:
termbad.out:
T -1 vee /vee
? Terminal vee in the schematic failed to match any terminal in the layout.
prunenet.out:
prunedev.out:
audit.out:
devbad.out:
netbad.out:
N /7
? Net does not cross-match. It has 1 connections.
N /vee
? Net does not cross-match. It has 2 connections.
mergenet.out:
termbad.out:
T -1 vee /vee
? Terminal vee in the layout failed to match any terminal in the schematic.
prunenet.out:
prunedev.out:
I /+30
? Device removed because of user's 'removeDevice' request.
... etc ..
To view the errors in the extracted view, click on Error Display in the LVS window. The LVS
Error Display window appears. Next, click on the Virtuoso window that displays the extracted
view of cell diffamp (or open it if it is not yet open). Click on First in the LVS Error Display
window to see the first error that is found for the extracted view. A net in the layout for which no
matching net was found in the schematic view, is highlighted. Next, click on Next and Prev to
browse through the other errors.
To view the errors in the schematic view, open the schematic view of diffamp or click in the
corresponding Composer window when the view is already open. Next, use the button First,
Next, Prev etc. to browse through the errors that are found for the schematic view.
Click on OK to close the LVS Error Display Window and close the schematic and extracted
windows.
DIMES03 Design Tutorial - Re-simulation
Creating a config view for simulation
To re-simulate the diffampConfig circuit we will create a so-called config view in which we can specify
that for the instance of the diffamp cell we use the extracted view rather than the schematic view. The
config view will allow us to use for the simulation of the extracted view of cell diffamp, the same
simulation environment as defined in Section Simulation.
To create a config view for cell diffampConfig, in the library manager, select library
sic3aTutorial and click on File -> New -> Cell View. In the Create New File form, use for
Library Name sic3aTutorial, for Cell Name diffampConfig, and for Tool Hierarchy-Editor.
Notice that automatically for View Name config will be filled in. After clicking OK the
Hierarchy Editor window will appear with the New Hierarchy window on top of it. In the New
Hierarchy window, choose cdsSpice for Template Built-in. Note that a config view is specific for
some kind of simulator. When you want to use a config view for another simulator, you have to
create another view with the Hierarchy Editor, e.g. called config2. Next, for Top Cell View type
schematic and in the Global Bindings View List add the word extracted at the end of the line.
Click on OK and the Hierarchy Editor will show the following contents:
The window lists the cells that are present in the diffampConfig cell hierarchy and the views that
are found and used for these cells.
Adding bondpads
The dimes03Lib library contains two bondpad cells that can be used to make connection between your
chip design and the outside world. Cell `pad' is a bondpad cell that has dimensions 100 x 100 micron, and
cell `padHF' is a bondpad cell (for HF applications) that has dimensions 50 x 50 micron. Add either cell
`pad' or cell `padHF' to your schematic and next synthesize the layout again, similar as described in
Section Layout Synthesis. You can e.g. create a new schematic cell diffampChip, where you use cell
diffamp as an instance and next add the instances of the pad cells.
Then, when you synthesize the layout of diffampChip, the layout of cell diffamp, as created
previously, will be re-used as an instance.
Usually, when designing a circuit, it is recommanded to perform also a DRC on the final layout
cell, as well as to extract and re-simulate the cell.
The final layout should obey the rules as described in Section 4.2 and 4.3 in the DIMES03
Design Manual. For our single design chip, this can be achived as follows.
Create a new layout cell, e.g. called tutorialIC. Add an instance of the layout cell CADRE3 from
library dimes03Lib at position (0, 0). This instance denotes the area within which the design
should be placed. Expand the layout by pressing Shift-F to see where there is empty space, which
defines the area that is available. Finally, add an instance of diffampChip somewhere in the
middle and save the layout.
DIMES03 Design Tutorial - Generating a
GDS File
To generate a GDS file that contains a description of the layout of your design suitable for
sending to the IC processing department, click on File -> Export -> Stream .... The following
form will appear. For the field Library Name use dimes03Tutorial, for the field Top Cell Name
use tutorialIC, the name of teh cell that was created in the Section Chip Finishing, for View
Name use layout, and for Output Flile, use something like tutorialIC.gds.
If you want to store information about pin names and instance names in the GDS file as well,
click on User-Defined Data. Fill out the form that pops up as follows in order to convert pin
names and instance names to GDS attributes with number 99.
Next click on OK in the Stream Out User-Defined Data form. Finally click on OK in the Stream
Out form and wait until a message appears that PIPO STRMOUT completed successfully and the
file tutorialIC.gds has been generated.