Tutorial Icfb PDF
Tutorial Icfb PDF
de Electrónica
Microelectronica
Marcelino Santos
Table of contends
4. Schematic Simulation.................................................................................................................... 9
Creating a test bench (schematic for simulation) ........................................................................ 9
Simulating the schematic .............................................................................................................. 11
Waveform Window ......................................................................................................................... 13
Expressions..................................................................................................................................... 14
Parametric analysis........................................................................................................................ 15
7. Extraction ....................................................................................................................................... 31
Starting extraction .......................................................................................................................... 31
2
Acknowledgements: The author thanks José Jesus and Sílvia Gomes for their precious help
in the elaboration of this tutorial.
1. Starting Cadence
Starting Cadence for the first time
At first, open a terminal program and source the configuration file cad.init.
Then create a directory for the project files and change to that directory.
Then a script from AustriaMicroSystems is used to initialize the Cadence Custom IC Design
tools with the process technology C35B3 (-tech c35b3). Also the Command Interpreter
Window (CIW) is started in mode Front-To-Back Design (-mode fb).
• Command Interpreter Window (CIW): To start Cadence tools and enter SKILL
commands. The output of the running tools are displayed here and closing this
window causes the whole suite to close.
• Library Manager: To manage the cells with their various views in the libraries. Here
new cells and libraries are created. This tool can be started from the CIW via the
menu bar: Tools - Library Manager.
Close the “what’s new” windows and select the C35B3C0 process.
The library manager window (Fig. 1) can be used for opening existing libraries or cells or
creating new ones. The left column of the library manager window is a list of the current
(accessible) libraries. Among these PRIMLIB contains the transistors you will need for the
inverter.
Left click at PRIMLIB. The middle column shows the elements of PRIMLIB. Left click at
nmos4. This is the basic n-MOS transistor. In the third, rightmost, column you can see
several views of nmos4. You will need the symbol view for the schematic and the layout view
for building the layout.
3
Fig. 1 Library Manager window
and enter a name for the new library, e.g. STUDENTS. In the next window we choose to
attach the library to an existing techfile. After pressing OK the techfile can be selected: Set
Technology File to TECH_C35B3 and press OK.
Now we can start to create the schematic of our cell. Select the newly made library and
choose
from the menu bar of the Library Manager. Enter a name for the cell in the appearing form
(e.g. inverter1) and check whether the correct options are selected: Library Name must be set
to STUDENTS, View Name must be set to schematic and Tool must be set to Composer-
Schematic in order to start the Virtuoso Schematic Composer. After pressing OK the
Schematic Composer should start automatically.
4
Drawing the schematic
The following schematic is now entered into the Schematic Composer:
Before adding instances or wires in the inverter schematic, briefly read the Miscellaneous part
in this section.
Fill out the form by hand or press the Browse button to search the libraries for the appropriate
cell. The MOS transistors are in the library PRIMLIB and are called pmos4 and nmos4
respectively. To place them in a schematic the selected View must be symbol. After choosing
the right cell, parameters of the cell can be set in the form (Fig. 3). Change the default values
of the transistor width (wpmos = 4 µm and wnmos = 1 µm) and place each symbol in the
schematic using the left mouse button.
5
Fig.3 Dialogue box for the transistor properties.
6
To hide the Add Instance form during placing press the Hide button. To rotate or flip the cell
press the Rotate (shortcut <r>), Sideways or Uside Down buttons.
from the menu bar and fill out the appearing form. Give a list of Pin Names separated by
spaces, e.g. IN OUT, and select the direction of the first pin in the list (IN is an input pin). Now
place the first pin. To hide the Add Pin form, press the Hide button. To rotate or flip the pin
press the Rotate (shortcut <r>), Sideways or Uside Down buttons.
After placing the first pin its name is automatically deleted from the Pin Names list and the
next pin direction can be changed and the pin placed. Place the input pin IN and the output
pin OUT.
from the menu bar and place wires by clicking on the begin and end point of a wire. Connect
the objects via their connection ports. If the mouse pointer is moved near to a connection port
and the port is marked with the diamond symbol the wire can be quick-connected to that port
by pressing <s>.
Don't forget to connect the bulk-ports of the pMOS transistors with VDD and the bulk-
ports of the nMOS transistors with GND!
and fill in a list of wire Names in the appearing form. To hide the Add Wire Name form during
naming press the Hide button. Add the wire names in the order as the appear on the Names
list by clicking the appropriate wire. Note that wires given the same name are connected
implicitly. The wires connected to the vdd cell are automatically named vdd! and the wires
connected to the cell gnd are automatically named gnd!.
Miscellaneous
• To zoom in on the schematic select Windows - Zoom - Zoom in (shortcut <z>) and drag a
box around the area of interest. Alternatively, right click and draw the rectangle to zoom in.
Very
• To fit the schematic window to the current design select Window - Fit (shortcut <f>). useful!
• To move an object:
7
• Select the object and move the mouse pointer over it until the pointer changes to a
move-object symbol. Press the left mouse button and move the object.
• Select Edit - Move (shortcut <M>) from the menu bar and select the object to move.
• To edit cell instance properties select the cell in the composer window and choose Edit -
Properties - Objects (shortcut <q>) from the menu bar.
• In the Composer window you can see which command is currently activated and how many
instances are currently selected. In the lower status bar you can see the current actions
Very
assigned to the mouse buttons according to the currently activated command. important!
from the menu bar. Possible errors are indicated by flashing markers. These markers can be
deleted by selecting Check - Delete All Markers and pressing OK.
To create the symbol, open the cell schematic in the Virtuoso Composer and select
and check whether the appearing form is filled in correctly: To View Name must be set to
symbol and Tool / Data Type must be set to Composer-Symbol. After hitting OK the form
8
Symbol Generation Options appear where the initial positions of the pins can be chosen.
Press OK after assigning the pins to the desired lists.
The Virtuoso Schematic Composer will open in symbol-editing mode and a default symbol will
be created for the cell. Now the symbol can be designed.
After finishing the design of the symbol check and save it with: Design - Check and Save.
The final symbol could look like this (click on the picture to enlarge it):
After finishing the design of the symbol check and save it with: Design - Check and Save.
4. Schematic Simulation
Creating a test bench (schematic for simulation)
The first step to simulate the inverter is to create a schematic with an instance of the new
inverter1 (symbol). To create a schematic refer to section 2. Creating the Schematic of this
document. The schematic of the test bench must be created in the library STUDENTS and
the cell should be named inv_test.
The inverter gate in the simulation schematic is of course the cell inverter1 from the library
STUDENTS.
9
Add a instance (<i>) of a DC voltage source between vdd and gnd. Use the cell vdc from the
library analogLib and set the parameter DC Voltage to vdd_val V. By connecting this voltage
source to the cells vdd and gnd, from the library analogLib, you are defining vdd and gnd for
all the cells that use these labels.
In order to generate the input signal for the simulation use a voltage source of type vpulse
(rectangular signal) from the library analogLib. Define the voltage source with the following
parameters:
10
vpulse voltage source at
input IN
Voltage 1 3.3 V
Voltage 2 0.0 V
Delay time 0 s
Rise time 5n s
Fall time 5n s
Pulse
45n s
width
Period 100n s
Note that all parameters in the previous table can be defined as function of parameters (e.g.
Pulse with = input_slew; Pulse with = 50n-input_slew). These parameters must be assigned
in the simulator environment, with a constant value or in a parametric analysis.
We also have to name the input wire (e.g. IN) and the output wire (e.g. OUT) so that we can
select them during simulation and plot their voltage curves.
Add a capacitor (cap) of 1pF to the output pin from the library analogLib.
vdc = vdd_value
11
The following simulator settings have to be made:
12
To build the netlist and run the simulation select
First the simulator output log window appears and shows the simulation progress. After the
simulation has finished the waveform window appears and the selected signals are plotted.
Waveform Window
Tools – calculator
In the IO area of the calculator window (see Fig. 9) you can type the expression to evaluate
(see the list of functions presented) and see the result after clicking “eval”.
13
IO area
Expressions
It is also possible to enter expressions in the field Outputs of the Virtuoso Analog Environment
to calculate parameters of the cell (propagation delay, output slew, ...) from the simulation
results directly or to plot modified signal curves. These expressions can be tested with the
Calculator!
Select Outputs - Setup from the menu bar of the Virtuoso Analog Environment and add the
following expression:
The expression propagation delay gives the propagation delay of the gate when the input
value changes from IN = 0 to IN = 1.
14
After plotting the expression with Results - Plot Outputs - Expressions the result of the
expression for the propagation delay is displayed in the field Outputs of the Virtuoso Analog
Environment.
The current curve of an object node can be accessed with the command i("/object/node"
?result "tran").
Parametric analysis
It is very important to evaluate the circuit behaviour with different temperatures, supply
voltages and technological parameters. Parametric analysis is used in this tutorial to sweep
the vdd_val parameter and the temperature. In the Virtuoso Analog Environment select
15
In the Parametric analysis window select
Field Value
Step Control Linear Steps
From -10
To 50
Step Size 10
Range Type From/To
and select
Analysis – Start
Fig. 13 Parametric analysis display in the waveform window (with a 1-> 0 zoom in).
Fig. 13 shows how results of parametric analysis with expressions are displayed in the
waveform window: a new graph is displayed with the expression result evolution.
In order to change the power supply value, in the Parametric analysis window select
Field Value
Step Control Linear Steps
From 2
To 4
Step Size 1
Range Type From/To
16
5. Creating the Layout
Starting the layout tool
Open the schematic view of the inverter1 cell and select
from the menu bar. Selecting this option will first open a small dialog box that will let the user
create a new layout or open an existing one. We opt for Create New. The next dialog gives us
the possibility to change the properties of the new cellview. Check whether the View Name is
set to layout and the Tool is set to Virtuoso. After pressing OK the Virtuoso Layout XL Editor
will start.
The Layer Selection Window is used to select the active layer (left
mouse-button), to set whether a layer is selectable or not (right
mouse-button) and to set whether a layer is visible or not (middle
mouse-button). After the visibility status of a layer has been
changed press the <F6> key to refresh the screen.
Each layer appears in the LSW window with purpose drw for
drawing and pin for pin, you will almost always need drw.
in the Virtuoso Layout XL Editor menu bar. Fill out the appearing
form to set some properties of the components in the layout: set the
boundary width to 3 µm and the boundary height to 13 µm.
Compare the other fields of the form with Fig 15.
Fig.14 LSW
Check the Pin Label Shape = Label box and enter the Pin Label
Options… dialogue window. Set the Layer Name and Layer Purpose to Same as Pin.
17
Fig.15 Layout generation options.
After hitting OK the Virtuoso Layout XL Editor creates the chosen components in the layout
window (Fig. 16).
18
Fig.16 Layout automatically generated based on the schematic.
19
Layout creation - placing the components
A first placement iteration can be obtained by selecting
The replaced cells will look like Fig. 17. At this stage, in more complex cells, the commands
Connectivity – show incomplete nets / hide incomplete nets may be of interest.
prBoundary =
limits of the cell
layout
When a pin or MOS transistor is selected in the Layout Window, the corresponding device is
also highlighted in the Schematic Window. This works also when a component is selected in
the Schematic Window.
When the Drain or Source contacts of two similar transistors are connected directly, Virtuoso
XL will chain these transistors automatically after shifting the according areas over each
other. Furthermore Virtuoso XL determines the necessity for an additional connection to this
area.
To rotate a transistor either select the command Edit - Move, select the transistor you want
to rotate and press the right mouse button or bring up the object properties of the appropriate
transistor and change the entry Rotation (Fig.18).
20
Fig. 18 Transistor properties including Rotation = 90º.
While a command is activated its detailed behavior can be customized by pressing the
<F3> key (e.g. set snap mode).
Very useful is Virtuoso XL's status bar just above the menu bar:
Also very useful is the mouse function indicator at the bottom of the Layout Window. There
the currently assigned functions to the mouse buttons according to the active command are
indicated.
Select the layer metal 1(MET1) of type drawing (drw), clicking in the corresponding layer in
the LSW (see Fig.14).
Starting at coordinates (0, 0), draw a rectangle (<r>) of metal 1 with the total width of the
prBoundary (that will be the limit of the cell) and 1.8 µm of height (see Fig. 19).
21
Fig. 19 Gnd rectangle in metal1.
Copy this metal 1 rectangle to the top of the prBoundary box (for vdd usage).
Place the gnd pin and label over the metal 1 rectangle in the bottom of the cell. For simulation
purpose it can be placed anywhere. If the cell would be used in an automatic placement and
routing process, two rectangles of metal 1 of type pin should be overlapped to the metal 1
drw, at each access of the ground rectangle. Each metal 1 pin rectangle points to an access
to the net and therefore its properties must include the directions from where the access is
allowed (Fig.20). Place the vdd pin and label over the metal 1 rectangle in the top of the cell.
The placement of the global pins gnd! and vdd! needs some additional setting. Their
properties have to be additionally edited. After selecting them and depressing <q> the Edit
Instance Properties dialog box opens. Here Connectivity has to be checked. Terminal Name
is displayed (gnd! or vdd!). Net Expression Property and its Default value has to be defined as
gnd and gnd! as well as vdd and vdd! respectively. If this property is missing then everything
will run correctly with the only exception of the simulation of the extracted netlist. The LVS will
not be influenced, but the simulator will not be able to connect the power supply to the power
rails of the layout and, therefore, the circuit will not function at all.
22
Fig. 20 Assigning access directions to a pin.
Create – Contact
and selecting PD_C. Place the bottom-left corner of the contact at coordinates (0, 0). This
contact includes the active area (diff), p+select (pplus), metal 1 (met1), and the contact (cont).
It performs a good ohmic contact between metal 1 and the substrate.
In order to connect the n-well to vdd, the n-well included in the pmos transistor must be
extended to include the vdd line. Select the layer NTUB of type drawing and draw a rectangle
starting from the top of the pmos n-well and ending 0.9 µm above the vdd line. (see Fig. 24).
Similarly to the gnd contact to substrate, select the ND_C and place the top-left corner of the
contact at coordinates (0, 13). This contact includes the active area (diff), n+select (nplus),
metal 1 (met1), and the contact (cont). It performs a good ohmic contact between metal 1 and
n-well (see Fig. 24).
Rotate (see item Layout creation – placing the components in this section) and move (<m>)
the nmos transistor, centring in the prBoundary box and bringing the metal 1 drain and source
to the distance pointed by the ruler (see Fig. 21).
23
Fig. 21 Gnd rectangle with pin assignment, substrate connection and nmos placement.
Create a ruler (<k>), starting from the top of the nplus of the nmos transistor, with 1.2 µm of
lenght (see Fig. 22).
Rotate and move (<m>) the pmos transistor, centring in the prBoundary box and bringing the
nwell (ntub – see Fig. 22) to the distance pointed by the ruler.
24
Fig. 22 pmos placement.
Before activating a command select the desired layer in the Layer Selection Window (LSW)!
When the path command is activated and the path has been started at an identifiable
connection Virtuoso XL highlights the geometries and terminals of other components which
should be connected. To change the layer while drawing a path use the path options invoked
by pressing <F3>. There the Change To Layer option can be modified and Virtuoso XL
automatically generates the contacts from one layer to another.
Inter-layer contacts can be created explicitly through Create - Contact (shortcut <o>). To
establish a connection between the metal layer 2 and the poly layer 1, two of these contacts
25
have to be placed: MET2 -> MET1 (VIA1_C) and MET1 -> POLY1 (P1_C). They can be
placed right over each other.
With the command Connectivity - Show Incomplete Nets one can highligt signal nets that
haven't been routed correctly and completely. To end the highlighting of incomplete nets
select Connectivity - Hide Incomplete Nets from the menu bar.
Fig. 23 shows the gates and drains interconnections and the OUT pin placement over
the corresponding metal 1 connection. Fig. 23 also shows a poly-metal 1 contact that
allows connectivity in metal 1 to the input of the inverter (Create – Contact – P1_C).
The sources of the transistors must be connected to vdd! and gnd! (see Fig. 24). The IN pin
and label must be moved to the top of the metal 1 connected to the inverter input (overlapping
the P1_C contact, not displayed in Fig. 23 for clarity).
26
Fig. 24 Connection of the pmos source, n-well contact and vdd! pin assignment.
If the schematic of the cell is changed during or after the layout of the cell has been designed,
the following commands could be of interest:
27
6. Design-Rule-Check (DRC)
The layout of a cell must be drawn according to a set of strict design rules. During the Design-
Rule-Check a program checks the design against the design rules and reports any violations.
Starting DRC
To start the DRC for the layout select
Verify - DRC
from the menu bar of the Virtuoso Layout XL Editor where the layout intended for checking is
opened. In the appearing form, the DRC can be parameterized. Set the following options:
28
After hitting OK the DRC is carried out and any violations are highlighted in the layout by
flashing markers and the errors are reported in the CIW (see Fig. 26).
Only the errors listed in Fig. 27 should be identified by the DRC of the inverter.
They could easily be avoided when we set the switch no_coverage in the DRC options form.
These errors (Minimum ... density ...) only make sense in the scope of the whole layout of the
chip where they must be treated as severe errors. Generally, if you neglect a DRC error you
should really be able to explain why this error can be ignored.
29
When we select an error in the list, Virtuoso XL focuses to the area in the layout where the
error occurs. If there is more than one error with the same name, we can switch between
these errors with the Error Number slider. The Zoom Factor applied by Virtuoso XL to focus to
an error can also be set with a slider.
To delete all markers press the button Delete all Marker in the DRC Error Search form or
select Verify - Markers - Delete All from the Virtuoso XL menu bar.
30
7. Extraction
Circuit extraction is performed after the mask layout design of the cell is completed. It creates
a detailed netlist (extracted netlist) of the cell which can be used for example in the Layout-
versus-Schematic check or by a circuit simulator. The circuit extractor is capable of identifying
the individual transistors and their interconnections as well as the parasitic resistances and
capacitances that are inevitably present in the cell. Thus, the extracted netlist provides a very
accurate model of the cell.
Starting extraction
To start the extraction select
Verify - Extract
from the menu bar of the Virtuoso Layout XL Editor where the layout intended for extraction is
opened. In the appearing form, the options for the extractor can be given. Set the following
options:
After hitting OK the extraction is carried out and a new view called extracted is generated for
the cell (Library Manager).
The LVS step provides an additional level of confidence for the integrity of the design and
ensures that the mask layout is a correct realization of the intended circuit. Note that the LVS
check only guarantees topological match: A successful LVS check will not guarantee that the
mask layout of the cell will actually satisfy the performance requirements.
Any errors that may show up during the LVS check (such as unintended connections between
transistors, missing connections/devices, ...) should be corrected in the mask layout. Note
that the extraction step must be repeated every time the layout of the cell is modified.
31
Starting LVS checking
To start the LVS check select
Verify - LVS
from the menu bar of the Virtuoso Layout Editor where the extracted netlist of the cell
intended for LVS checking is opened. If a form called "LVS Form Contents Different" appears,
select Use: Form Contents and press OK. In the next form, the options for the LVS check can
be set: It can be specified which cell views should be compared and where to find the LVS
rules file. Fill out the form as Fig. 28.
32
Fig. 29 LVS result.
Parasitics probing
The different nets in the extracted netlist can be probed to get a summary of the parasitics
(resistances, capacitances) present on the nets. Since we could only extract parasitic
capacitances during the extraction of the netlist, no values for parasitic resistances are
indicated.
To set a parasitics probe press the button Parasitic Probe in the LVS Window. In the next
window press the button Whole Net and select a net in the layout window where the extracted
view is shown. It is also possible to get a summary of parasitics between nets. Therefore, use
the button Net To Net before selecting two nets in the extracted view.
33
9. Post-Layout Simulation
It is now easy to simulate the layout (more exactly the extracted netlist) with the Virtuoso
Analog Circuit Design Environment. Close the layout editor window and open the test bench
for the simulation of the cell schematic (Section 4. Schematic Simulation). The same test
bench can be used for the extracted simulation. Open the test bench schematic and select
from the Composer window of the simulation schematic
Setup - Environment
and set Switch View List to spectreS cmos_sch extracted schematic. As a result of this, if the
simulator now creates the netlist of the simulated circuit it uses the extracted netlist of the cell
rather than the schematic.
34
Fig. 30 GDSII export.
Note that the run directory gds2Export must be created in the current directory cds_tutorial
before the export can be started. The log file of the export process (PIPO.LOG), which
explains warnings and errors during export in detail, and the GDS2-file itself will be stored in
the run directory.
The Layer Map Table, which can be stated by pressing the button User-Defined Data, should
be set to
/soft/ams/artist/HK_C35/TECH_C35B3/strmInOut.layertable
There are two warnings given for the export process concerning the layers (changedLayer
220 tool0) and (prBoundary 235 drawing). These warnings can be safely ignored.
35