Sunteți pe pagina 1din 13

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

1.) setenv CDSHOME /cad/latest/cadence/IC/


2.) cds.lib – This file is used as a library pointer, as it points to the libraries. To see the file
ctrl+click on the (Reference link)
3.) .cdsinit – This file is used at the time of initialisation. To see the file (Reference link)

2. Technology Library and Design Library


Technology file is provided by the foundry itself like (TSMC, Global Foundries). It has the
information regarding manufacturing of chips and rules to take while doing a layout. Thus technology
libraries contain information about the characteristics and functions of each logic cell provided in a
semiconductor vendor’s library. Technology libraries are distributed and maintained by
semiconductor vendors (i.e. fabrication houses).

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.

First open virtuoso :

To open virtuoso type “virtuoso &” on the unix command line

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 onFileNewCellview.
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.

Figure 2.2: Creating a new library

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.

Figure 3.1: DRM Grid Size

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.

Figure 3.2: Display Options


4. Introduction to Basic Layers
To begin with we should know how to make PMOS and NMOS in layouts for that we should
have a good knowledge of layers which are there in LAYER SELECTION WINDOW
(LSW). We can read about the layers specifically from the DRC manual.

Figure: Layout of PMOS

Diffusion Layer

Contact

Metal 1

Polysilicon

NWELL Layer PIMP Layer

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 :

1. ESC - Cancels the current mode.


2. u - Undo
3. ctrl z - Zoom in Or zoom by drawing a box around the zoom area with right mouse button.
4. shift z - Zoom out shift + draw box with right mouse button
5. r – draw rectangle
6. s - Stretch the edge of an item (have to be in Partial Select mode)
7. m - Move (hit F3 after to see all the move options, like rotate & flip)
8. c - Copy (hit F3 to see the move options, like copying multiple times)
9. p – Path used for drawing path lines, and is much better than rectangles. Hit F3 to switch
path options, like path width, or try using partial select to modify the length of the path after
you’ve drawn it.
10. q - Query gets info on the currently selected instance; great for changing properties, for
example, if you've drawn a path of 0.7u width and you want 0.5u, select the path, hit "q" and
then change the width property, or even the layer property.
11. i - Add instance / insert (adds a cell)
12. k - Ruler (To measure distance)
13. shift k - Delete all rulers
14. f - Fit entire layout to the screen
15. ctrl p - insert pin (more on pins below)
16. l - label Allows you to insert text to keep track of nets. Make sure you've selected the "text"
layer of the LSW, otherwise you might get DRC errors or short something.
17. F3 - Incredibly important hotkey. If you hit a hotkey (say "p") and then hit F3 immediately
afterwards, it brings a pop-up window detailing all the options associated with that particular
hotkey.
18. shift m - Merges selected items – must be overlapping
19. ctrl d - To deselect everything
20. e – To open display options.
21. o – To add via
6. LSW – Layer Select Window
This window tells you all the layers (metal, poly, n-plus etc) available to you in the process. It's the
long rectangular window that pops up when you open a layout.

AV - All view you see all the layers

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.

AS - All select When you select, you select every layer.

NS - No select When you select, it's everything *but* that layer.

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(drawing) is there which is used for routing purposes.

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.

7. P- Cells (Programmable cells)


As the name suggests these cells are the programming cells. Parameterized Cells (PCells) of devices
are key elements used to increase flexibility and productivity during layout implementation. The
development and maintenance of PCell libraries typically requires device knowledge and
programming expertise . The basic applications are generation of different layouts of different
dimensions of same type of basic layout i.e we can change width, length, number of fingers
according to our need without drawing the layout again and again. Due to p-cells we can save a lot of
time and effort.
8. How to import and export a GDS file
GDS file is the output of any layout and its extension is .gds, to import or export this file we go to the
virtuoso window (not the virtuoso layout window) and then to import, File  Import  Stream and
similarly to export, File  Export  Stream. The stream in and stream out windows are shown
below.

Figure 8.1: Stream In

Figure 8.2: Stream Out


9. References

9.1 Cds.lib

DEFINE cdsDefTechLib $CDSHOME/tools/dfII/etc/cdsDefTechLib

DEFINE basic $CDSHOME/tools/dfII/etc/cdslib/basic

DEFINE gpdk045 ./gpdk045

DEFINE memcanlib $SPECTRAL/lib/memcan/memcanlib

DEFINE CENTER CENTER

DEFINE IO IO

DEFINE XDEC_ARRAY XDEC_ARRAY

DEFINE BITCELL_ARRAY BITCELL_ARRAY

DEFINE WORDLINE_ARRAY WORDLINE_ARRAY

DEFINE RAM_FLOORPLAN RAM_FLOORPLAN

DEFINE analogADP analogADP

DEFINE spectral180 spectral180

DEFINE analogLib $CDSHOME/tools/dfII/etc/cdslib/artist/analogLib

DEFINE VIEW_GEN .//VIEW_GEN

ASSIGN VIEW_GEN writePath .//VIEW_GEN

ASSIGN VIEW_GEN libMode shared

DEFINE avTech /cad/rev1.3/cadence/ASSURA41/tools/assura/etc/avtech/avTech


9.2 .Cdsinit

MEMORY_CANVAS_ENV = getShellEnvVar("SPECTRAL")

if(MEMORY_CANVAS_ENV == nil then

printf( "Failed to load MemoryCanvas !!")

error("MEMORY_CANVAS_ENV: environment not set!")

else

mcFile = strcat(MEMORY_CANVAS_ENV "/bin/memcanOA")

fpFile = strcat(MEMORY_CANVAS_ENV "/bin/createFPFile")

mcFileStat = isFileName(mcFile)

fpFileStat = isFileName(fpFile)

if( mcFileStat == t && fpFileStat == t then

drLoadDrf(strcat(MEMORY_CANVAS_ENV "/lib/memcan.drf") nil)

;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"))

printf( "Memory Canvas loaded successfully!!")

else

if( mcFileStat != t then

errorInfo = strcat(mcFile ": File not found!!")

)
if( fpFileStat != t then

errorInfo = strcat(fpFile ": File not found!!")

printf( "Failed to load MemoryCanvas!! \n")

error( errorInfo)

S-ar putea să vă placă și