Tutorial b
Tutorial b
Created for the MSU VLSI program by Professor A. Mason and the AMSaC lab group.
Revised by C Young & Waqar A Qureshi -FS08
Document Contents
Introduction
Create Layout Cellview
Design Rule Checking
Layout Parameter Extraction
Layout vs. Schematic Comparison
Introduction
This document is one of a three-part tutorial for using CADENCE Custom IC Design Tools (ver:
IC445) for a typical bottom-up digital circuit design flow with the AMI06 process technology
and NCSU design kit. This tutorial demonstrates how to complete the physical design (layout),
design rule check (DRC), parameter extraction, and layout vs. schematic (LVS) using the
Cadence tools. These operations are performed step-by-step to complete the design of an
inverter cell, began in Tutorial A, using the design rules for the AMI C5N (λ=0.3) fabrication
process. Techniques and tips for using Cadence layout tools are presented.
It is important that you always have a verified functional schematic before beginning layout. If
the schematic is not correct, the layout will also be incorrect. As shown in the figure below, the
layout should contain the same pin names and the transistors must be made the same size as
those in the schematic. In this tutorial the nMOS and pMOS transistors both use the minimum
size transistor dimensions (W = 1.5um and L = 0.6um) for the AMI C5N process.
Design rule illustrations for the AMI C5N process can be found at:
http://www.mosis.org/Technical/Layermaps/lm-scmos_scn3m.html
Two design windows (Virtuoso and LSW) will pop-up. The Layer Selection window (LSW)
(small window on the left in the figure below) lets the user select different layers of the mask
layout. Virtuoso will always use the layer selected in the LSW for editing. The LSW can also
be used to determine which layers will be visible and which layers will be selectable. To select a
layer, simply click on the desired layer within the LSW.
Virtuoso is the main layout editor of Cadence design tools. Commonly used functions can be
accessed by pressing the buttons/icons of the toolbar on the left side of this window. There is an
information line at the bottom of the window which shows (from left to right) the X and Y
coordinates of the cursor, number of selected objects, the distance traveled in the X and Y
directions, the total distance, and the command currently in use. This information can be very
handy while editing. At the bottom of the window, another line shows the function of each
mouse button. Note that the mouse button functions will change according to the command you
are currently executing. The default mouse mode is selection, and as long as you do not choose a
new mode you will remain in that mode. To quit from any mode or command and return to the
default selection mode, the ‘ESC’ key can be used.
Now draw the Power Rail and the Ground Rail in Metal-1 as power node pins as shown below.
• In the Virtuoso Layout Editing window select Create => Pin to open the Create Shape Pin
window. Using this window we will set the global power pins.
• In the Terminal Names field, enter gnd! which is the global name for ground.
• Check Rectangle and Display Terminal Name. In I/O Type select jumper.
• Move your mouse to the cell origin, where the horizontal and vertical guidelines intersect.
Check the information bar at the bottom of the screen to make sure you are at the right
location (0,0). Click on this point.
• Move the mouse up and right to create a rectangle. Use the data in the information bar to
move your mouse to the point that is 4.8um horizontal and 3um vertical from the origin (4.8
x 3 um is always in the X direction by the Y direction, respectively). Click on this point to
create the Metal-1 rectangle which will be your ground rail. (This is similar to selecting
metal1 drw layer from the LSW. In the rest of the tutorial, always use the drw layers for your
layouts unless otherwise specified.)
• Repeat the previous steps to draw the vdd! rail 21um (70 lambda), top to bottom, above the
GND rail. Read the Useful Editing Tools section below.
Move: If you place the objects on the wrong place, you can use move function to adjust the
location of the object.
• Select Edit => Move (or click on the move icon on the toolbar), (shortcut key is ‘m’).
• A window will pop-up. The Snap Mode is an interesting option. When this is in orthogonal
setting, the copied objects will move only along one axis. This is a good feature to help you
avoid alignment problems.
• When you have finished the move operation, hit the ‘ESC’ key to exit the move command.
Copy: If you want to create the same object repeatedly, you can use the copy function.
• Select Edit => Copy and the copy dialog box will pop-up (shortcut key is ‘c’).
• Click in an object. Notice that an outline of the object will attach to your mouse cursor.
Move our mouse and click when you are satisfied with the location to place a copy of the
object.
Undo: When you make a mistake (accidentally delete a component, etc.), you can undo the
action by click on the Undo icon in the toolbar (shortcut key is ‘u’).
STEP 12: Connect Transistor Nodes to Match Schematic and Form the Inverter
• Select poly layer from the LSW.
• Draw a rectangle to connect the poly gate inputs of nMOS and pMOS transistors.
Note: To connect polygons of the same layer (eg., poly) you simply need to add another polygon
that makes contact to each of the original layers. If the layers touch or overlap, they will form a
continuous shape for fabrication.
• Select layer Metal-1 from the LSW.
• Draw a rectangle to connect the source of the nMOS to GND rail. In this tutorial, the left side
of the MOS is the source, and the right side is drain.
• Draw a rectangle to connect the source of the pMOS to VDD rail.
• In the Virtuoso Layout Editing window select Create => Pin to open the Create Shape Pin
window. Using this window we will set the output pin.
• In the Terminal Names field, enter Y.
STEP 13: Add Pin to the Input Node to make Input Available in Metal-1
As a standard practice that will help when connecting multiple cells (logic gates), we need to
ensure that all of our input and output nodes have a connection in Metal-1. For our inverter, the
output is already in Metal-1, but the input (the node that links the gates of both transistors) is
only in poly. We will make a connection to Metal-1 on the input by adding a poly-to-metal
contact.
• Draw a 1.2 x 1.2 um square of poly extended from the existing poly away from the output
metal (see figure below).
• Add a contact (0.6um x 0.6um square in the cc layer) in the center of the new poly square.
• In the Virtuoso Layout Editing window select Create => Pin to open the Create Shape Pin
window. Using this window we will the input.
• In the Terminal Names field, enter A.
• Check Rectangle and Display Terminal Name. In I/O Type select input.
• In the Virtuoso Layout Editing window, draw a square (about 1.2 x 1.2 um) that overlaps the
poly box. This is automatically done in the Metal-1 layer.
(top) DRC dialog window and (bottom) CIW showing DRC results.
Before beginning a layout extraction you must have the cell opened in the layout window and the
layout should have already passed DRC.
• In the Virtuoso Layout Editing window select Verify => Extract. A new window (below)
with extraction options will appear.
• Click on Set Switches and select Extract_parasitic_caps. This setting will extract parasitic
elements from the layout. Click on OK. Then click OK on the Extractor Window.
• After extraction check the Command Interpreter Window to make sure there are no errors.
• Following a successful extraction you will see a new cell view called extracted added to the
Library Manager window.
Extracted view (left) before and (right) after showing extracted devices.
In addition to the actual transistors you will notice a number of elements (mainly capacitors) in
your extracted cell view. These are not actual devices. They are parasitic capacitances, which
are side effects formed by different layers you used for your layout.
• In the Virtuoso Layout Editing window select Verify => LVS to open the LVS window.
• When the LVS comparison is complete you will get a pop up window saying “Job . . . has
succeeded”. This does NOT necessarily mean the circuits match, just that the LVS operation
is complete. Click OK to close this window.
• In the LVS window, click on the Output button (just right of the Run button) to display the
LVS result. Scroll through this window and take a look at the LVS result. The most
important part of the report tells if errors were found or if netlists did match (“The netlists
match” as shown below).
• If there are no errors, your layout is complete and correct. If there are errors, you will have
to reload the layout view, fix the problems, and re-run LVS until there are no errors. See the
Guide to Passing LVS document for some tips on correcting LVS errors.
Series FETs
By default, LVS will allow FETs in series to be matched in any order. This can cause
discrepancies between simulations of schematic and extracted cellviews, particularly in timing
analysis. Therefore, it is generally preferable to modify this feature as follows for any cell that
includes series transistors to ensure an exact match between schematic and layout.
• In the Virtuoso Layout Editing window select NCSU => Modify LVS Rules and uncheck
the “Allow FET Series Permutation” checkbox.
You should confirm this setting before performing LVS on most logic gates that are more
complex than the INV cell, including NAND and NOR gates.