Fourth Tutorial
Automatic Layout Generation Using the scn08hp Library of Standard Cells
by
Jack Meador and Madhu Parameswaran
Electrical Engineering and Computer Science
Washington State University, Pullman
and
Constantinos Dovrolis
University of Wisconsin, Madison
Spring 1999.
The IC Station Toolset
IC Station is Mentor Graphics' layout editing software toolset.
The specific tools used in this course include:
IC Graph : The interactive layout editor and tool interface.
IC Rules: A set of functions callable from within IC Graph that let you
perform Design Rules Checking (DRC).
IC Trace: A set of functions callable from within IC Graph that let you
perform Layout-Versus-Schematic (LVS) verification.
IC Blocks: A set of functions callable from within IC Graph that let you
perform cell autoplacement and interconnect routing.
IC Extract: A set of functions callable from within IC Graph that
let you perform parasitic capacitance/resistance extraction and backannotation.
You will now be guided step-by-step through the design of the
layout of an 8-bit 2-by-1 mux using the scn08hp library of standard cells.
The tool that will be mainly used is IC Blocks.
You will also learn how to perform LVS and DRC checks.
Finally, you will backannotate a QuickSim simulation
with post-layout timing information.
Before we start with the design, however, please add the following
`soft path' in your mgc_location_map.
Specifically:
Go to your mgc directory.
Add the following two lines at the end of
the mgv_location_map file:
$PROJ_PARTS_cs755
/afs/cs.wisc.edu/p/course/cs755-david/public/html/ICstation
Note that you only need to do this part of the tutorial once.
Logic Design
The first step of the process is to design an 8-bit 2-by-1 multiplexer using
the scn08hp library of logic components. Note that each of these
components corresponds to a standard cell which will be used when
you create the layout for this design.
The multiplexer will be designed using Design Architect and
following the procedure explained in the second tutorial.
For example, you can first design a
1-bit 2-by-1 multiplexer,
and then use this block in the design of the
8-bit multiplexer.
Do not forget to check your design and create a symbol for it
(see tutorial-2). It is also recommended that you first simulate
your logic design with QuickSim for functional verification,
before you try to synthesize the standard cells layout.
Viewpoint Creation
You will now create a viewpoint of the multiplexer
for QuickSim, a viewpoint for IC Blocks, and a viewpoint
for IC Trace (LVS).
Open DVE by typing dve.
-
First create a viewpoint for the QuickSim digital simulator.
To do this, open a viewpoint for the 8-bit multiplexer component called
qsim_dv_mux8 (or any name you want).
Add an expression primitive called model, and
give it the value technology.
Also add a string parameter
named technology and give it the value scn08hp_nom.
Then, use Setup to set the defaults for QuickSim.
Save and close this viewpoint (without closing DVE).
-
Now create a viewpoint of the 8-bit multiplexer component
for the IC Blocks place-and-route tool.
To do this open another viewpoint called, say, icblocks_dv_mux8.
Add an expression primitive called model, and
give it the value technology.
Also add a string parameter named technology,
and give it the value scn08hp_nom.
Note that this is just like a QuickSim
viewpoint without, however, the setup for
the "QuickSim&QuickPath" defaults.
Save and close the viewpoint.
-
Now create a viewpoint of the 8-bit multiplexer component
for the IC Trace Layout-Versus-Schematic tool.
To do this open another viewpoint called, say, ictrace_dv_mux8.
Add primitive called element, and
do not give to it any value.
Save and close the viewpoint.
The Three Layout Editing Modes
Placement and routing is the process of automatically generating a layout
from a previously existing schematic. To increase our confidence in the
correctness of a generated result, we setup IC Graph (the layout editor) to
carefully check every action taken by IC Blocks (the placer/router).
There are three layout editing modes in IC Graph.
The Geometry Editing, or GE, mode
provides the layout technician the greatest flexibility, as it allows
unrestricted manual polygon editing. It does not use or maintain any
connectivity information from the part schematic, nor does it check for
physical design rule errors. A formal schematic of the circuit simply need
not exist. In this mode, IC Graph functions strictly as a "dumb" layout
editor, and nothing more.
The Connectivity Editing, or CE, mode
maintains connectivity data through the editing process,
but does nothing to prevent layout errors from occurring.
It will give a warning if a layout connection
is inconsistent with a connection in the schematic,
but it will otherwise allow the edit to occur.
The Correct-By-Construction, or CBC, mode does not
allow any editing action to occur that would violate a design rule or
contradict a connection in the design's logic schematic.
We will use the CBC mode to monitor the results generated by IC Blocks.
AutoFloorplan, AutoPlace and AutoRoute
We will now use IC Blocks to automatically place and route the 8-bit mux design.
Note that as you work through this part of the tutorial there are many
options that you may choose along the way to layout completion.
This exercise will walk you through a relatively simple, direct path to
an automatically placed and routed layout. You are encouraged to explore
the tool and experiment further as you approach larger layout tasks.
The IC Graph tool is the main entry point in the IC Station environment.
To invoke IC Station from the unix command prompt, simply type ic.
-
You first have to select the Process and the Design Rules
that will be used in the layout. From the menu at the top of the screen,
select File->Process->Load. In the form that will appear, type
$MGC_HEP/technology/ic/scmos and the SCMOS process will be
specified. Then, select File->Load Rules, and type
$MGC_HEP/technology/ic/scmos.rules in the form that will appear.
This loads the corresponding set of Design Rules that we will use in this
class.
-
Select MGC->LocationMap->SetWorkingDirectory and specify a
working directory for the layout design process. Note that this
process generates multiple report files, and it is usually a good practice
to have a separate directory for each layout design.
-
Select Cell -> Create from the menu on the right hand side of the
screen. A window titled "CREATE CELL" will appear.
Enter the following and then click OK:
- Cell Name : mux8_layout (a new cell name for the layout)
- Attach Library : $PROJ_PARTS_cs755/stdcells_lib (the standard cells library)
- Angle Mode : Ninety
- Connectivity Mode: CBC (Correct By Construction)
- Logic Source Type : Eddm (schematic in mentor database format)
- Eddm Schematic Viewpoint : icblocks_dv_mux8 (the IC Blocks viewpoint)
- Press the "Logic Loading Options" button. From the pop-up window
select Logic Loading: Flat and then press OK.
All other options should be left at default values. Press OK and
a cell window will appear having the name that you selected. If you do not
see a message such as "Logic loading successfully completed. Check the
file logic_load.rpt" at the bottom of the window, there is some problem
in the mapping of your logic design to layout.
-
Select Place & Route from the IC Palette at the right menu.
Then choose Autofp , which stands for Auto-Floorplan.
Let all options to default by
clicking OK in the Autofloorplan Options form. Use
View -> All from the top menu bar to see the automatically
generated floorplan. You
will see a series of boxes enclosed by solid bars along each edge.
The boxes indicate the rows into which cells will be organized.
The solid bars indicate edges of the cells along which physical
ports will be placed.
-
Select Autoplc->StdCel from the Place & Route palette.
Click OK in the form that will appear, once again allowing all options to default.
You will now see the standard cells placed in the floorplan boxes. Cell
locations are determined by their interconnectivity. Cells which share
connections are placed near one another.
You may wish to experiment with the results obtained thus far by selecting
different Autofloorplan and Autoplace options.
It is hard to see clearly each cell's name because they overlap. One
way to see the name for a particular cell is to select it. Since each
"bounding rectangle" overlaps possibly with more cells you have to
press F3 (cycle selection) a few times until the cell that you are interested
in is only selected.
-
Now select Autoplc->Ports from the Place & Route palette.
You can allow the options to default for now, but you may wish to
experiment with them later also. You will see lightly shaded areas
along the port bars at the edge of the layout. By clicking on these
shaded areas you get a message with the name of that particular port.
Alternatively, after you first place the ports automatically,
you can select some of them and place them individually at
the location that you prefer.
-
At this point, it is assumed that you have arrived at a satisfactory
initial placement for all the cells of the layout. Prior to autorouting
the interconnect, you may wish to observe a "rats nest" view of the
signals connecting the various cells. This is sometimes useful to the
layout technician for determining sources of routing congestion.
To observe a rats nest of signal connections, select Connectivity -> Net ->
Restructure -> All signal from the top menu bar. It may look a
little messy, but keep in mind that it doesn't change the layout whatsoever.
-
Now select Autorou->All from the Place & Route palette.
Click OK to accept the defaults. This should route all connections
in the mux design. You will see the cell rows move apart and additional
metal runs appear in the channels between rows. Note that one metal layer
(m1) is used largely for horizontal runs and the other (m2) for vertical runs.
By clicking on individual lines you get a message with the name of the net
that corresponds to each line.
-
The autorouter's objective is to complete as many connections in the design
as is possible, without regard for wasted area. For this reason,
a layout compactor is available which "squashes" things together where
there is any little bit of unused space. To take advantage of this tool,
select PR Edit->Compct from the Place & Route palette. We
want to compact in both the horizontal and vertical dimensions, so do this
twice: once down and then again in the left direction.
Do not do this more than once along a given axis. Not only
does it rarely result in improvement, it can lead to layout errors
in some versions of the compactor.
-
Save the layout by selecting
File -> Cell -> Save Cell -> Current Context.
You may save the layout and exit the IC Graph session at any time. To
re-load the layout later, choose open from the IC Station palette.
If you wish to make changes to the cell, you must also select
File -> Cell -> Reserve Cell -> Current Context.
At this point, you have completed the automatic layout of your multiplexer.
Many options for viewing the results of this process exist. Among
these:
Double click middle mouse button to pan view
"Z" stroke from top to bottom to zoom out, from bottom to top to zoom in
view -> all from the top menu bar to fill the screen with the design
You are also encouraged to create the layout of this design using
different options for the floorplanning, placement, routing, and compaction.
As you will see, the resulting layout can be quite different in terms
of area consumption. For example, the following two layouts were
produces using different IC Blocks options:
Project Layout Verification
Although the automatic tools performed the layout in the
Correct-by-Construction mode, it is always a good practice
to verify the layout for correctness in terms of both layout design
rules and connectivity,
in order to insure consistency between the various tools used.
This establishes a system of "checks and balances" that increases our overall
confidence in the design. We will first check for layout design rule errors
using IC Rules, and then verify the layout by double checking it against the
logic level representation of the mux logic diagram.
-
To return to the main IC Station palette press the right mouse button
in the right side bar and then select root.
Now click on the IC Rules tool and select
Check from the IC Rules palette. A prompt box will appear at
the lower left of the screen. Just click on OK to proceed with the check.
-
When the check is complete, design rule errors which exist
in the layout will be reported in the message bar at the bottom of the
IC Station window. You can start with the first one by clicking on
first in the palette, then scroll through the rest by
clicking on next. At this point you may find one or
more design rule errors of the type:
Overlap of N+ and P+ not allowed.
The design rule checker is complaining about p-select and n-select mask
layers being too close. This error is an artifact of how the cell
library was generated. Just ignore it for now. Also, the tool may
report that the p-substrate that we use does not have any substrate
contacts. You can ignore this too at this point.
-
Next, verify the layout for consistency with the logic-level schematic
of your design. Do this by returning to the main IC Station palette and
selecting the IC Trace(M) (mask-LVS) option. Click on LVS
in the IC Trace(M) palette and in the form which appears enter the
path of the "ictrace_dv_mux8" viewpoint in the "Source Name" field.
Then click on the Setup LVS button. In the Setup LVS form, enter:
- Ground Names : VSS GND
Press OK in both forms.
-
When the check is complete, the bottom message bar will read
Mask results database loaded and to view the results, you can
select Report -> LVS from the palette. Look for that magic
smiley face.
If you get that big nasty X instead, go back and make certain
that you have properly set up the LVS viewpoint and followed the above
procedure precisely. When doing so, look for potential sources of
discrepancies between your schematic and how the layout is generated.
A final note about LVS (which may become later a different tutorial):
The Layout-Versus-Schematic verification is not limited only to
standard cell designs. You can also apply it to full-custom designs,
as long as you have created these designs in the Connectivity
Editing mode. In that case, the LVS does not check for the
correct mapping of gates between the layout and the logic
design, but for the correct mapping of transistors
(or devices, in general) between the layout and the circuit schematic.
In order to do this type of LVS you need to have a transistor-based
schematic, created with Design Architect using the SDL library of
transistors that the MDK (MOSIS Design Kit) provides. Also, you need to
generate an SDL viewpoint for this schematic, using the
sdl_prep script (see also Tutorial-7).
This viewpoint has to be loaded in IC Station (using the Load Logic
menu), when you want to run LVS on the full-custom (or SDL) layout
that corresponds to this circuit schematic. The procedure for
running the LVS check is as above, with the important difference
that you should specify in the LVS Setup that the tool should
NOT Recognize Gates in the layout. In this way, the LVS
checks will be based on transistors, rather than gates.
Backannotation and post-layout QuickSim Simulations
You will now backannotate the QuickSim viewpoint with post-layout
capacitive parasitics. The resulting Quicksim simulations will be
more realistic, since they will model (to a first-degree) the interconnect
capacitances as well.
-
Return to the main IC Station palette and
select the IC Extract(M) (mask level LVS) option.
Click on Lumped for lumped modeling of the parasitics.
Select "Yes" to specify the schematic source. The "Source name"
should be the viewpoint that you created for IC Trace ("ictrace_dv_mux8").
Note that you have to specify the complete path of that viewpoint.
Select "Yes" in the Backannotate button and specify a name for the backannotation
file (select the binary backannotation file).
Click OK and the extraction process will be run.
The backannotation file will be saved in the same directory as
the IC Trace viewpoint.
-
Now open DVE again in order to connect the backannotation to the
QuickSim viewpoint. Open the viewpoint "qsim_dv_mux8" that you have
created for QuickSim simulations.
Push the button CONNECT BA
and specify the name of the backannotation file that you have created with
IC Extract. Now, push the Open Sheet button, in order to see the
backannotated design viewpoint. You will see a lot of red numbers that
are associated with each pin of the schematic. These numbers represent
the parasitic capacitances (in picofarads) that are associated with the
layout interconnections. You can now save and close the viewpoint and DVE.
-
At this point you can
invoke QuickSim and simulate the backannotated viewpoint as you know
from the second tutorial. Notice that these simulations
will be more realistic since they take into account both the cell and the
interconnect parasitics. For relatively small circuits, however,
the timing differences between the pre-layout and post-layout simulations
can be too small for QuickSim to produce any different results.
Before you close IC Station save your completed layout cell
by selecting File -> Cell -> Save Cell -> Current Context.