Basic layout tutorials

  • Introduction
  • Create a ruler
  • Draw a simple metal layer
  • Edit objects
  • Merge layers
  • View the layer stack
  • Create a text label
  • Create a pin


cd ~/cadence/tech_dir
ln -s /path/to/technology/display.drf display.drf

Using bindkeys allow the designer to save time avoiding search-and-click procedures. Cadence IC 6.1.x offer a predefined set of bindkeys for Virtuoso Layout Editor, contained in the $IC_DIR/tools/dfII/samples/local/ SKILL file. Default bindkeys are loaded at Cadence startup from $IC_DIR/share/cdssetup/dfII/bindkeys/ Actually the sample file contains the same bindkeys definition as given in the loaded one. On the other hand a specific technology could introduce its own bindkeys, which may ovveride Cadence's defaults.

If you want to ensure that default bindkeys are always loaded at Virtuoso startup make a local copy in your ~/scratch area of the sample files wich comes with the Cadence IC installation, e.g.

cd ~/scratch/
mkdir bindkeys
cd bindkeys     
cp  $IC_DIR/tools/dfII/samples/local/     

and then simply add in your home ~/.cdsinit_personal initialization file a load() statement:

printf("Loading standard bindkeys for Virtuoso Layout Editor L/XL. \n")

If you want to use custom bindkeys (or create your own bindkeys) for the technology you are working with, place them in a ~/scratch/<tech_dir>/bindkeys directory and use ./.cdsinit or ./.cdsinit_local files. See also

Only Cadence default bindkeys will be mentioned for the WorkBook layout tutorials.

CIW ⇒ Tools ⇒ Library Manager…

LM ⇒ File ⇒ New ⇒ Library

check the Attach to an existing technology library option and select the technology you are working with.

LM ⇒ File ⇒ New ⇒ Cell View..

The basic documentation related to Virtuoso Layout Editor L can be found in


Set some useful preferences in the Cadence main window,

CIW ⇒ Options ⇒ User Preferences and deselect Infix (No Click is necessary for first point)

Display Options window

Layout Editor L/XL ⇒ Options ⇒ Display…, shortcut <e>

Importante! off-grid errors otherwise!

Settare grid spacing,

Enable the Pin Names option in the Display Control section. This allows you to see the names of the pins placed in the layout.

Another very important setting is the number of layers displayed in the layout window. Otherwise your instances will just look like empty red-boxes. The same result can be obtained with the <shift + f> shortcut.

It is a good practice to save these display preferences as your default values, so that each time you will start virtuoso these settings will be automatically loaded. At the bottom of the Display Options window check File and click to Save To to write options into your home ~/.cdsenv or into your technology ./.cdsenv file. Please, remember that by default a local ./.cdsenv is not loaded at startup unless the CDS_LOAD_ENV environment variable is set to addCWD, as described here.

You can also edit the .cdsenv files by hand with your preferred text editor and cut and paste the following lines:

;;   display controls   ;; 

; display pin names
layout   displayPinNames   boolean   t

; start and stop levels
layout   startLevel   int   0    
layout   stopLevel    int   20   ; shows basically everything

;;   grid controls   ;;

; minor spacing

; major spacing

; manufacturer grid
layout            ySnapSpacing    float   <xValue>
layout            xSnapSpacing    float   <yValue>

The X and Y grid spacing in Layout Editor are controlled by the xSnapSpacing and ySnapSpacing environment variables.

Set the Snap Mode to Diagonal instead of Orthogonal

Layout Editor Options window

Layout Editor L/XL ⇒ Options ⇒ Editor… shortcut <shift + e>

Uncheck the Gravity On option if set. Gravity is an annoying option that snaps the mouse cursor to odd places.

Anche qui, conviene poi fare un bel Save To

; disable Gravity On
layout   gravityOn   boolean   nil

The Layer Palette panel shows you all the layers available in the technology you are working with. Basically layout means select different layers and draw rectangles.

Layer Palette introduced in Cadence IC 6.1.4 is a replacement for the old Layer Selection Window (LSW) mentioned in many other web tutorials.

To select a layer simply left click on the desired layer in the list.

Note that only layers flagged as drawing are physical and will be fabricated! All the other layers are used for labeling, highlighting errors and documentation.

The Layer Palette can also be used to restrict the type of layers that are visible or selectable in the layout window.

AV All Visible

NV None Visible

AS All Selectable

NS None Selectable

The Layer Palette is on by default in Cadence IC 6.1.5. If you prefer to use the old LSW instead of the new Layer Palette CDS_USE_PALETTE environment variable


Common layers: p, n, n-well, p+, n+, POLY, active, contact, M1, M2, etc.

Yoy can search in the list typing the name of the layer or part of it in the Search tab.

In this section a few very basic exercises to become familiar with the Virtuoso Layout Editor tool are proposed. These are completely technology-independent examples.

Ex1 - Create a ruler

Check the grid spacing values previously set through the Display Options windows using a ruler!

Layout Editor L ⇒ Tools ⇒ Create Ruler

k, shift+k

Zooming in with <ctrl + z>

Ex2 - Draw a simple M1 metal layer

To draw a mask first choose the corresponding layer in the list by clicking on the layer

M1, che e' technology-independent!

Select the M1 layer in the list. Ensure that the purpose is drawing.

Layout Editor L ⇒ Create ⇒ Shape ⇒ Rectangle or simply use the shortcut <r> then move your cursor in the layout window where you want to draw the mask. Left click with the mouse and move the cursor. Left click again when you reach the desired opposite corner of the rectangle. You can check the dimensions with a ruler as described in the previous exercise.

Ex3 - Edit objects

Stretch, move, copy, delete, chop, undo, rotate/mirror etc.

Layout Editor L ⇒ Edit ⇒ Stretch shortcut <s>

Layout Editor L ⇒ Edit ⇒ Move shortcut <m>

Beside the move command it useful to learn how to quick rotate/mirror a shape by using the F3 key

Layout Editor L ⇒ Edit ⇒ Delete shortcut <canc>

Layout Editor L ⇒ Edit ⇒ Copy shortcut <c>

Per choppare invece 1) select the mask 2) shift + c 3)

Layout Editor L ⇒ Edit ⇒ Basic ⇒ Chop shortcut <shift + c>

Ex4 - Merge layers

merges overlapping selected identical layers

Layout Editor L ⇒ Edit ⇒ Basic ⇒ Merge shortcut <shift + m>

Ex5 - View the layer stack

Draw a stack of superimposed metals M1 M2 M3,,, poi tap!

Ex6 - Create a text label

Layout Editor L/XL ⇒ Create ⇒ Label

Ex7 - Create a pin

Layout Editor L/XL ⇒ Create ⇒ Pin

Layout Editor L/XL ⇒ Create ⇒ Instance shortcut <i>

e.g. instance a contact between poly and M1!

Layout Editor L/Xl ⇒ Create ⇒ Via shortcut <o>

e.g istanziare una matrice di contatti! Specificando rows and columns!

View the layer stack with Layout Editor L/XL ⇒ Tools ⇒ Tap shortcut <t>

SOLO Per esercizio provare a flatterare the cell!

Layout Editor L/XL ⇒ Edit ⇒ Hierarchy ⇒ Flatten

Flattening the hierarchy should be used only for learning purposes or in very rare cases!

Default bindkeys defined by Cadence for Virtuoso Layout Editor L/XL are loaded from

cd ~/.cadence/dfII/bindkeys

If the bindkeys directory does not exist, create it before proceeding.

cp $IC_DIR/share/cdssetup/dfII/bindkeys/

Click here

Fatto benissimo…

Tra l'altro nessuno che cazzo faccia vedere un semplice NMOS e che poi lo simula! Cos'e' troppo stupido per un principiante?

Click here

Click here

e.g minimum width, space, clearance, overlap, extension

click here

Post layout simulations

Click here

shortcut description
k ruler
shift + k delete all rulers
ctrl + z zoom in
shift + z zoom out
f fit zoom
e Display Options
shift + e Layout Editor Options
r draw rectangle
p draw path
i create instance
o create contact/via
l text label
p create pin
ESC end current mode
u undo
ctrl + r redraw
F2 save file
F3 rotate/mirror
m move
c copy
s stretch
q edit instance properties
shift + m merge overlapped layers
shift + c chop

Last update: Luca Pacher - Apr 23, 2013

  • vlsi/workbook/analog/layout/tutorials.txt
  • Ultima modifica: 16/09/2013 18:31
  • da pacher