Virtuoso Reference
Virtuoso Reference
Virtuoso Reference
Table of Contents
1. Environment Settings ....................................................................................................... 3
2. Technology Library and Design Library ....................................................................... 3
3. Grid Settings ..................................................................................................................... 5
4. Introduction to Basic Layers ........................................................................................... 7
5. Shortcuts ............................................................................................................................ 8
6. LSW – Layer Select Window ........................................................................................... 9
7. P- Cells (Programmable cells) ......................................................................................... 9
8. How to import and export a GDS file ........................................................................... 10
9. References........................................................................................................................ 11
9.1 Cds.lib ................................................................................................................................ 11
9.2 .Cdsinit ............................................................................................................................... 12
Virtuoso is a cadence tool which is used to make layouts of different designs. In this
document we will learn how to use virtuoso.
1. Environment Settings
First of all we should have a correct environment for that make sure we will have a certain
files in our environment that is
Design Library contains the information of every cell, instances and has the information of there
driving strengths, number of pins, information of pins like there direction, load capacitances is there.
PVT conditions is also specified in the libraries, Information about the paracitics and timing related
information is also there.
Now the thing is how to link technology library with the design library.
Then go to Tools Library Manager choose from the library manager window in which
library you want to work and then make a new cellview by clicking onFileNewCellview.
Then select accordingly if you want to make schematic then select view and type and for
layout also change accordingly.
Figure 2.1: Cell View Settings
Here technology file was already linked with the design library as we were using previous
setup. Linking is required when we are making new library.
Now if we want to create new library then follow the following steps.
File New Library Name (The name you want to give to your library) and tick Reference
existing technology libraries as shown below then click ok.
Then this new window will open and then select the technology library with which we want to link
our design. Then press the right arrow and then it will shown on the right hand side under the
Reference Existing Technology Libraries and then press ok.
Figure 2.3: Linking a Technology Library
So after this we will successfully link design library with our technology library.
Now select the cellview start making its layout. For that we should have schematic of that
cellview or design.
3. Grid Settings
Before doing anything go to options Display and set the X snap spacing and Y snap
spacing. This is the very important aspect of the layout as this define the grid size in the
layout. Once set we can not change this (if we change we have to do the whole layout
because it shows the off grid errors while doing the DRC).
Now we might be thinking how we should know what grid size we should select for our
design. To know that we should open the DRM of the specific technology and check the grid
size. This picture is directly taken from DRM of GPDK 45.
NOTE: The grid size is technology dependent always changes with technology so always
refer DRM (Design Rule Manual) while starting a layout.
To open display options we can also use the shortcut key “e” and the display options
window will appear.
Diffusion Layer
Contact
Metal 1
Polysilicon
For making layouts we should have a good knowledge of fabrication process as these layers
NWELL, PIMP, Diffusion and Polysilicion why we are using are covered in fabrication
process. So it is recommended for everyone to go through the fabrication process properly
before starting layouts.
To select shape of routing metal go to create shape then choose and then select metal
from LSW.
To add instance go to create instance and select the respective component we want.
Similarly we can choose everything from the layout window and have good hands on
virtuoso so try to use options from layout window as much as possible. Still we have
provided some shortcuts for virtuoso.
5. Shortcuts
Some of the useful shortcuts of virtuoso :
NV - No view You see *only* the selected layer. You may have to hit ctrl-r (redraw) to see the new
view. You can select more than one layer to view.
In the LSW there are layers, objects and grid options. Here are some of the options that we will find in
the respective options.
Layers: In layers there are different layers available from where we can choose layers according to
our requirements. Keep one thing in mind that is there are further different layers of single layer
for example: In LSW for
Metal1(pin) is there which is used to draw the pin for the metal1 routed metal.
Metal1 (text) layer which is used for labelling the specific pin. So select the layer accordingly.
Object:
Inst – instance Deselect this to only select the current hierarchy, but no blocks. Great way for
deleting lots of wire traces without deleting the actual transistors you've placed.
Pin – pin deselect this and you can't select the pins. BE VERY CAREFUL WITH THIS ONE. I've
left it deselected many times and when I've gone to move chunks of layout, the pins stay behind,
causing major LVS headaches later.
9.1 Cds.lib
DEFINE IO IO
MEMORY_CANVAS_ENV = getShellEnvVar("SPECTRAL")
else
mcFileStat = isFileName(mcFile)
fpFileStat = isFileName(fpFile)
;load(strcat(MEMORY_CANVAS_ENV "/lib/memcanLoad.il"))
load(strcat(MEMORY_CANVAS_ENV "/lib/memcanMenu.il"))
load(strcat(MEMORY_CANVAS_ENV "/lib/realizeFP.il"))
load(strcat(MEMORY_CANVAS_ENV "/lib/createLayers.il"))
else
)
if( fpFileStat != t then
error( errorInfo)