Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
11
12
12
12
13
13
1
Getting Started with the Space-based Router . . . . . . . . . . . . . . . . .
1
4
4
5
6
2
Technology Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
January 2011
13
14
14
15
17
17
20
20
21
23
24
3
Routing Your Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
Router Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Routing Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Global Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Local Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conduit Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Detailed Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Post-Route Refinement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Engineering Change Order (ECO) Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using the Automatic Routing Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying General Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Initialize Route Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Global Route Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Local Route Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Detail Route Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Refinement Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Design Rule Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Routing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tie Shielding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deleting Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Highlighting Locked Nets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
28
29
29
30
30
30
31
31
32
33
36
38
39
40
41
42
43
45
45
46
January 2011
4
Congestion Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5
Interactive Wire Editing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Introduction to Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types of Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wire Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wire Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting Up the Wire Editing Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Startup Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mouse Button Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuring Wire Editing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tapping Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adding the lxStickyNet Property to Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using Wire Editing Environment Variables and SKILL Functions . . . . . . . . . . . . . . . .
Using Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying a Valid Via List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changing Layers and Selecting Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fanning Out Wires to Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using Via Assistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating an Array of Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stacking Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Support for Voltage-Dependent Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Working with Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a Diagonal Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a Floating Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating Wires Snapped to Track Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editing Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Working with Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a Bus Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Autopicking Bus Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
January 2011
52
52
54
55
58
58
58
59
60
64
65
66
66
66
72
73
73
74
75
81
81
85
85
86
86
90
91
92
Creating a Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Restarting a Bus From Existing Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Using the Control Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Point to Point Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Setting Point to Point Wires to Match Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Guided Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Comparing Guided Routing with Point to Point Routing . . . . . . . . . . . . . . . . . . . . . . 114
Guided Single Wire Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Guided Bus Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Smart Snapping in Interactive Wire Editing and Assisted Routing Commands . . . . . . . 122
Finishing Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Finishing a Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Finishing a Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Composing and Decomposing Trunks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Displaying Wire Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Selecting Wiring Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Object Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Selecting a Single Object or Via . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Routing Granularity Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Connectivity For Top Level I/O Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Editing Routed Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Stretching Wires and Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Pushing Wires and Vias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Moving Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Copying Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Re-routing a Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Reshaping Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Removing Loops From Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Self-intersecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Merging Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Deleting Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6
Specialty Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating Constraints With the Constraint Manager
January 2011
155
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Symmetry Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types of Symmetry Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Defining a Symmetry Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatic Symmetry Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interactive Two Net Symmetry and Self Symmetry Routing . . . . . . . . . . . . . . . . . . .
Differential Pair Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Defining a Differential Pair Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changing Diff Pair Values in the Process Rules Editor . . . . . . . . . . . . . . . . . . . . . .
Interactive Differential Pair Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Shield Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Defining Shield Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Shield Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Default Shielding Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changing Custom Shielding Values in the Process Rules Editor . . . . . . . . . . . . . . .
Tying Shield Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pin escapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
155
156
158
160
161
162
162
163
166
167
167
169
170
174
178
178
7
Space-based Router Batch Checking . . . . . . . . . . . . . . . . . . . . . . . . .
179
Batch Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using the Batch Checker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Finding Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fixing Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimize Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
179
179
189
192
194
A
Forms Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
197
Automatic Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
General Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Initialize Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Global Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Local Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Detail Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Refinement Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Net Options Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
199
199
202
202
202
203
204
206
January 2011
January 2011
207
210
211
211
211
211
212
212
212
214
215
216
216
220
225
232
232
238
247
249
251
253
262
262
262
262
264
268
270
276
279
287
B
Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
291
C
Bindkey Keyboard Map
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
D
Routing Assistants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
317
Wire Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Launching the Wire Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wire Assistant User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wire Assistant Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
317
318
319
324
January 2011
January 2011
10
Preface
The Virtuoso Space-based Router enables high-speed shaped-based routing for physical
designs. With Virtuoso Space-based Router you can quickly and efficiently edit, check, and
manipulate interconnects. The hierarchical connectivity and shape model ensures edits are
design-rule and connectivity correct by default.
This user guide describes how to use Virtuoso Space-based Router. It is aimed at developers
and designers of integrated circuits and assumes that you are familiar with:
The applications used to design and develop integrated circuits in the Virtuoso design
environment, notably Virtuoso Layout Suite and Virtuoso Schematic Editor.
The design and use of Quick Cells and other types of parameterized cells.
Component description format (CDF), which lets you create and describe your own
components for use with Layout XL.
11
For information on installing Cadence products, see the Cadence Installation Guide.
For information on the Virtuoso design environment, see the Virtuoso Design
Environment User Guide.
For information on database SKILL functions, including data access functions, see the
Virtuoso Design Environment SKILL Reference.
For information on library structure, the library definitions file, and name mapping for data
shared by multiple Cadence tools, see the Cadence Application Infrastructure User
Guide.
Technology Information
For information on how to create and maintain a technology file and display resource file,
see the Virtuoso Technology Data User Guide and the Virtuoso Technology Data
ASCII Files Reference.
For information on how to access the technology file using SKILL functions, see the
Virtuoso Technology Data SKILL Reference.
Virtuoso Tools
For whats new, refer to the Virtuoso Space-based Router Whats New.
For outstanding Cadence Change Requests (CCRs), refer to the Virtuoso Spacebased Router Known Problems and Solutions.
For information about custom layout SKILL functions, see the Virtuoso Layout Suite
SKILL Reference.
For information on how to perform design tasks with the Virtuoso Layout Suite L layout
editor, see the Virtuoso Layout Suite L User Guide
For information on design rule driven editing, see the Virtuoso Design Rule Driven
Editing User Guide.
January 2011
12
For information on how to use the Virtuoso Layout Suite wire editing capability, see
Virtuoso Space-based Router User Guide.
For information on how to use the automatic custom digital placer to place your design
components, see the Virtuoso Custom Digital Placer User Guide.
For information on creating parameterized cells using the graphical user interface or lowlevel SKILL functions, see the Virtuoso Parameterized Cell Reference.
For information on Quick Cells, see the Virtuoso Quick Cells User Guide.
For information on how to stream mask data, see the Design Data Translators
Reference.
For information on custom layout SKILL functions, see the Virtuoso Layout Suite
SKILL Reference.
For information on using relative object design (ROD) functions, see the Virtuoso
Relative Object Design User Guide.
For information on connectivity and naming conventions for inherited connections, and
how to add and edit net expressions in a schematic or symbol cellview, see Virtuoso
Schematic Editor L User Guide.
z_argument
January 2011
13
{ }
Used with vertical bars, they denote a list of choices from which
you must choose one.
=>
text
January 2011
14
1
Getting Started with the Space-based
Router
The Virtuoso Space-based Router GUIs aids designers in running the autorouter. It provides
access to the options for various steps in a routing flow and also provides a template of TCL
code that will run the steps so that the user can customize it as they become more familiar
with the routing commands.
This section discusses the following.
January 2011
Automatic Routing
Straighten Wires
Optimize Route
Delete Routing
Fix Violations
Toolbar Customize
Congestion Analysis
Fix Antenna
Automatic Routing
The Automatic Routing menu option or icon displays the Automatic Routing form.
The form has sub forms allowing you to set up and route the Initialize, Global, Local,
Conduit, Detailed, and Refinement routing modes. See Using the Automatic Routing
Form for more information.
Routing Scripts
An existing routing flow may be captured in the form of TCL routing commands within a
TCL script. You can execute the TCL script to view the desired routing results. The
Routing Scripts menu option allows you to execute the TCL script.
Tie Shield
Ties shield wires to shield nets in the design and allows you to set the tie frequency. Tie
frequency is the distance between the ties.
Delete Routing
This is an interactive action where you explicitly ask for the routing to be deleted. Clicking
the Delete Routing menu option deletes all the routes that were not in the constraints or
were in FIXED constraints. However, the routes in the LOCKED constraint are not
deleted.
January 2011
Straighten Wires
Runs a critic pass that smooths wires by removing unnecessary jogs where possible
after routing for a selected area.
Runs a critic pass that smooths wires by removing unnecessary jogs where possible
after routing for entire cell view.
Runs a critic pass that smooths wires by removing unnecessary jogs where possible
after routing for the selected nets in the design.
Fix Antenna
Fix Antenna attempts to fix the error types. It takes all nets in the visible window into
account. No selections or exclusions are considered.
Fix Violation
Allows you to fix the violation operations for the entire cell view.
Optimize Route
Allows you to perform various wire optimization post processes for a selected area.
Allows you to perform various wire optimization post processes for entire cell view.
January 2011
Congestion Analysis
Allows you to do a quick global route to calculate a congestion map that allows the user
to identify areas of heavy routing congestion.See Congestion Analysis for information.
January 2011
Display - set Start and Stop Display Levels in the Display Options form.
The stopLevel setting controls the range of hierarchy levels displayed in the canvas
window. The initial display stopLevel for a given design is determined in the current
session when the design is opened and levels of nested design data are displayed.
Routing - set Start and Stop Display Levels in the Display Options form.
Hierarchy depth is the level of hierarchical design data processed by interactive and
automatic routing commands including point-to-point, finish routing, power routing, and
signal routing.
For routing, the hierarchy depth is determined by the display stopLevel at the time you
run any interactive or automatic routing command. The router sees and processes data
to the currently set display stopLevel. For example, the router sees blockages down to
that level of the design data hierarchy.
Subsequent changes to the display stopLevel add, but do not subtract, levels of
hierarchy. If the display stopLevel is reduced, for example from 32 to 1, then the levels
of nested data processed remain unchanged. If display stopLevel is subsequently
increased, then the additional levels of nested data are processed.
For example, if the display level is set to 32 and you return up the hierarchy to display
level 1, data to display level 32 is still recognized. If the display level is set to 1and you
descend to display level 32, a display level of 32 is now recognized.
Note: If you change the stopLevel while you are in a command, for example, Create
Wire, the additional levels of hierarchy will not be recognized by the command. You need
to exit the command, change the stopLevel, then execute command.
Routing hierarchy depth is re-established, and therefore can be reduced, when the
design is reopened for routing after Discard Edits. For example, set display level to 32.
January 2011
Extraction - set Extract connectivity to level in the Extraction tab of the Layout XL
Options form.
This setting controls the number of hierarchy levels to check when extracting
connectivity.
Interactive rule checking - set the Hierarchy Depth in the DRD Options form.
This settings tells the DRD rule checker the level to which to check for violations.
This controls the pin model used by the extractor. Alternatively this setting can be add to
the .cdsenv.
January 2011
2
Technology Requirements
This section discusses the following:
Constraint Groups
Layer Definitions
The layerDefinitions section of the technology file defines the layers that can be used
throughout the technology file. layerRules in the layerDefinitions section defines a
layer function and unique mask number for each layer.
Defining the layer function and the mask number in the technology file functions section,
gives explicit information about which layers are adjacent to each other. Specify layers and
mask numbers for all interconnect layers in the technology file.
The mask number is used to,
determine which layer is the next layer up and the next layer down from the current layer
when selecting Via Up or Via Down
determine the next or previous layer automatically when the Create Wire command
is initiated and a non-routing layer is the current layer.
In absence of mask numbers, the layer purpose priority is used. However, this is not as
reliable as defining the mask number since the mask number is not dependent on purposes.
January 2011
Note: The router currently understands only one poly layer, so include only one poly layer in
the technology file.
Define one and only one cut layer between each pair of metal layers.
Note: When the function table is not defined or it is defined but the mask numbers are not
defined, vias are still available through the Create Wire command. However, the following
warning message is issued.
\w *WARNING* geViaSet : Incomplete layer maskNumber, the order of the vias may
not be correct.
For more information, see Technology File Layer Definitions in the Virtuoso Technology
Data ASCII Files Reference.
"none" )
"horizontal" )
"vertical" )
For more information, see Routing Directions in the Virtuoso Technology Data ASCII
Files Reference.
January 2011
Via Definitions
At a minimum, define all standard vias for interconnect using routing layers in the viaDefs
section of the technology file. Typically, this is a set of standard vias between the poly layer
and the highest metal layer.
For example.
viaDefs(
standardViaDefs(
;(
viaDefName layer1 layer2 (cutLayer cutWidth cutHeight [resistancePerCut])
; (cutRows cutCol (cutSpace))
; (layer1Enc)
(layer2Enc)
(layer1Offset)
(layer2Offset)
(origOffset)
; [implant1
(implant1Enc) [implant2
(implant2Enc) [well/substrate]]])
;( -------------------------------------------------------------------------- )
( mpoly
Metal1 POLY
("CO"
0.09
0.09)
(1
1
(0.11 0.11))
(0.04 0.0)
(0.04 0.01)
(0.0 0.0)
(0.0 0.0)
(0.0 0.0)
)
( m1m2
Metal1 Metal2 ("VIA"
0.1
0.1)
(1
1
(0.1 0.1))
(0.04 0.0)
(0.04 0.0)
(0.0 0.0)
(0.0 0.0)
(0.0 0.0)
)
...
libName
cellName
viewName
layer1
layer2
resistancePerCut)
--------------)
(VIAm1m2_2CUT_N
tsmc65lp
VIAm1m2
via
Metal1
Metal2
0.95)
(VIAm1m2_2CUT_S
tsmc65lp
VIAm1m2
via
Metal1
Metal2
0.95)
(VIAm1m2_2CUT_E
tsmc65lp
VIAm1m2
via
Metal1
Metal2
0.95)
(VIAm1m2_2CUT_W
tsmc65lp
VIAm1m2
via
Metal1
Metal2
0.95)
...
January 2011
(POLY
(mpoly
Metal1
m1m2
Metal2 ...) )
... ) )
) ;virtuosoDefaultSetup
Note: If no validVias statement exists, a full set of standard vias is defined for the session
based on the layers in the validLayers statement.
The autorouter only uses vias having both layers defined as valid routing layers. If a via has
a metal layer that is not a valid routing layer, the router can still use it for pin access if it is in
the valid via list. In particular, vias for which the bottom layer is oxide, well or implant are not
used. Virtuoso Space-based Router issues a warning message when initializing a design if
the constraint group contains such vias.
For more information, see validLayers and validVias in the Technology File Constraint
Groups and Constraints section of the Virtuoso Technology Data ASCII Files
Reference.
January 2011
10
Note: techPurposes are system reserved purposes found in the default cdsDefTechLib
techDisplays(
(METAL1 track m1_Packet t t t t t)
...
)
techLayerPurposePriorites(
(METAL1 track)
...
)
layerRules(
functions(
(METAL1 "metal" 3)
...
)
January 2011
11
Layer1 [ Layer2 ]
PropValue )
;( --------
------ ----------
--------- )
( LEF57_AREA
Metal1 "AREA 0.07 EXCEPTEDGELENGTH 0.41 EXCEPTMINSIZE 0.41 0.14 ;"
)
( LEF57_ENCLOSUREEDGE Via2
"ENCLOSUREEDGE 0.08 WIDTH 0.26 PARALLEL 0.5 WITHIN
0.4 ;" )
( LEF57_SPACING metal1
"SPACING 0.12 ENDOFLINE 0.10 WITHIN 0.035 MINLENGTH 0.07
PARALLELEDGE 0.12 WITHIN 0.10 ENCLOSECUT BELOW 0.05 CUTSPACING 0.15 ;")
) ;techLayerProperties
Constraint Groups
Using constraint groups within Virtuoso is a very powerful and versatile way to control both
interactive and automatic routing behavior and ultimately the final design results. Constraint
group application spans a wide array of usage from dictating the technology foundry rules to
application-specific rules to user-defined constraint groups to aid layout designers in designspecific tasks.
It is important to understand that there are two distinct steps necessary to realize the
application of any constraint group within the physical layout.
1. Definition of a constraint group
2. Application of the constraint group
Constraint groups can be defined within the technology database (provided you have write
permission) or on the design (i.e. lib/cell/cellview). But until constraint groups are actually
applied to objects within your design or set as the default constraint group, they are
meaningless. The exception to this rule is the foundry constraint group which defines the
technology rules.
There are three types of constraint groups you can create.
1. Foundry constraint group
Example: foundry
2. Application-specific constraint group(s)
Examples: virtuosoDefaultExtractorSetup, virtuosoDefaultSetup,
LEFDefaultRouteSpec
3. User-defined constraint group(s)
Examples are unlimited: shieldTheseNets, wideWires
January 2011
12
Foundry
virtuosoDefaultExtractorSetup
virtuosoDefaultSetup
January 2011
13
virtuosoDefaultExtractorSetup
Creation and usage
January 2011
14
virtuosoDefaultSetup
The purpose of the virtuosoDefaultSetup constraint group is to supply a default set of
constraints for both interactive and automatic routing.
Creation and usage
January 2011
15
January 2011
16
LEFDefaultRouteSpec
The LEFDefaultRouteSpec constraint group contains rule definitions typically used in
digital standard cell applications or custom/mixed signal applications that require metal layers
only.
Creation and usage
January 2011
17
First, the router attempts to route a net using constraints from the net constraint group, design
constraint group, and application default constraint group. The precedence order is
a. net constraint group
b. application default constraint group
c. design constraint group
d. foundry constraint group
If the router cannot connect to a pin for some reason, it attempts to connect using constraints
from the input/output taper constraint group, application default taper constraint group. The
precedence order is
a. input/output taper constraint groups
b. application taper constraint group
Some possible reasons the router may not connect to a pin are
a layer conflict. For example, a poly pin but, poly is not in the validLayers constraint
of the net, design, or application default constraint group
a spacing conflict. For example, the width + spacing of the net is larger than the
distance between the target pin and a neighboring pin or blockage
The taper constraint group is only used when the router cannot connect to a target pin using
the regular net/design/default constraints. If the router is able to complete a route using the
regular net/design/default constraints, it does not use the taper constraint group.
January 2011
18
minWidth 0.14 in
wiring constraint group
January 2011
19
January 2011
20
January 2011
21
all constraints
Override
Region
Group Level
Interchild
TransReflexive
Object Level
oaPreferredRoutingDirection
minSpacing
crossTalkNeighborIndex
Reflexive
minSpacing
Shape
(blockage)
minSpacing
effectiveWidth
minSpacing
minWidth
validRoutingLayers
validRoutingVias
minNumCut
minDualExtension*
(*create_derived_vias only)
Route
Net
NetGroup
minSpacing
minWidth
validRoutingLayers
validRoutingVias
minNumCut
oaPreferredRoutingDirection
minDualExtension*
(*create_derived_vias only)
January 2011
all constraints
all constraints
22
Entities
Examples
Net
Net group
Application-specific constraint
group
virtuosoDefaultSetup constraint
group
Design
Foundry
For more information, see Getting Started with Virtuoso Unified Custom Constraints
and Technology File Constraint Groups and Constraints in the Virtuoso Technology
Data ASCII Files Reference.
Important
When routing a design, it is important to maintain the constraint group definition
used for specific nets throughout the routing process. Changing constraint groups
on a net can result in unpredictable layers and constraints being applied during
routing.
When both are present in a single constraint group, the first spacing rule found is the one
applied. The second one is ignored. This precedence holds true regardless of whether
the value is a scalar spacing rule or a table spacing rule.
When each exists alone in its own constraint group, the scalar value is used as a default
regardless of the precedence order. The table values are also used, but only for the
larger widths, not the default.
January 2011
23
Supported by
Create Wire/Bus
Supported by
Automatic Router
allowedWidthRanges
no
yes
cutClasses
no
yes
horizontalOffset
no
yes
horizontalPitch
no
yes
largeRectViaArrayAllowed
no
yes
maxDensity
no
yes
maxDiffDensity
no
yes
maxFloatingArea
no
yes
maxLength
yes
no
maxNumMinEdges
no
yes
maxWidth
yes
no
minArea
yes
yes
minAreaEdgeLength
no
yes
minCutClassSpacing(two layer)
no
yes
minDensity
no
yes
minDiagonalSpacing
yes
no
minDiagonalWidth
yes
no
minEdgeAdjacentDistance
no
yes
minEdgeAdjacentLength
no
yes
minEnclosure
yes
yes
January 2011
24
Supported by
Create Wire/Bus
Supported by
Automatic Router
minEndOfLinePerpSpacing
no
yes
minEndOfLineSpacing
no
yes
minEndOfLineExtensionSpacing
no
yes
minExtension
yes
no
minExtensionEdge
no
yes
minFillToFillSpacing
no
yes
minHoleArea
no
yes
minLargeViaArrayCutSpacing
no
yes
minLargeViaArraySpacing
no
yes
minLargeViaArrayWidth
no
yes
minLength
yes
yes
minNeighborViaSpacing
no
yes
minNumCut
no
yes
minOppExtension
yes
yes
minOppSpanSpacing
no
yes
minOutsideCornerEdgeLength
no
yes
minParallelSpanSpacing
no
yes
minParallelViaSpacing
no
yes
minParallelWithinViaSpacing
no
yes
minProtrusionNumCut
no
yes
minRectArea
no
yes
minSameMetalSharedEdgeViaSpacing
no
yes
minSameNetSpacing
yes
yes
minSpacing
yes
yes
minWidth
yes
yes
minViaExtension
no
yes
minViaSpacing
no
yes
January 2011
25
Supported by
Create Wire/Bus
Supported by
Automatic Router
minVoltageSpacing(two layer)
no
yes
redundantViaSetback
no
yes
stackable
no
yes
taperHalo
no
yes
verticalOffset
no
yes
verticalPitch
no
yes
viaSpacing
no
yes
viaStackingLimits
no
yes
Supported by
Create Wire/Bus
Supported by
Automatic Router
symmetry
yes
yes
diffPair
yes
yes
shielding
yes
yes
net priority
no
yes
yes
yes
January 2011
26
3
Routing Your Design
This chapter describes the Virtuoso Space-based Router routing flow.
The following sections are included:
Router Features
Routing Flow
Routing Scripts
Tie Shielding
Deleting Routes
January 2011
27
Router Features
Space-based Router provides many features for routing your placed design:
Gridded or Gridless
In gridless mode, the edges of all shapes must be on the manufacturing grid.
ECO Routing
You can perform a sequence of design changes, then use the router to make
connections.
You can select modified nets only for routing by the global and the detail router.
You can rerun routing after changing design rules for new technology rules.
Tapering
Space-based Router will taper when necessary to connect pins. Tapering can be
controlled independently by each constraint group.
Connecting to a wide poly pin using a narrow metal wire. The full width of the poly pin is
used to place vias to reduce the resistance of the connection.
Data Model
It is important to note that running the automatic router will change an OpenAccess Data
Model 2 or 3 (DM2 or DM3) design to Data Model 4 (DM4).
January 2011
28
Routing Flow
The Space-based Router routing flow includes the following steps:
Preparation involves setting constraints, or rules, and options for features such as
blockages, tapering, and net priorities, to customize your environment.
Global Route replaces all opens with global routes and re-routes to reduce congestion.
Local Route escapes pins in the entire top cellview or in a given region or for nets in a set.
Conduit Route lays down as many wires as possible along routing conduits.
Detailed Route completes the routing of all nets and resolves violations.
Post-Route Refinement fixes some violations, re-routes short connections, and removes
unnecessary vias.
Global Route
The Space-based Router global router replaces all opens with global routes and reduces
congestion so that the resulting interconnection closely approximates a legally routed design.
The information from the global router can be used to seed the detailed routing stages and
provide a good estimation of the detailed routes.
To localize congestion problems, the design is divided into uniform square areas, called
global routing cells, or gcells. Three types of gcells are identified:
Edge gcells represent the region between two cell gcells on the same layer
Down-via gcells represent the region between two cell gcells on different layers
A gcell is overcongested if the routing demand exceeds its available resources. The number
of overcongested gcells is crucial in determining whether the design can be routed without
design rule violations. While the goal for the global router is to have no overcongested gcells,
due to a variety of approximations and abstractions, it can be possible to route the design
when some gcells are overcongested.
The global router runs a sequence of passes, with a congestion analysis run at the start and
end of each pass. In the first pass, the congestion analysis divides the design into gcells and
analyzes the gcells to determine their blockages and capacity. Following this step, the router
updates the net connectivity of the design, creates guides where opens occur. Next, the
router replaces the guides with global routes comprised of route segments and vias. Finally,
the router will re-route global routes to reduce congestion in overcongested gcells. Detailed
January 2011
29
Local Route
In the local route step, Space-based Router escapes pins in the entire top cellview or for nets
in a set. Metal1 and poly pins are escaped to Metal2.Any disconnect between the ends of the
new connections and the existing global routes are connected with guides to keep the
connectivity legal.
Conduit Route
In the conduit route step, Space-based Router assigns tracks for the globally routed design
and, guided by the global routes, lays down as many wires as possible along routing conduits.
On completion of this step, guides indicate where connections need to be completed in the
detail route stage. Space-based Router strives to make these guides short in length and
ensure that spacing violations can be easily corrected in the final step.
Detailed Route
During detailed routing, Space-based Router runs multiple passes in cycles to complete the
routing of all nets and resolve violations. The initial passes of cycle one attempt to connect all
the unroutes and resolve certain violations (different net and same net spacing, minimum
area, grids and weak connects). Subsequent routing passes modify the routed wiring using
rip-up and retry methods that strive to continuously improve overall results. Additional cycles
deal with any remaining DRC violations including same net violations, minimum width,
minimum area and minimum enclosed area violations.
January 2011
30
Post-Route Refinement
In post-route refinement, Space-based Router checks for and attempts to fix specific types of
violations by ripping up wiring and re-routing. In addition, wiring can be improved by re-routing
short connections and removing unnecessary vias.
The initial routing is completed and minor changes have been made to a design.
Deletes all shapes, but not nets, to resolve spacing violations, leaving guides for the
opens.
January 2011
31
Choose RouteAutomatic Routing or the Automatic Routing icon from the Routing
toolbar.
The Automatic Routing form displays. The top-level form contains all the information that
a designer would require to set basic operations.
January 2011
32
Cellview
Routes the entire design.
Selected Set
Routes the nets which are selected from the Navigator or the Search Assistant of
the type selected in the Route Nets of Type option.
Note: To perform routing operations within a block, first descend into the instance then select
the nets to route. The router recognizes nets selected in the descended cellview only.
2. Choose the routing style
Device
ASIC
Chip Assembly
virtuosoDefaultExtractorSetup
LEFDefaultRouteSpec
virtuosoDefaultSetup
virtuosoDefaultTaper
VLMDefaultSetup
Choose the Top Layer for routing from the drop-down list.
Choose the Bottom Layer for routing from the drop-down list.
The selected layers need to include the layers that are used for routing. These layers are
included in the taper constraint group (VirtuosoDefaultTaper). The routing layers need to set
up a taper constraint for the router to taper and adjust the halo. This will restrict how far the
poly can reach before creating a via to metal1.
January 2011
33
Enable Treat as Minimum Width to treat these blockages as metal shapes with
minimum width.
Enable Treat as Minimum Space to enforce minimum space edge of the blockage
even if a wider metal shape is next to it.
Enable Ignore Blockage Spacing to ignore the blockage spacing properties set on
the blockage.
3. Choose the type of net you want to route. You can select Bus or Nets. The default option
is Nets.
4. Choose the nets to be locked after routing or unlock before routing and the nets to be
included/excluded. Click the Options button next to the Net Options field. To know more
about the net options, refer to the Net Options Form section Appendix A, Forms
Reference.
5. Choose Miscellaneous options.
Choose Attempt to Use Double Cut Vias option to allow pin escape and routing with
double cut vias.
Choose Taper Pin Width to automatically set the routespec of the pin so that the route
will match the width of the pin.
6. Specify the extraction options. Click the Options button next to the Extraction field. To
know more about the options in the Extraction form, refer to the AutoRouter Extraction
Options Form section in Appendix A, Forms Reference.
7. Choose the Run Mode.
Initialize Route
January 2011
34
Global Route
Replaces all opens with global routes and re-routes to reduce congestion.
Local Route
Adds pin escapes.
Conduit Route
This option is greyed out in this release. It will be made available in a future release.
Detail Route
Completes the routing of all nets and resolves violations.
Post-Route Refinement
Checks for and attempts to fix specific types of violations by ripping up wiring and
re-routing. Can also re-route short connections and remove unnecessary vias.
8. Specify options for the routing steps. You can select the Run Mode, Checkpoint, and also
save the routing step. Each of the routing step displays a dialog box when you click the
Edit button.
The Run status dot, which has no fill means that the step will not be run. To run a step
that is not selected by default, double-click on the dot to turn it ON. For example, if you
have a Device Level design that is rather large or congested, you could turn on global
route.
Selecting the Checkpoint option for a routing step synchronizes the routing data back in
the Virtuoso Layout windows (in memory).
Selecting the Save option for a routing step saves the routing data to the disk. The data
will be saved to a view with the original view name and a suffix.
Initialize Route: <original view name>_init
Global Route: <original view name>_groute
Local Route:
<original view name>_lroute
January 2011
35
2. Click the Options button next to the Layer Map field to select a layer map.
The Layer Map form displays.
January 2011
36
4. Select the layer from the Lpp field and the purpose from the Purpose field.
5. Click OK.
The inserted layer map and its purpose is displayed in the Layer Map form.
6. Select the layer and its purpose from the Layer Map form.
7. Click OK.
8. Click the Options button next to the Pre-load Environment Variables field to specify the
environment variable options.
A form is displayed allowing the user to select data initialization options. To know about
the options in the form, refer to the Pre-Load Environment Variables Form section.
9. Click OK.
10. Specify the TCL file in the Initialization Script field. This script will be sourced before
routing starts and is useful for additional setup that you need to do before routing.
January 2011
37
2. Choose the Reset Global Route option to reset the congestion map.
3. Select the density of the layers. You can specify the density for one or all the layers in the
GlobalRoute form. This is useful if the layer is too congested for routing to complete. By
default (All Layers: Default and <Routing Layer>: Use Global), the default settings in
global route will be used. The override settings can be done for all layers at once.
All Layers
poly1
metal1
January 2011
80%
Use Global
Use Global
38
Use Global
Use Global
This will set the target density to 80% for all layers. You can set a global value and
override it for each individual layer.
All Layers
poly1
metal1
metal2
metal3
80
Use Global
70%
Use Global
Use Global
This will set the target density for all layers but metal1 to 80% and metal1 will be 70%.
4. Click OK.
2. Select the Escape All Layers option to escape pins that are there on all routing layers.
3. Select the option Vias Must be Fully Enclosed in Pin Metals if you want the via metal to
be fully enclosed within the pin metal.
4. Specify the layer name if you want that only the pins on the specified layers should have
pin metal fully enclosing the via metal in the Vias Must be Enclosed on Layers field.
5. Click OK.
January 2011
39
2. The Large Space Checking option is selected by default. To select the check level,
uncheck the Large Space Checking option. The Check Level field is enabled and you can
now select the check level. By default, the highest level of checking is selected.
3. Select the Test for Convergence option to debug the script and verify if constraints are
correct.
4. Select the Use Effective Width of Overlapping Shapes option to effectively merge the
shapes.
5. Select the Critic option if you want to straighten the wires by removing unnecessary same
layer jogs in the entire top cell.
6. Select the Check Antenna option if you want to check for process antenna violations for
the entire design, a specific net, or nets in a set, an area, or a set.
7. Select the Maximize Cuts option to attempt to pack more cuts in an overlap area.
8. Select the Prefer Violations over Opens option to route guides even if it creates a
violation while routing.
9. Select the Snap to Pin Center option to connect to the center of the pin.
10. Select the pin strapping layer. By default, the metal layer is selected.
11. Click OK.
January 2011
40
January 2011
41
January 2011
42
Routing Scripts
An existing routing flow can be captured in the form of TCL routing commands within a TCL
script. You can run this TCL script to view the routing results. To execute a TCL script, perform
the following steps.
1. Choose the Route - Routing Scripts menu item. Alternatively, with the Route menu
displayed, you can press the R key on your keyboard to display the Routing Scripts
form. The Routing Script form is a routing script specification and execute form.
2. In the Routing Scripts form, specify the TCL script name that you want to execute. You
can select an existing TCL script by clicking the Browse button. The selected script will
be displayed in the Script field and in the box below the field.
The Routing Scripts form supports a search path mechanism. After entering the script
name and clicking OK or Apply, it will look for the script in the look-up hierarchy. The lookup will stop after finding the script. The look-up hierarchy is as follows:
Current Directory
Home Directory/rde
$INSTALLDIR/samples/rde
43
template.routeMatchedLength.tcl
template.makeM1BlockageOverDevice.tcl
template.routeBus.tcl
template.routeShield.tcl
template.routeDiffPair.tcl
template.routeSymmetric.tcl.
The script names will not appear in the GUI. However, if the $INSTALLDIR is defined
then by typing the script name into the Script field it will be found, executed, and the full
path and script name will appear in the box below the Script field.
3. The Operate on Current Design option is selected by default. This option runs the
(rdeOpenCurrentDesign nil) SKILL command before the script is executed. The
script will use the current open design and ignores a read_db command in the TCL
script to open a design to operate on. However, if the Operate on Current Design option
is deselected and no design is open, the read_db command will be executed in the TCL
script to open a design. After the script has finished executing, you will see an (rdeEval
checkpoint nil) near the bottom of the CIW text output window.
4. Select the Checkpoint and Return option to run the script and close the routing session.
To run the script and leave the routing session open, select the Checkpoint option. This
is useful when you have multiple scripts to run sequentially and do not want to restart the
routing session every time. When sequential scripts are run, all scripts but the last should
be run with Checkpoint selected, and the last script should be run with Checkpoint and
Return selected.
5. Click OK. The routing commands contained within the specified routing script will be
executed.
January 2011
44
Tie Shielding
Ties shield wires to shield nets in the design and allows you to set the tie frequency. Tie
frequency is the distance between the ties. To specify the tie frequency, perform the following
steps.
1. Choose the Route - Tie Shield... menu item. The Tie Shield form is displayed.
2. In the Tie Frequency group box, specify the distance between the shield ties and the
distance between the coax shield ties in the Shield and Coax fields, respectively.
Note: The number to the right of the spin boxes is the largest minSpacing value in the
design. If the color of the number is red, the current setting in the spin box is smaller than
the largest minSpacing constraint value. You are then likely to violate the minSpacing
on layers with larger minimums. Best practice is to set a value greater than or equal to
this number, in which case the number is black.
3. Click OK.
Deleting Routes
To delete the routing information and shielding wires from your design, display the Route
menu as follows.
1. Choose the Route - Delete Routing menu item or the Delete Routing icon in the
toolbar.
January 2011
45
2. The Delete Routing form allows you to keep the routed power nets by selecting the Keep
Routed Power Nets option.
Note: If you choose to delete power routes, multi-part paths (MPPs) are also deleted.
3. Click OK.
You can also access the Delete Routing command from the RMB menu in the Navigator
assistant. For more information, refer to Deleting Routing on a Net in the Virtuoso Layout
Suite XL User Guide.
January 2011
46
4
Congestion Analysis
Congestion analysis determines layer utilization after global or detailed routing. The analysis
is a ratio between the number of routed wires and the number of available tracks per grid cell
for each routing layer.
A congestion map is a two dimensional grid for each routing layer in the design. Each grid cell
is called a GCell. The gcells store the data used to compute the congestion of the design area
it covers. The following data are stored.
Blockage - the number of blockages that overlap the tracks in the gcell
The congestion value at a given location is computed by taking the maximum congestion
value on the layers. For example, if at a grid location the following congestion data exist, M1
= 80%, M2 = 90%, M3 = 85%, M4 = 95%
When computing a layer maximum congestion value, only the vertical and horizontal data of
the gcell are taken into account.
January 2011
47
January 2011
48
January 2011
49
January 2011
50
5
Interactive Wire Editing
This chapter describes how to set options for the Virtuoso wire editing capability and how to
create wire interconnect.
Introduction to Wires
Using Vias
Creating a Wire
Editing Wires
Creating a Bus
Guided Routing
January 2011
51
Finishing Connections
Finishing a Wire
Finishing a Net
Introduction to Wires
This section covers the following concepts:
Types of Wires
Wire Elements
Wire Parameters
Types of Wires
You can create a wire using Paths or Segments (pathSegs). The different types of wires you
can create include:
Geometric Wires
Symbolic Wires
For information about how to create these wires, see Creating a Wire. For information about
how to distinguish between the two types of wires, see Differentiating Between Geometric
and Symbolic Wires.
January 2011
52
January 2011
53
Wire Elements
Wire elements include paths, pathSegs, and vias. The description of each element as it is
used when creating wires is as follows:
Paths
Using paths to create wires creates geometric data. Paths support anyAngle mode.
When used to create non-orthogonal routing, paths can lead to off-grid vertices
depending on the width and angle being used. Paths are not supported by Encounter as
a route element. You must use pathSegs instead of paths when saving data to
Encounter.
PathSegs
When pathSegs are created in routes (in XL/GXL), the data is symbolic. When pathSegs
are not created in routes, the data is geometric. PathSegs can be used to create on-grid
45 degree wires. The width of a diagonal pathSeg is manipulated to force vertices of the
perimeter on grid. PathSegs cannot be used for any-angle routing and are limited to
orthogonal and diagonal routing.
Vias
Two types of vias are supported: standard vias and custom vias.
The standardViaDefs has a unique name and is associated with two layers and a list
of via parameters with default values. It is a predefined device, generated based upon
the value of its parameters. When creating wide wires, standard vias support via arrays.
Rows and columns of vias are placed based on the area of metal overlap. Standard vias
also allow you to edit the cut pattern of via arrays.
January 2011
54
Wire Parameters
Width is one of the important parameters os a wire. The default wire width is determined from
the minWidth constraint that can be set in different types of constraint groups. For
information on constraint group precedence, see Constraint Groups.
When tapping a wire, if the Tap Attributes option in the Layout Editor Options form is on,
the width of the new wire is determined from the width of the wire being tapped, provided it is
compliant with the minWidth and maxWidth constraints.
For information about wire width when starting from pins, see Setting the Wire Width to Match
Pins.
This section covers the following topics:
January 2011
55
[override] )
;( --------------- )
( "wide
"nil
spacings(
(
(
(
(
(
(
(
(
(
(
(
(
minWidth
minSpacing
minWidth
minSpacing
minWidth
minSpacing
minWidth
minSpacing
minWidth
minSpacing
minWidth
minSpacing
"Metal1"0.3 )
"Metal1"0.17 )
"Metal2"0.48 )
"Metal2"0.3 )
"Metal3"0.48 )
"Metal3"0.3 )
"Metal4"0.48 )
"Metal4"0.3 )
"Metal5"0.48 )
"Metal5"0.3 )
"Metal6"0.48 )
"Metal6"0.3 )
) ;spacings
January 2011
56
January 2011
57
Startup Warnings
Tapping Wires
Tapping Vias
Startup Warnings
Warning or error messages may be issued when invoking a command for the first time due to
the loading of data into memory. These messages will appear only once and serve to indicate
the issues that have been found with the current data, such as technology file and design
constraint discrepancies.
When the Create Wiring Wire or Create Shape Geomteric Wire command
is running, clicking the right mouse button opens the Create Single Wire ContextSensitive Menu. You can quickly select the required via, re-adjust the width for wire
creation, or fine-tune the wire options.
For information about bindkey controls that appear on the right of various commands on
the context menu, see Appendix C, Bindkey Keyboard Map in the Virtuoso Design
Environment User Guide.
January 2011
58
Pressing the arrow keys allows you to pan across the cellview in four directions.
Pressing the space bar key places a via or opens the Select Via Form. If only one
layer and one via are available for selection, a via is placed and the layer is changed
to the only available layer. If the current routing layer has more than one layers
available for selection, the Select Via form opens so you can choose a layer or via
type.
When you are creating multiple wires, clicking the right button invokes the Create Bus
Context-Sensitive Menu for bus routing-specific options.
January 2011
59
Tapping Wires
For a description of the Layout Editor Tap options, see Layout Editor Options Form.
For more information about selecting the starting and target object layers, without tapping an
object, see Smart Snapping in Interactive Wire Editing and Assisted Routing Commands.
January 2011
60
To tap an object or automatically set the layer when digitizing the first coordinate of a wire on
an existing wire or object, turn on Auto Tap Wire in the Layout Editor Options form.
The level of hierarchy that you are allowed to tap is dependent on the Display Levels set in
the Display Options form.
To tap specific layers purposes, create a prioritized list through the Tap Purpose List on the
Layout Options form, or through the environment variables, useTapPurposeList and
tapPurposeList. The default purpose is drawing, which can be overridden through Tap
Purpose List.
For example, when Tap Purpose List is:
drawing
net
When tapping an object on the LPP metal1 net, the active layer is changed to metal1
net.
January 2011
61
When tapping an object on an LPP which is not listed the Tap Purpose List, such as
metal1 pin, the active layer does not change. The last layer chosen remains the active
layer.
Once you have chosen a purpose for a layer, whether through the LSW or through tapping an
object, the purpose will be used for subsequent create commands. If the layer has not yet
been used in the current command, the current purpose will be used.
Tapping Internal Nets
When tapping on a pin that is at a lower level of the hierarchy, the connectivity must be
traceable to the top level in order for the connectivity to be applied. This corresponds to the
MUST connect relationship.
In Example 1 below, the pin gnd! at level 2 in the hierarchy is connected to net gnd!. At the
top level there is a net gnd! and a pin gnd! to which the lower level gnd! is connected. In
this case tapping on the pin at level 2 in the hierarchy will return correct net information.
January 2011
62
Net:
gnd!
Pin:
gnd!
I1
instTerm:
gnd!
Terminal:
gnd!
Pin being tapped
Example 2
I2
Pin:
gnd!
Pin:
A
I1
Net:
net5
Net:
gnd!
Terminal:
gnd!
Pin being tapped
If a net information can not be traced up to a top level net, then warning messages will be
output to the CIW. If the wire does not have a net name, the software is free to merge the wire
to another wire that does not have a net name at the top level. The result of such merge may
not be the desired results. Therefore, it is advisable to manually cancel out the command
when warning 105200 or 1050201 messages appear.
Tapping Vias
In Virtuoso L, when you click a via or a stacked via, you are prompted with the Choose object
to tap from form to choose a layer from which to extend a wire from the via.
In Virtuoso XL and GXL, when you click a via or a stacked via, if there is an existing segment
connected to one layer of the via, the resulting layer tap will be on the unoccupied layer of the
via. However, in some situations, you may want to tap on a via and create a T-junction, rather
than extend a wire from a dangling end of a wire.
January 2011
63
January 2011
64
When specifying a net name for a floating shape in Virtuoso L, the shape is given
the lxStickyNet property and the property is displayed on the property form.
When specifying a net name for a floating pathSeg created in a route in Virtuoso XL
and higher, the route is given the lxStickyNet property and the property is not
displayed on the property form.
The power router does not create pathSegs in routes, however the shapes will be
assign the lxStickyNet property. When a shape is removed from connecting
shapes the net name is retained.
Only one element needs to be marked sticky on a floating island for all the elements
to retain the assigned net.
Not assigned
to a net
S-netA
D-vdd
G-netB
January 2011
65
Using Vias
This section describes,
Stacking Vias
66
10
11
12
II) By using the Select Via command on the Create Single Wire Context-Sensitive Menu when
the Create Geometric Wire, Create Wire or Create Bus command is active:
1. Start the Create Wire or the Create Geometric Wire command.
January 2011
67
January 2011
68
5. While the Select Via form is open, you can click other target layers.
Clicking more than one target layer until a via is digitized creates a via stack. At this point,
you can do one of the following:
a. To change the vias in the via stack, click other target layers.
b. To remove the via stack, click the current layer button. All vias from the pathSeg end
being dragged are removed.
January 2011
69
70
13. In the design display area, click at a point to digitize the via location.
The Select Via form closes. Notice the via alignment stays constant with respect to the
existing pathSeg when you move the pointer to either direction of the pathSeg.
14. Digitize a few wire points.
15. Complete the command by pressing Esc.
January 2011
71
If only one layer and one via are available for selection, you can press the Spacebar key to
place the vias. The layer changes to the only available layer. If the current routing layer has
more than one layer available for selection, the Select Via Form opens where you can choose
a layer or via type.
January 2011
72
The Create Via constraint group in the Options Editor form must contain the
constraints horizontalPitch and verticalPitch. For example,
routingGrids(
( horizontalPitch
( verticalPitch
"metal1"
"metal1"
2.4 )
2.4 )
Interactive Mode must be set to Enforce in the Options DRD Edit form.
Both Place Via(s) at Last Click and Enable Via Assistance must be selected in the
Create Wire form (Create Geometric Wire form in XL/GXL).
The last digitized point of the wire being routed must be off the routing grid.
Note: Via assistance does not apply to multiple wire editing and is available only to pathSegs
in XL/GXL (Create Geometric Wire and Create Wire commands).
73
The software determines the number of cuts that are required based on the width of the wire.
The technology file standard via definition allows you to specify the default number of cuts for
a via, however, this value is overridden by the number of columns and rows needed for the
width of the wire currently being created. For example, if the default number of cuts is 2x2 but
the wire width is less than the width of a 2x2 via array, a single via cut is placed on the wire.
Stacking Vias
Note: To move individual vias in a stack you must use the Move command. The Move
command un-stacks vias.
The via stacking limit for specified layers and the minimum area allowed for stacked vias can
be defined in the technology file. For more information, see viaStackingLimits.
To stack vias, do the following:
1. Choose Create Wiring Wire.
2. From the right-click context menu, choose Select Via.
The Select Via form appears, which displays all the available vias and routing layers
that can be reached from the current routing layer.
3. Set the default via for each layer. For each layer, choose the desired via for a target layer
from the cyclic field beside each layer.
You can change any number of defaults before clicking on a layer button. You can also
raise the Select Via form, change the default vias and click OK without selecting a via.
Note: In most cases your design rules require you to place vias with extended overlaps
January 2011
74
Metal 1
January 2011
75
;User-Defined Purposes:
( lowVoltage
12
lv
( highVoltage
13
hv
) ;techPurposes
For more information about the techPurposes section of the technology file, see the
Virtuoso Technology Data ASCII Files Reference.
January 2011
76
The section below from the sample technology file sets up a voltage-related constraint group.
;( group
[override] )
;( -----
---------- )
( "LPPtestSetup"
nil
interconnect(
( validLayers ( ( Metal1 highVoltage) ( Metal2 highVoltage)
( Metal3 highVoltage) ( Metal1 lowVoltage) ( Metal2 lowVoltage)
( Metal3 lowVoltage) ( Via3 all) ( Metal4 all) ( Via4 all) ( Metal5
( Via5 all) ( Metal6 all) ) )
( validVias
(M3_M2_new
M2_M1_new
all)
M3_M2_std M2_M1_std) )
) ;interconnect
);LPPVolatgeSetup
For more information about the purpose-aware validLayers constraint of the technology
file, see the Virtuoso Technology Data ASCII Files Reference.
January 2011
77
The following sections from the sample technology file illustrate the voltage-related rule
setups.
spacings(
( minWidth
"Metal1"
( minWidth
0.3 )
( minWidth
( minWidth
"Metal2"
( minWidth
( minWidth
( minWidth
"Metal3"
( minWidth
( minWidth
0.4 )
0.5 )
);spacings
January 2011
78
spacingTables(
;( constraint
layer1
;(( index1Definitions
[layer2]
[index2Defintions]) [defaultValue] )
;( table) )
;( ---------------------------------------------------------)
( minVoltageSpacing
(( "voltage"
"Metal1"
nil
nil ))
(
0.0
0.38
1.8
0.39
3.3
0.4
)
)
( minVoltageSpacing
(( "voltage"
"Metal2"
nil
nil ))
(
0.0
0.48
1.5
0.49
3.3
0.5
)
)
( minVoltageSpacing
(( "voltage"
"Metal3"
nil
nil ))
(
0.0
0.58
1.5
0.59
3.3
0.6
)
)
);spacingTables
For more information about the minVoltageSpacing rule, see the Virtuoso Technology
Data ASCII Files Reference.
If there are voltage-dependent rules defined in the technology file, the wire editor applies
them based on the following precedence, in the order specified:
Layer rule with voltage-dependent purpose > Voltage spacing rule with spacing dependent
on the voltage values specified for one layer or two layers > Layer rule with parent purpose >
Layer rule
January 2011
79
minVoltageSpacing
In addition, the Bit Spacing value (distance between the centerlines of bus wires) specified
in the Create Bus form is 0.
In the absence of any override value, the wire editor derives the spacing between the bus
wires as per the following lookup precedence:
Consider a cdsVia device with a Contact Layer purpose, such as open, that does not have
a parent purpose defined in the technology file and the purpose is not voltage-related. If you
instantiate this cdsVia to change a wire from one layer to another, the purpose of the cdsVia
master device is retained. You can verify this by checking the Cut Purpose field in the Edit
Via Properties form for the cdsVia. For example, the following cdsVia device is installed in
the technology file:
name: M1_M2_Via1
layer1 purpose1: Metal1 drawing
cutLayer cutPurpose: Via1 open
layer2 purpose2: Metal2 drawing
Create a wire on Metal1 drawing and create the cdsVia M1_M2_Via1 to switch to Metal2
drawing. If you check the properties of the created cdsVia, you will notice the following:
Metal Purpose: drawing
Cut Purpose: open
Other Purpose: drawing
January 2011
80
The required layer and via definitions exist in the technology file. For more information,
see Technology File Requirements.
The required settings for wires are configured. For more information, see Setting Up the
Wire Editing Environment.
Creating a Wire
Editing Wires
Creating a Wire
You can create two Types of Wires: geometric and symbolic.
1. To create geometric wires in L, XL, or GXL, select Create Shape Geometric Wire.
Press F3 to open the Create Bus Form.
To create symbolic wires, supported only in XL and GXL, select Create Wiring Wire.
Press F3 to open the Create Wire Form.
You can use one of the following alternative methods to invoke the command and then
press F3 to open the respective form:
January 2011
81
Right-click at any free space in the design canvas to display the Layout context
menu and select Create Wire.
Note: The above alternative methods in XL and GXL open the Create Wire Form.
2. (Geometric only) Select Paths or Segments from the Create Geometric Wire form to
specify the type of wire element to be used for creating wires. For more information, see
Wire Elements.
(Symbolic) The Create Wire form, by default, uses pathSegs in route for creating wires.
3. (Optional) In the Net Name field, specify a net name for the wire.
The wire being created is assigned to the specified net. If the specified net does not exist
in the design, the net is created.
4. To change the width of the current wire, type the desired width in the Width field.
The default width displayed in the Width field is determined from the minWidth
constraint. For information about overriding the default value, see Overriding Default
Width Values For a Session.
If the command is active but the form is hidden, you can use Use Width option on the
Create Single Wire Context-Sensitive Menu to change the width of the wire or open the
form to specify a value. See Setting the Wire Width to Match Pins.
5. (Optional) Turn on Fixed Width to create wires across multiple layers with a value
specified in the Width field. For more information, see Setting Up Fixed Width Wires.
6. (Optional) Turn on Justification to control which direction to offset the path or pathSeg
from the digitized points of the path or pathSeg.
7. (Optional) To offset the wire from the pointer by a specified distance, type the offset
amount in the Offset field.
Note: Fields that expect a numeric value do not allow a blank entry. When an entry other
than a numeric value is given, a warning is issued and the offset is set to the previous
value.
8. Select the beginning and ending extension style.
(Geometric only) If you use paths to create a wire, choose truncate, round,
extend, or variable.
(Geometric and Symbolic) If you use pathSegs to create a wire, set the Begin Style
and End Style to one of truncate, extend, variable, or custom.
January 2011
82
The default extension is truncate for path or pathSeg endpoints, and variable for
paths or pathSegs ending on a via.
Note: The begin and end style that are finally applied to a pathSeg depend on the begin
and end extension values you specify for them. For example, if you choose custom as
the Begin Style and End Style but the extension value corresponds to that of extend,
the pathSeg created will have extend begin and end styles. You can view the begin and
end style of the pathSeg created in the Property Editor assistant.
9. (Geometric only) Specify a ROD name if you want to create the geometric wire as a ROD
object. This is applicable only for Paths.
10. Choose a value from the Snap Mode cyclic field. If set to anyAngle or diagonal, you can
choose to create acute angled-wires. PathSegs do not support anyAngle snap mode.
11. Specify the via placement location.
12. Specify if you want the wire to snap to the center of rectangular pins.
13. (Only in XL/GXL - both Geometric and Symbolic) Select Enable Via Assistance for
guidance in determining legal via locations. This option requires routing grid constraints
to be defined in the technology file.
14. (Only in XL/GXL - both Geometric and Symbolic) Select Auto Terminate while creating
a wire(s) for terminating the wire(s) with a single click.
15. (Only in XL/GXL - both Geometric and Symbolic) You can choose to Probe Nets.
16. To start creating a wire, do one of the following:
In the Net Name field, specify a net name to start creating a wire in empty space in
the design display area. See Creating a Floating Wire.
Pre-select an I/O pin before starting the Create Wire command and then digitize
subsequent points.
Area select a pin (I/O pin or Soft Block pin), via, path, or wire to tap the layer and
attributes to define the starting point of the wire. Digitize the wire. For more
information about tapping objects, see Tapping Wires.
(Only in XL/GXL) To use the smart snapping feature of wire, switch on the Smart
Snapping command on the Create Single Wire Context-Sensitive Menu.
For more information, see Smart Snapping in Interactive Wire Editing and Assisted
Routing Commands.
Note: While creating a wire from a top-level pin, the smart snapping feature ignores
the access direction of the pin. When starting a wire from an instPin, the smart
snapping feature respects the access direction of the instPin. If the access direction
January 2011
83
Starting
Pin
Target
Pin
Flightline
Wire Creation
Pointing to the in Progress
Target Pin
Flightline
Target
Pin
For floating wires, select a layer from the LSW. For more information, see Creating
a Floating Wire.
In Virtuoso Layout Suite XL and higher, when starting a path or pathSeg from an
existing path or pathSeg, the starting point is snapped to the centerline of the tapped
path or pathSeg. In Virtuoso Layout Suite L, the starting point remains as digitized.
17. For information about changing layers, see Changing Layers and Selecting Vias.
18. To remove the last segment of a wire, use Backspace.
Multiple wire editing supports Undo, Redo, and Backspace.
19. To finish the wire, see Finishing Connections.
You can use Smart Snapping on the Create Single Wire Context-Sensitive Menu to snap
the wire to the target pin. The wire snaps only to pins that are on the current layer and
January 2011
84
January 2011
85
Edit Stretch
Edit Move
For displaying and creating track patterns, see the Virtuoso Layout Suite L User Guide.
To snap wires to track patterns, do the following:
1. Choose Options Layout Editor.
2. In the Layout Editor Options form, select the Snap To Track check box.
3. Select the desired routing layer and choose Create Wiring Wire.
The pointer snaps to the closest track or track intersection. All wire elements snap to
tracks; paths, pathSegs and vias.
If existing wires are snapped to tracks, the wires can be edited and snapped to tracks using
the Move and Stretch commands.
Editing Wires
This topic covers the following sections:
January 2011
86
January 2011
87
Modifiable
Layer
Yes
bBox
No
Width
Yes
Begin Point
Yes
End Point
Yes
Begin Style
Yes
End Style
Yes
Begin Extension
Yes
End Extension
Yes
Constraint
No
Route Status
Yes
Part of a Route
No
Connectivity
Net Name
No
Net Criticality
Yes
Property
propertyName
Yes
Modifiable
Layer
Yes
bBox
No
Points
Yes
Width
Yes
Type
Yes
Route Status
Yes
January 2011
88
Attribute
Modifiable
Part of a Route
No
Connectivity
Net Name
No
Net Criticality
Yes
Property
propertyName
Yes
Click Quick Edit and select a predefined pattern from the Patterns cyclic field.
Click Wall Paper and select a predefined pattern from the Patterns cyclic field.
Further edits can be made by turning on or off the buttons of the pattern to edit the
array.
Click Manual Edit and turn on or off the buttons of the entire array pattern.
4. Click OK in the Edit Cut Patterns form to update the data of the via array.
January 2011
89
If two adjacent wires in the bus have different spacing requirements, the larger value is
used.
If there is a taper rule constraint specified on a terminal, a wider or narrower wire width
will be routed within the specified taper window.
If there is a minimum extension constraint, wire ends connecting to vias are adjusted
appropriately.
For information about finishing multiple wire connections automatically, see Finishing
Connections.
January 2011
90
Creating a Bus
Constraint Generator
January 2011
91
6. Expand the created constraint to verify the selected nets are part of the bus.
92
January 2011
93
If you area select pind, pinc, and pinb, then pind and pinb, being part of the bus
constraint, start routing in the bus mode. pinc is not picked even though it was included in
area selection because it does not belong to the bus.
Autopick does not pick instPins that belong to different instances. For example, nets A, B and
C are part of a bus constraint. Nets A and B have associated instPins on the instance I0 and
net C has the associated instPin on the instance I1. In this case, autopick on net A from
instPin on instance I0 will pick and draw wire for net B on instance I0. Autopick will not pick
instPin on net C as it belongs to a different instance I1, even though net C belongs to the
same bus constraint as nets A and B.
To remove nets from an autopicked bus while the Create Bus command is running, keep the
Ctrl key pressed and click on the required pins. To add nets to a bus while the Create Bus
command is running, keep the Shift key pressed and click on the required pins. In the above
example, to route only neta and netb, keep the Ctrl key pressed and click on pind to
remove it from the pick set.
Note: You cannot run he Finish Entire Bus command if you pick and route only a subset of
the bus nets. For information about the Finish Entire Bus command, see Finishing a Net.
January 2011
94
Autopicked instance or top-level pins have the following same parameters as the clicked
instance or top-level pin:
In a set of objects that can be autopicked, preference is given to objects in the following order:
Closest instPins
instPins with the same access direction (top, bottom, left, right)
If autopick fails to find adequate objects, you might need to complete the pick set manually.
Creating a Bus
You can start creating buses from the following starting points:
From pre-existing bus pre-routes (see Restarting a Bus From Existing Routes)
3. Press F3.
The Create Bus Form opens.
4. From the Layers assistant, select a layer on which you want to create the bus.
5. Specify the values in the Number of Bits, Bit Spacing, and Width fields.
6. To start creating a bus in the empty space in the design display area:
January 2011
95
96
January 2011
97
Bus
Cursor
11. Right-click and select Gather/Spread Bus from the Create Bus Context-Sensitive Menu
to gather or spread bus wires before the first bend of wires.
If you select Gather/Spread Bus, the bus wires are surrounded by a dotted box called
the bus cursor. Individual wires are gathered or spread inside this box, which can be
moved to any desired location. Jogs are added and the wires are gathered to the
minimum spacing rule or specified spacing value. The command on the context-sensitive
menu toggles to Ungather/Unspread Bus.
When routing a bus, each time you move the pointer, the locations of the last pathSeg
leading up the pointer are computed. If you select Ungather/Unspread Wires and the
wires are not fanned out to a via pattern, only one segment leads to the pointer for each
wire. If you select Gather/Spread Bus, jogs are added to the pathSegs to bring them
closer together if they are spaced farther than the minimum spacing.
January 2011
98
12. To change the spacing between multiple wires, press F3 to open Create Wire form. In
the Spacing field on the Bus tab, specify the new spacing value.
The spacing is updated from the last digitized point.
13. If required, change the bus wire width in the Width field in the Create Bus form or select
the appropriate option from the Use Width menu on the Create Single Wire ContextSensitive Menu.
The width is updated from the last digitized point.
14. To remove the last segment of a wire, use Backspace.
Bus editing supports Undo, Redo, and Backspace.
Note: Do not draw wires back over previously drawn wires.
15. To change layers and add vias or to fan vias out to connect to the vias, see Changing
Layers and Selecting Vias.
January 2011
99
January 2011
100
Note: Wire tie-out works only if the distance between the centers of consecutive wires
is large enough to create the required vias without creating a spacing violation.
January 2011
101
The control wire serves as a pivot point as the multiple wires are dragged into routing position.
The other wires of the selected bus set follow the control wire at appropriate spacing.
You can toggle the control wire role to one of the extreme wires of the selected bus. When
creating or editing multiple wires, you can cycle the control wire role to the Top-Middle-Bottom
January 2011
102
The wire segment assigned as the control wire continues to function as the control wire even
if you select the Backup point option from the context menu during multiple wire editing. The
control wire, however, defaults to the middle wire if you add or remove (Ctrl + click) any wire
segment to/from the bus.
For example, in the following figure, the middle wire is the control wire.
January 2011
103
Again, select the Cycle Control Wire option from the context menu or press the combination
Control + Shift + X. It probes/highlights the top wire as the control wire.
January 2011
104
For best results, move the pointer over the yellow box at the end of the control wire when
digitizing points for multiple wires. This reduces conflicts and allows better control of wire
placement.
Flightlines are drawn from the current edited or created wires to the closest targets. Flightlines
in a bus are controlled by the flightline starting from the control wire. The flightline from the
control wire always targets the closest object, called the control target. Flightlines from other
bus wires target pins that belong to the same instance and are of the same type or LPP as
the control target. If no preferred choice target can be determined based on the control target,
the closest object is chosen as the target.
In the example below, wire on netc is the control wire and its control target is an instPin of
the instance busSub. Instance pins on neta and netb of the instance busSub are not the
January 2011
105
January 2011
106
January 2011
107
108
The Net Name field in the Point to Point Form becomes uneditable.
You can edit Routing Layers. If editing the layer limit results in making the previous
point-to-point route invalid, the Point to Point command creates stacked vias
between the previous click point and the valid routing layer.
January 2011
109
You can edit the Fixed Width value. The updated value affects only the new
pathSegs created after changing the value.
11. To specify the ending location of the wire, double-click or press Enter. The ending
location can be a pin or a routing element such as a pathSeg, path, or via. Optionally, you
can click in an empty area of the design. A highlighted line is displayed to show the
connection between the first clicked point and the current pointer location.
This completes a point-to-point route. You are prompted to specify a new starting location
for the Point to Point command.
Note: Ensure that the start and end points of the route are within the P&R boundary
because routing is not allowed outside the P&R boundary.
The Point to Point command automatically stops for the route if:
While routing an incomplete net, you tap a shape (pin/route) that completes the net.
No net is being routed (starting from empty space or unassigned shapes) and you
tap a shape on a complete net.
Routing paths are found in empty areas around objects with valid spacing rules. No
pushing is performed to make room for routing.
12. To end the command, press Esc or click Cancel in the Point to Point Form.
Note: The point-to-point router does not follow minEndOfLine spacing in cases where the
wire is floating and consequently forms an incomplete connection, as the data is still in the
midst of changes.
If the point-to-point router cannot complete a route and the Interactive Edit mode is set to
Post-edit or Notify in the DRD Options form, the router forces a route creation with
violations. The router also issues a warning message to indicate that there were violations
and that you can run Verify Design to view the markers for the violations. This enables you
to analyze the problem areas where the router could not produce a clean route.
If the point-to-point router cannot complete a route and DRD Interactive Edit mode is set to
Enforce, a warning message is issued to indicate if the router is stuck at the start or end point
or pin or if there is insufficient space to complete routing.
January 2011
110
Guided Routing
The support for guided routing is available in VLS XL/GXL. You can use the Guided Routing
command to route a single wire as well as a bus. For more information, see Guided Single
Wire Routing and Guided Bus Routing.
The Guided Routing command enables you to specify the path a net should follow inside an
envelope. The routing envelope is created by a series of clicked points and the router
operates within this envelope. The routing envelope represents the available routing area for
the wire. You can control the routing envelope by using the pointer. From the first digitized pin,
this command creates a solid, orange-colored line to serve as a visual aid for defining the
envelope. After you digitize the end point, the command automatically routes the net inside
the envelope. Existing pre-routes (wire, bus, or vias) are valid start and end points for the
January 2011
111
Starting
Click Point
January 2011
Routing
Envelope
112
Flightline
P&R
Boundary
To perform guided routing for a wire or a bus, ensure that the technology file contains the
minimum information, such as complete foundry rules, and that the non-default or override
constraint groups, if any, are specified in the Wire Assistant or in the Guided Routing Form.
A wiring constraint group (virtuosoDefaultSetup or LEFDefaultRouteSpec) that
defines the valid layers and the vias allowed for routing must be present in the technology file.
If the router cannot complete the route and the Interactive Edit mode is set to Post-edit or
Notify in the DRD Options form (Options DRD Edit), the router forces the route creation
with violations. The router displays a warning message in the CIW to indicate that there were
violations and that you can run Verify Design to view the markers for the violations. This
allows you to analyze the problem areas where the router could not produce a clean route.
If the router cannot complete a route and DRD Interactive Edit mode is set to Enforce, a
warning message displays in the CIW to indicate whether the router is stuck at the start or
end point or pin or if there is insufficient space to complete the routing.
January 2011
113
on the
January 2011
114
A dynamic, dotted flightline that extends from the solid line to the closest target
You can start and end a guided route in empty space in the cellview. You can also start
or end a guided route on an existing pathSeg to create a T connection.
For more information about selecting the starting and ending targets, see Smart
Snapping in Interactive Wire Editing and Assisted Routing Commands.
7. As you move the pointer and click to define intermediate points, the routing envelope, the
solid line and the flightline update dynamically.
You can click within the envelope around the starting pin. If the routing envelope is
beyond the viewing area, a visual aid displays in the artwork as an indication of the
envelope.
8. Right-click to display the Guided Routing Context-Sensitive Menu. Using the options on
the context menu, you can invoke the Options form at any time to reconfigure width or
January 2011
115
When the pointer overlaps a target pin on the same net, the width of the last section of
the routing envelope enlarges around the pin.
9. To complete the command, double-click at the target or press Enter at the pointer
location.
The route is created within the envelope. The envelope itself is removed from the final
display.
Note: Ensure that the start and end points of the route are within the P&R boundary
because routing is not allowed outside the P&R boundary.
10. The Guided Routing command remains active after you route a net. You can select a new
starting object to generate another guided route by following the above steps. The options
specified in the Guided Routing Form remain valid for the next guided routing operation.
You can update the settings if required.
11. Press Esc or click Cancel in the Guided Routing Form to finish guided wire routing.
January 2011
116
on the
In the Net Name field in the Guided Routing form, specify the net names in bus
notation to start creating the guided bus in empty space in the design display area.
For example, if you specify bus<0:3> in the Net Name field and start bus creation
in empty space, the bus wires are created on the nets bus<0>, bus<1>, bus<2>,
bus<3>.
January 2011
117
January 2011
118
After you pick the required pins or bus wires, the following three are drawn:
Multiple solid, orange lines extending from each of the selected pin or bus wire
An envelope around the pins or bus wires enclosing the solid, orange lines
Dynamic, dotted flightlines extending from the solid, orange lines to the closest
targets
6. As you move the pointer and click to define intermediate points, the routing envelope, the
solid, orange lines and the flightlines update dynamically.
7. Right-click to display the Guided Routing Context-Sensitive Menu.
Using the options on the context menu, you can open the Guided Routing Form at any
time to reconfigure width or track settings. You can also change the orientation of the
routing envelope by using the Toggle L90 X/Y option on the context menu.
When the pointer overlaps a target pin on the same net, the width of the last section of
the routing envelope enlarges around the pin.
8. In the form, select the Gather At Bend check box.
January 2011
119
Last segment
matching the
ending pin
envelope width
Click Point
First segment
matching the
starting pin
envelope width
As shown above, the pins are covered by the envelope of the connected segment. This
enables the router to route straight out of the pin.
Note: Currently, the router can gather anywhere within the wide envelope, not
necessarily at the click point. The gather frequently happens near the pins.
January 2011
120
Ending pin
envelope
In this case, the pins are not covered by the envelope of the connected segment. This
forces the router to gather to get to a valid location within the connected segment's
envelope.
9. To complete the command, double-click or press Enter at one of the following targets:
Target pins
Pre-routed buses
The bus is created within the envelope. The envelope itself is removed from the final
display.
Note: Ensure that the start and end points of the route are within the P&R boundary
because routing is not allowed outside the P&R boundary.
10. The Guided Routing command remains active after you route a bus. You can select a
new starting object to generate another guided route by following the above steps. The
options specified in the Guided Routing Form remain valid for the next guided routing
operation. You can update the settings if required.
11. Press Esc or click Cancel in the Guided Routing Form to finish guided routing for buses.
January 2011
121
122
Finishing Connections
You can finish wires and buses manually by double-clicking or pressing Enter. The wire and
the bus finish at the pointer location. In XL and GXL, the Auto Terminate check box, if
selected in the Create Wire Form and the Create Bus Form, enables you to complete the
creation of the wire or the bus, respectively, on the same net object with a single click.
To complete creating the wire or bus automatically, use the Finish Wire or Finish Bus
commands on the Create Single Wire Context-Sensitive Menu and the Create Bus ContextSensitive Menu, respectively.
To use the commands for finishing a wire or net, ensure that the technology file contains the
minimum information, such as complete foundry rules, and that the non-default or override
constraint groups, if any, are specified in the Wire Assistant. A wiring constraint group
(virtuosoDefaultSetup or LEFDefaultRouteSpec) that defines the valid layers and
the vias allowed for routing must be present in the technology file.
Finishing a Wire
The Finish Wire command is available in XL and GXL on the Create Single Wire ContextSensitive Menu if you are creating a wire by using the Create Wire. The Finish Bus
command is available in XL and GXL on the Create Bus Context-Sensitive Menu if you are
creating a bus by using the Create Bus command. The command is available on the contextsensitive menu only after you digitize at least one point of the wire or the bus or after you
select the pins for the wire or bus creation.
By using the Create Wire or Create Bus command, you can digitize critical parts of a wire
or a bus manually and then run the Finish Wire or Finish Bus command to finish the rest of
the wire or bus automatically.
Note: The Display Levels settings on the Display Options form, Start and Stop, control
the hierarchy depth for the Finish Wire command.
The Finish Wire command requires a net otherwise the corresponding commands are
greyed out. The Finish Wire command attempts to complete the connection of the current
wire or bus while the Create Wire or the Create Bus command is running. The Finish Wire
command accelerates interactive wire editing while completing short-distance wires from
target pins or terminals, and at the same time, maintains control over routing by following the
January 2011
123
January 2011
124
Finishing a Net
The Finish Entire Net command is available in Virtuoso Layout Suite XL and GXL when you
are creating a wire or a bus by using the Create Wire or Create Bus command and when
one or more edited nets are incomplete.
If you are creating a single wire, the Finish Entire Net command is available on the Create
Single Wire Context-Sensitive Menu; if you are creating a bus, the Finish Entire Bus
command is available on the Create Bus Context-Sensitive Menu. The commands are
available on the context-sensitive menus only after you digitize at least one point of the wire
or bus or after you select the pins for the wire or bus creation.
The Finish Entire Net command calls the automatic router to finish all the connections of
the currently edited net. You can run the Finish Entire Bus command on a set of nets while
performing interactive bus editing to route them as a bus even if they do not belong to a bus
constraint. The Finish Entire Net command can modify any nearby net artwork that is not
locked down. When rerouting this neighboring artwork, it uses the looked-up constraint
values. Any prior override values are lost.
Note: You cannot run the Finish Entire Bus command if you pick and route only a subset
of the bus nets.
For information about finishing one connection of a single wire automatically instead of all
connections on a net, see Finishing a Wire.
To complete an edited net connection automatically:
1. Choose Create Wiring Wire.
2. Start the wire creation from level 0 pin shapes or visible level 1 instPins (Instance Pins
should be selected on the Display Options form) or from pre-existing wires.
3. Digitize some points of the wire.
4. Right-click to display the Create Single Wire Context-Sensitive Menu.
5. Select Finish Entire Net.
January 2011
125
January 2011
126
Use the Compose Trunks command to convert the selected set of shapes into a trunk
object. A message in the CIW summarizes the objects that are converted to form a trunk. This
trunk object can then be used to perform pin to trunk routing. The pin to trunk router is started
by default when you run the route command from the Net context-sensitive menu after
selecting the trunk net in the Navigator assistant.
Use the Decompose Trunks command to convert the selected set of shapes that comprise
the trunk to the original shapes from which the trunk was formed. A message in the CIW
summarizes the objects that are converted to original shapes. If the selected shapes are not
part of a trunk and you run the Decompose Trunks command, the number of converted
objects reported in the CIW is 0.
January 2011
127
Object Definitions
January 2011
128
Object Definitions
Segment
(pathSeg)
Ending point
Contiguous
pathSegs
Two pathSegs are contiguous when they are on the same layer and when
they have an overlapping point (start or end).
Contiguous pathSegs
Non-continuous pathSegs
January 2011
129
T-junction
A T-junction is a point where there are more than two contiguous pathSegs.
T-junction
Not a T-junction
January 2011
130
Shapes or Vias
Entire Wire
Connected Shapes
Net
January 2011
131
Entire Wire
In Entire Wire mode, when a shape or a via is selected, the selection is extended to select
all the objects forming the wire.
Contiguous pathSeg
T-junction
January 2011
132
January 2011
133
Net
In Net mode, the net object is selected. If a shape has no assigned net, the shape will not be
highlighted.
The net is selected in the Navigator assistant and is probed in the layout window. The method
in which the net is displayed (probed) in the layout window is determined by the Highlight
Options form. Shapes assigned to the net can be highlighted or flightlines can be displayed.
There is no limit on the number of shapes that can be highlighted.
January 2011
134
I2
Pin A
Pin B
I1
Net B
Net X
instTerm A
Terminal B
Net A
Terminal A
Example 2
I2
Pin B
Pin A
I1
Net B
Net X
Net C
instTerm A
Terminal B
January 2011
Net A
Terminal A
135
Net X
A
C
Net Y
Net Z
Moving Wires
Copying Wires
Re-routing a Wire
Reshaping Wires
Self-intersecting Objects
January 2011
136
Merging Wires
Deleting Wires
Angles of segments
Often determines when an extra segment is needed. See Controlling the Angle of Wires.
Selection of objects
Selecting one vertex in a segment leaves the other vertex alone. Selecting both vertices
in a segment causes the segment to move.
The length of attached segments may change to keep segments connected or segments
may be added to keep segments connected.
Selecting a via may cause the addition of a segment.
See Selecting Wiring Objects for more information.
January 2011
137
138
January 2011
139
path 1
path 2
path 3
When path 2 is stretched to the right, the top path (path 1) is split
into three separate paths.
path 1
path 3
January 2011
path 2
140
path 1
u-shape
path 2
When path 2 is stretched outside of the u-shape, path 1 is split into separate paths.
path 1
u-shape
path 2
141
Wires that are created with paths, pathSegs in routes or pathSegs not in routes, can all
push neighboring wires. However, only pathSegs and vias in routes can be pushed.
The commands Create Wire, Reshape, and Stretch will push aside existing regular
wires (pathSegs in routes) and vias.
Stretching object types such as paths, rectangles, polygons, MPPs, pcells, and so on
cannot push aside paths or wires.
If there is no P&R boundary, objects are pushed outside of the bounding box.
January 2011
142
Moving Wires
Fully selected wires or wire elements can be moved by the Move command. Wires can also
be rotated, reflected, or changed to a different layer by using Move form.
Copying Wires
Fully selected wires or wire elements can be copied by the Copy command. Wires can also
be rotated, reflected, or changed to a different layer by using Copy form.
Currently the net information is discarded when copying wires.
January 2011
143
Re-routing a Wire
A re-route is a type of wire editing where a new wire is started from a point along an existing
wire, and eventually reconnects to another portion of the existing wire. The portion of the
original wire made redundant by the new wire is removed.
Reshaping Wires
To reshape a wire, follow these steps:
1. Choose the type of Routing Object Granularity from the Options Selection form.
2. Select the wire to be reshaped.
3. Select Edit Advanced Reshape.
January 2011
144
5. Digitize points where you want to create a wire and double click.
This will highlight the option of the new wiring.
January 2011
145
7. Press Return or double click to finish the desired reshape of the wire.
Edit Stretch
January 2011
146
With Allow Loops on, loops are allowed in the following circumstances.
Behavior
Interconnecting wires:
Creating a wire on interconnecting layers
Branching wires:
Reshaping an existing wire that contains a
branch.
In the case of a branching wire or wires, the loop is
not removed because it can not be determined
which side of the loop to remove, or removing the
loop can disconnect the wire from an intended
connection to pins or same net wires.
January 2011
147
Self-intersecting Objects
A single database object is not allowed to intersect itself. Paths are shaped based objects
represented by a point array and are not allowed to become self-intersecting during creation
or editing.
When an object is self-intersecting, an error message dialog box appears and the object is
not allowed to be drawn.
A single pathSeg consist of a two-point segment and cannot be drawn in a manner that would
allow self-intersection.
When creating or editing wires using paths, the edges of a path can be coincident, but not
overlap. When creating or editing wires using pathSegs, a series of pathSegs can be
stretched to cross over other pathSegs or overlap.
By default, in the cases where the pathSegs would create a loop, the loops are removed. See
Removing Loops From Wires for more information.
January 2011
148
When the same u-shape wiring is created with multiple pathSegs, the segments of the
pathSegs are allowed to be stretched to cross over each other or overlap.
Merging Wires
The following types of conditions are supported by the Merge command. Only wires on the
same layer can be merged. Merging at segment ends which have a via is not allowed.
January 2011
149
January 2011
Truncate
Variable
Extend
Custom
Truncate
Truncate
Variable
Variable
Polygon
Variable
Variable
Variable
Variable
Polygon
Extend
Variable
Variable
Extend
Polygon
Custom
Polygon
Polygon
Polygon
Polygon
150
pathSegA
Begin style: extend
End style: truncate
pathSegB
Begin style: truncate
End style: extend
pathC
style: extend
Resultant Polygon
pathSegA
Begin style: extend
End style: extend
pathSegB
Begin style: extend
End style: extend
January 2011
151
End Stye
of the
Pathseg
Truncate
Variable
Extend
Round
Truncate
Truncate
Variable
Variable
Polygon
Variable
Variable
Variable
Variable
Polygon
Extend
Variable
Variable
Extend
Polygon
Custom
Polygon
Polygon
Polygon
Polygon
Resultant Path
pathSeg
Begin style: truncate
End style: extend
path
style: extend
path
style: extend
Deleting Wires
The Delete command can be used to delete an entire wire when the wire is fully selected.
Wires that are created on the same layer using path elements are created as a continuous
path, without intersecting vertices at corners. When deleting wires created with path
January 2011
152
January 2011
153
January 2011
154
6
Specialty Routing
This chapter describes,
Symmetry Routing
Shield Routing
Symmetry Routing
January 2011
155
Mirrored Symmetry
Mirrored symmetry involves two nets mirrored over an axis.
Self Symmetry
Self Symmetry involves a single net that is mirrored over an axis. The entire geometry
can reside on the symmetry line, in which case there are no symmetric objects.
Cross Symmetry
Cross symmetry involves two nets that are allowed to cross the symmetry line using one
or more instances of crossover cells. This type of symmetry is comparable to two
separate cases of mirror symmetry involving two pairs of nets which are part of the
original nets.
January 2011
156
Partial Symmetry
Partial symmetry can apply to nets that are mirrored symmetric, self symmetric, or cross
symmetric. Two nets that do not have the same number of terminals are considered
partially symmetric. Partial symmetry also applies when a portion of the wires are unique
on either side of the axis.
Checks are not implemented to determine if every geometry in a symmetric net has a
symmetric counterpart. Also, checks are not implemented as to whether corresponding
pieces of geometry are symmetric.
An asymmetric geometry in a symmetric net may cross the symmetry line or reside on
the opposite side of the line because there are no symmetric counterparts to cause
conflict.
The parts of a net that have symmetric counterparts can be connected with symmetric
wiring. The parts that are unique to one side of the symmetry line must be connected
January 2011
157
January 2011
158
January 2011
159
7. Click on the + sign next to Axis to update the default constraint values.
a. Specify the axis direction for the constraint; horizontal or vertical.
b. Set the axisLocation to fixed.
c. Specify the axis coordinate parameters for the constraint.
Note: The steps 7(b) and 7(c) are required only if user wants to specify an axis that
is not the default, which runs through the centerline of the prBoundary.
For a mirrored symmetric constraint, the axis coordinate value must be determined
by calculating the center coordinate between the two symmetric pins.
For a self symmetry constraint, the axis coordinate value is the center of the self
symmetry pin.
8. In order to route wires that are partially symmetric, specify the specialty routing
constraints in the Constraint Aware Editing mode.
160
For self symmetry, a single wire is digitized over the axis. As the wire is digitized on
either side of the axis, another wire is created that is associated with the same net.
Both wires are simultaneously generated over the axis.
Note: When routing a self symmetric wire, enable Snap to Pin Center in the
Create Wire form. Otherwise, two wires instead of one can be generated from the
pin.
For mirrored symmetry, selecting one of the pins automatically selects the
associated pin of the symmetry constraint. As you digitized one wire, the associated
wire is digitized; simultaneously generating wires on either side of a mirror axis.
7. To finish routing the wires, you can manually digitize the wires to the destination pin, or
click right and select Finish Wire.
January 2011
161
January 2011
162
January 2011
163
2. In the Create Process Rule field, select the type of rules and attributes you want to
override or set. For example,
a. To change the gapSpace for a diff pair,
b. Select Within Group:: Constraint: Constr_Name
c. Select gapSpace from the Create Process Rule cycle field.
d. From the Layer field, select the layer of the pair.
e. From the minSpacing field, select the gap spacing for the pair.
January 2011
164
3. When you are done setting attributes, click the Close (X) button.
January 2011
165
January 2011
166
Shield Routing
Shield Styles
Pin escapes
January 2011
167
January 2011
168
6. For information about the attributes used to create different types of shield constraints,
see Shield Styles.
7. For information about how to generate default shielding constraints, see Default
Shielding Types.
8. For information about how to change values in the Process Rules Editor, see Changing
Custom Shielding Values in the Process Rules Editor. You can even change values using
the Constraint Manager.
Note: When pushing wires where there are shielded wires, it is possible that the shielded
unit will be broken apart by the push operation. To avoid pushing apart shielded units,
lock the shielded unit (both shielded and shielding wires) using the Lock Navigator Nets
command.
Shield Styles
There are three types of shielding styles available depending on which attributes you choose
to set in the Process Rule Editor.
Parallel
Without adding any additional attributes in the Process Rule Editor, the default shield
type is a basic parallel shield with a shieldGap equal to the applicable layers
minSpacing and parallel shieldWidth equal to the applicable layers minWidth.
January 2011
169
Tandem
A tandem shield (metal above and/or below shield net) can be created by setting the
tandemLayerAbove and/or tandemLayerBelow attributes along with the
tandemWidth attribute in the Process Rule Editor.
Note: If shieldGap and/or shieldWidth are also set, the result will be a coaxial not a
tandem shield.
Coaxial
A coaxial shield is the combination of a parallel and tandem shield (metal above and/or
below the shield net along with same layer shielding along side the shielded net).
Note: In order to achieve coaxial shielding it is necessary to define the shieldGap and
shieldWidth even if the values are equal to the default minSpacing and minWidth
values.
Important
In all cases, do not define shield values below a layers minWidth value. If you do
so, the shield may not appear and no warning message is given.
January 2011
170
3. Open the Process Rules Editor to view or change the default values.
January 2011
171
January 2011
172
6. You can edit the constraint group values directly or use the copy and paste functions to
make the predefined constraint group more specific for your design.
Once a shielding type has been selected and applied, you can change the constraint type
by clicking on the constraint in the Constraint Manager constraint browser tree under
January 2011
173
January 2011
174
January 2011
175
3. When you are done setting attributes, click the Close (X) button.
For information about what values to set to create different types of shielding constraints,
see Shield Styles.
If you have many nets in your design that require shielding, you can optionally create a
shielding constraint group in the technology file and apply the shielding constraint group,
using the process rules editor, to the nets requiring the same set of constraints. See Applying
a Constraint Group for more information.
January 2011
176
For more information about how to copy constraints, see Copying an Existing Process
Rule.
January 2011
177
Pin escapes
The router models a net with shielding as having a wide spacing requirement, as it takes the
widths of the shields into account. When the router tries to escape from a pin, wide spacing
is required if you do not specify a taper constraint group. If the neighboring pins have tighter
spacing than is required by the shielded net, minimum spacing for example, the router has
trouble escaping from the pin based on the default behavior of needing the wider spacing
clearance.
To work around this default behavior, define a taper constraint group with a different name
than the default constraint group used by the wire. The router will then use the spacing
specified in the taper constraint group for pin escape rather than the wide spacing of the
shielded net.
The following is an example of a taper constraint group.
constraintGroups(
;( group [override] )
;( ----- ---------- )
( "virtuosoDefaultTaper" nil "taper"
interconnect(
( validLayers (Poly Metal1 ) )
( validVias (M1_PO ) )
) ;interconnect
spacings(
( taperHalo 1.4 )
) ;spacings
) ;virtuosoDefaultTaper
;constraintGroups
January 2011
178
7
Space-based Router Batch Checking
This chapter describes the batch checking capabilities that are available in Virtuoso XL and
GXL.
Batch Checking
Finding Violations
Fixing Violations
Optimize Routing
Batch Checking
The batch checker offers different types of checking.
A shape-based checker that verifies the shapes against process rules specified in the
technology file, design, and object level. For more information, refer to Virtuoso Spacebased Router Supported Constraints.
A connectivity checker that verifies the design for shorts, loops and dangles.
A constraints checker that verifies the specialty routing constraints such as Diff Pair and
Symmetry.
179
Routability Checking
Routability checking is performed before routing. This verification is done to check the design
for the issues that can cause potential routing problems. Design rule checks applied to pins
and some routability checks are performed to determine the accessibility of pins.
January 2011
180
2. In the Check group box, select the check boxes for the checks you want to do.
Blockage
Checks for pins blocked by top-level blockage or blockage of another instance.
Minimum Space
Checks for pin to pin spacing less than minimum pin spacing.
Minimum Width
Checks for pin dimension(s) less than minimum pin width.
Via
Checks for pins that cannot be escaped using available vias. For more information,
refer to Check Routability commands.
3. Optionally, you can limit the number of markers for each violation type by specifying the
limit in the Markers Limit Per Type field. Alternatively, you can set the
checkRoutabilityMarkersLimit environment variable.
January 2011
181
Use the Annotation Browser to view the violations. Issues such as DRC violations should be
dealt with before attempting to route the design.
Process Rule Checking
Process rule checking offers a set of options that allow you to specify which portions of the
design to verify, or to specify the types of rules you want to verify. Process rule checking can
be set to check the following:
January 2011
182
2. From the Scope group box, choose whether to check the entire cellview or limit the
checking to a specific area.
3. In the Filter Options group box, set the Hierarchy Depth to the Top Level or Current
& Below.
4. In the Check For group box, select the check boxes for the process rules that you want
to check. You can limit the process rules checker to check a subset of process rules.
January 2011
183
Info
Balloon
displaying
the
All
Checks for all the constraints mentioned in the process rule categories in the Check
For group box.
Spacing
Checks for the spacing constraints, such as minVoltageSpacing,
minCutClassSpacing, and so on.
Via
Checks for via constraints, such as viaSpacing, minViaSpacing, viaStackingLimits,
and so on.
January 2011
184
Width
Checks for width constraints, such as minWidth, maxWidth, and so on.
Area
Checks for area constraints, such as minArea, minRectArea, and so on.
Complex Spacing
Checks for complex spacing constraints, such as minEndOfLineSpacing,
minOppSpanSpacing, and so on.
Edge Length
Checks for edge length constraints such as, minLength, maxLength, and so on.
Extension
Checks for extension constraints, such as minViaExtension, minExtensionDistance,
and so on.
Num cut
Checks for num cut violations, such as minNumCut and minProtrusionNumCut.
Misc
Checks for miscellaneous constraints, such as errorLayer.
Density
Checks for density constraints, such as minDensity. maxDensity, and
maxDiffDensity.
For more information about each of the process rule category, refer to the Virtuoso
Routing IDE Command Reference.
Connectivity Checking
The connectivity verification can be limited to specific set of violation checking. You can check
for the following:
Current cellview
January 2011
185
Selected Net
Checks only the nets that you currently have selected.
3. The Check For group box checks for the dangling wires and wires with loops.
4. The Filter Options group box allows you to choose whether or not to check cellview for
shorts and opens that involve power and ground nets.
January 2011
186
2. In the Specialty Routing group box, select the type of constraint checking to be
performed.
Symmetry checks whether a symmetry axis is defined and whether the position of
the axis is correctly defined. If the axis is not considered well defined, a marker will
be generated at the location of the axis. Only routed portions of the symmetric nets
are checked and only shapes on metal and poly layers are checked.
Diff Pair checks the percentage of unpaired lengths for each net in of a diff pair.
January 2011
187
2. Check all the placement constraints that are defined for the design, which is being
verified.
Fabrication Checking
This check verifies the process antenna violations for the entire design, selected nets, or
except selected nets.
January 2011
188
Selected Net
Checks only the nets that you currently have selected.
3. From the Antenna Oxide Models group box, select which oxide model(s) to use: First,
Second, Third, Fourth. By default, the First oxide model is selected.
Finding Violations
The Annotation Browser assistant is used for viewing and managing violation markers in your
design.
January 2011
189
January 2011
190
January 2011
191
Fixing Violations
Using the Fixing Violations option, you can perform all spacing related checks including
merged shapes and fix the violation operations for a selected area or the entire cell view.
To fix the routing violation operations,
1. Choose Route Fix Violations Options or Options Layout GXL. The Layout
GXL Options form is displayed. By default, the Fix Routing Violations tabbed page is
displayed as shown in the figure below.
Minimum Area - the minimum area allowed for a shape on a specific layer. It uses
the setting of the fixErrorsErrorTypesMinArea environment variable.
January 2011
192
Minimum Enclosed Area - The minimum area allowed for a hole in the specified
layer. It uses the setting of the fixErrorsErrorTypesMinEnclArea environment
variable.
Minimum Spacing
Repair Opens - attempts to fix the opens that were caused by spacing
violations.
Minimum Width - the minimum width for any shape on the layer. It uses the setting
of the fixErrorsErrorTypesMinWidth environment variable.
The environment variable settings determine the violation types fixed. These violation
types are the same as in the Refinement tab in the Automatic Routing form. However,
settings in the Automatic Routing form have no affect on this standalone implementation
of Fix Violations.
Note: Running the Automatic Routing Refinement step sets the fixErrorsErrorTypes
environment variables according to the settings in the Refinement form. However, setting
or deselecting error types in the Refinement form without running the Refinement step
has no effect on the environment variables. For more information on environment
variables, refer to Appendix B, Environment Variables.
January 2011
193
Optimize Routing
Using the Optimizing Routing option, you can optimize routing in the design.
1. Choose Route Optimize Route Options. The Optimize Routing tabbed page is
displayed as shown in the figure below.
You can also open the form by choosing or Options Layout GXL. The Layout GXL Options
form is displayed. Click the Optimize Routing tab.
To optimize routing, you can select any of the following options.
Align Via to Wire Edge - moves vias such that the edge of the metal layers in the
vias overlap/align with the edges of the wires. This can reduce the number of small
notches around vias. This functionality is applicable only to vias that exist over route
segments.
Note: The stacked vias can become unstacked after via alignment.
Reduce Jogs - attempts to change nearby routing to reduce the total number of jogs.
Reduce Vias - attempts to change nearby routing to reduce the total number of vias.
Reduce Wire Notches at Pins - removes any small metal notches located near pins
by shifting the wires slightly.
January 2011
194
Use Double Cut Vias - tries to opportunistically replace single cut vias with double
cut vias wherever it can without creating a violation.
January 2011
195
January 2011
196
A
Forms Reference
This chapter describes the forms in the Virtuoso Space-based Router.
Automatic Routing
General Options
Initialize Route
Global Route
Local Route
Detail Route
Refinement Route
Routability Tab
Connectivity Tab
Placement Tab
Fabrication Tab
Congestion Analysis
January 2011
197
Stretch Form
January 2011
198
Automatic Routing
General Options
Operate On
You can select the area that you want to operate on.
Selected Set - routes the nets which are selected from the Navigator or Search
assistants.
Cellview - routes the entire design. This option is selected by default.
Style
The three routing styles that are available: Device Level, ASIC, and Chip Assembly.
Specifying the routing style will determine which steps in the sequencer will run and also set
one of the Initialize step Pre-load environment variables. Specifying the design type affects
the heuristics of global route and detail route. Therefore the value of design type needs to
reflect the type of design you are routing.
Default Constraint Group
Defines the default constraint group for the router for nets with no constraint group assigned.
The selected constraint group will be used in automatic routing.
Routing Layers
The top and bottom layers are used to set a limitRoutingLayer constraint. The intersection of
the limitRoutingLayers and validRoutingLayers constraint determine which layers will be used
for routing. The resultant routing layers will be an and of the layers in the net constraint
groups. An example for this would be if your net group constraint had M2-M4 as valid routing
layers and in the routing GUI, you specified M1-M3, the effective valid layers would be M2 and
M3. M1 is not included because it is not a part of the net group constraint. If that same net
group had a taper constraint that had a valid routing layer of M1, then for tapering you would
only have M1 as the valid routing layer, not M2 or M3.
Top Layer - the top routing layer.
Bottom Layer - the bottom routing layer.
Use Grid
Allows the router to select Manufacturing for gridless routing (independent of routing grid)
or Routing for gridded routing. The routing data will still be created on the manufacturing grid.
January 2011
199
200
Initialize Route - allows the user to map layer purpose pairs into a router understood
layer-purpose pairs. Also, it allows you to set the environment variables before the
routers are run or run an arbitrary TCL script before the routers are run. Any RIDE
environment variables are also allowed to be set at this step.
Global Route - replaces all opens with global routes and re-routes to reduce congestion.
Conduit Route - this option is greyed out in this release. It will be made available in a
future release.
Detail Route - completes the routing of all nets and resolves violations.
Refinement Route - checks for and attempts to fix specific types of violations by ripping
up wiring and re-routing. Can also re-route short connections and remove unnecessary
vias.
Related topics
Specifying General Options
January 2011
201
Initialize Route
Layer Map - sets up the layer mapping options. The Options button next to the Layer Map
field invokes the GUI to set the layer purpose map. This is only necessary if there are
false shorts through the diffusion layer.
Pre-load Environment Variables - sets up the environment variable options before the
design is loaded into the Virtuoso Routing IDE virtual memory. For more information on
environment options, refer to the Pre-Load Environment Variables Form section.
Initialization Script - sources a TCL file shown in the text field before routing and allows
you to setup and run user functions. You can even specify the TCL file by clicking the
Browse button.
Related topics
Specifying Initialize Route Options
Global Route
Reset Global Route- purges an existing global route results and starts afresh.
Normally it will incrementally improve on existing global routes.
Routing Layer - mentions the name of the routing layer.
Density - defines the density of the routing layer.
Related topics
Specifying Global Route Options
Local Route
Escape All Layers - escapes pins that are there on all routing layers. By
default, only the bottom layer is escaped.
Vias Must be Fully Enclosed in Pin Metals - escapes the pin only if via metal
is fully enclosed within the pin metal.
Vias Must be Enclosed on Layers - if this field is blank, all pin layers must be
fully enclosed. However, if the metal layers are specified, only pins on those
layers will be required to have pin metal fully enclosing the via metal.
January 2011
202
Detail Route
Large Space Checking - sets some large non-symmetric spacing rules.
Check Level - sets the check level for detail routing. This means how detailed a check
should be performed when routing. By default, this option is set to 3. This means that a
detailed check will be performed while routing.
Test for Convergence - used to debug constraints. It allows for a quicker run time by not
hitting the most optimal routing result. This option is useful if you have lot of violations
that cannot be fixed.
Use Effective Width of Overlapping Shapes - merges the shapes effectively to see
what width the combined shapes have as compared to evaluating each shape
individually.
Critic - smoothens the wires by removing unnecessary jogs in the entire top cellview.
Check Antenna - checks for process antenna violations for the entire design, a specific
net, or nets in a set, an area, or a set.
Maximize Cuts - enables a post processing step to attempt to pack more cuts in an
overlap area than the minimum normally selected. This is done only if it does not add
additional metal to the overlap area.
Prefer Violations over Opens - route guides even if there is a violation present.
Snap to Pin Center - snap wires to the center of rectangular pins or pins that are
created as a polygon and have a rectangular shape. When selected, Snap to Pin Center
snaps wires to the starting and ending pins.
Pin Strapping Layer - adds a strapping between gates of a multi-fingered device in
metal (dropping a contact as close as possible to the gate and connecting metal between
the fingers from that point) or poly (connecting all gates to poly with one contact up to the
metal layer). You can choose the strapping layer from Poly and Metal. This option helps
to minimize the use of Poly while performing device-level routing of multi-finger devices
that have Poly layer pins.
January 2011
203
Refinement Route
Align Vias to Edges of Wires - allows to move vias such that the edge of the metal
layers in the vias overlap/align with the edges of the wires. This can reduce the number
of small notches around vias.
Crossing - eliminates routes on the same net from crossing over each other.
Minimum Area - fixes minArea rule violations.
Minimum Edge Length - fixes minEdgeLength rule violations.
Minimum Enclosed Area - fixes minEnclosedArea rule violations.
Minimum Width - fixes minWidth rule violations.
Minimum Number of Cuts - fixes minNumCut violations.
Port Shorts - fixes multiple connections to multiple ports on a cell.
Reduce Vias - attempts to reduce the number of vias by increasing the number
of small same layer jogs. This option is deselected by default.
Reduce Wire Notches at Pins - attempts to remove any small metal notches located
near pins by shifting the wires slightly.
Routing Grid - fixes routing grid violations.
Fix Extensions - fixes all extension violations based on the extension constraints
defined in the design. For example, minDualExtension constraints, and
minExtensionEdge constraints.
Minimum Spacing - fixes minimum spacing violations.
Repair Opens - allows you to do localized changes to fix the opens that were caused by
spacing violations.
Minimize Unprotected Vias - Minimizes minimum enclosure single cut vias and
remasters to double-cut via and larger enclosure single cut vias.
No Push - allows you to remove (unlocked/not fixed) vias by localized re-routing and
improves manufacturability. It does not allow pushing during the fixing step.
January 2011
204
January 2011
205
Lock Existing Routing - locks all pre-existing routing information before attempting to
route any opens. It will not reroute preroutes with violations.
Unlock Before Routing - unlocks the nets in the selected set or all nets in the cellview
before routing.
Lock After Routed - locks the nets in the selected set or all nets in the cellview after
routing.
Lock Types - lock the nets with signal type power or ground and or clock before routing.
You can either select Power and Ground nets or Clock nets.
Net Lock File - imports a file for net locking. The net lock file contains only a list of net
names, where one net name is displayed per line.
Exclude Types - specify the names of the nets that you want to exclude from routing. It
prevents power and ground nets or clock nets from being processed.
Net Exclude File - specify the name of a file that contains names of nets in the design
to exclude. The net exclude file contains only a list of net names, where one net name is
displayed per line. You can use the Browse button to locate the filename in your
hierarchy.
January 2011
206
January 2011
207
208
January 2011
209
January 2011
210
Connectivity Tab
Scope
Current Editable Cellview - checks shapes in the entire design for shorts and opens.
Selected Nets - checks only the currently selected nets for shorts and opens.
January 2011
211
Placement Tab
Placement
Check all the placement constraints - checks for all the placement constraints in
the design.
Fabrication Tab
Scope
Current Editable Cellview - checks shapes in the entire design for process rule
violations.
Selected Nets - checks only the currently selected nets for shorts and opens.
January 2011
212
January 2011
213
Congestion Analysis
Number of tracks/GCell - determines the size of the GCell. Track pitch is defined by width
+ spacing in the foundry rules. Changing the number of tracks makes the GCell larger or
smaller.
Automatic - allows the router to determine the optimal size of the GCell.
User Defined - allows you to enter the number of tracks to define the size of the GCell.
Re-Compute - re-compute with the new value if you change the number of tracks.
View congestion in design - displays the congestion map in the design window. After you
click Apply to calculate congestion, this field turns the congestion map on or off.
Display Color - the color and pattern associated with each percentage. You can enter a
different percentage to associate with any of the color/patterns.
Slider bar - redefine where the 100% congestion falls in the scale.
Horizontal - limit congestion data considered when performing analysis to data in the
Horizontal direction.
Vertical - limit congestion data considered when performing analysis to data in the Vertical
direction.
Layer Selection - limit congestion analysis to any of the layers by selecting/unselecting the
check boxes.
Related topics
Congestion Analysis Specification
January 2011
214
January 2011
215
Connectivity
Net Name enables you to specify the net names for creating a bus. You can specify the
net names in one of the following ways:
By specifying a bundle name, such as netA, netB, netC<1>, netD, where the
net names are separated by commas.
January 2011
216
By using the bus notation, such as net<0:3>. If you specify the net names in bus
notation, the notation expands to display individual net names, such as net<0>,
net<1>, net<2>, net<3>, in the Net Name field when you move the cursor to
another field in the form. The number in the Number of Bits cyclic field updates
based on the number of nets specified in the Net Name field. For example, the
Number of Bits cyclic field updates to 4 for the bus notation net<0:3>.
By specifying a bus base name, such as netA or myBus, and additionally setting up
the bus cardinality in the Number of Bits cyclic field. The bus base name expands
to display individual net names in the Net Name field only after you start creating
the bus. For example, if you start creating a bus by specifying the bus base name as
netA and setting the Number of Bits cyclic field to 10, the bus creation begins with
10 wires that are assigned to the netA<0>, netA<1>, netA<2>, ... ,
netA<10> nets.
New nets are created if the ones specified do not already exist. If you start creating a bus
from existing pins, the net names are automatically picked from the net of the pins. If you
create the bus in free space without specifying any net names, the bus created is not
assigned to any net and therefore, does not have any connectivity.
Environment variable: netName
Width enables you to specify the width of each wire in the bus. You can increase or decrease
the wire width by pressing Ctrl + Shift keys and scrolling the mouse wheel up or down,
respectively.
Environment variable: wireWidth
Fixed Width specifies to use the same bus wire width on all layers. The value specified in
the Width field is used for the bus wires on all layers.
Environment variable: fixedWidthPaths
Bit Spacing specifies the distance between the centerlines of the bus wires. If no value is
specified in this field, the minSpacing value is considered.
Keep Bit Spacing maintains the same bit spacing on all the layers. The value specified in
the Bit Spacing field is used for spacing the bus wires. If this check box is selected, the
spacing between the wire centerlines is maintained after you add a via or bend the wires. If
this check box is not selected and you add a via or bend the wires, the spacing between the
wire centerlines changes to the minSpacing of the layer or the specified bit spacing,
whichever is greater.
Environment variable: weKeepBusWireSpacing
January 2011
217
In the Net Name field, if you specify net names as a bundle name or by using the bus
notation, the value in the Number of Bits cyclic field automatically updates to match the
number of nets specified. If net names are specified in the Net Name field and you
manually update the value in the Number of Bits cyclic field, the net names specified in
the Net Name field are removed.
In the Net Name field, if you specify the net names by using the bus base name, you
can set up the cardinality of the bus by using the Number of Bits cyclic field. The bus
base name expands to display individual net names in the Net Name field only after you
start creating the bus.
Note: If you update the Number of Bits cyclic field after starting bus creation, the net
names are removed from the Net Name field.
218
January 2011
219
January 2011
220
January 2011
221
222
January 2011
223
January 2011
224
Options
Select Via
Via Up
Via Down
Via Alignment
Via Pattern
Finish Bus
January 2011
225
Gather/Spread Bus
Use Width
Use Spacing
Backup Point
Options
Opens the Create Bus Form. You can also use press F3 at any time to open this form.
Select Via
Opens the Select Via Form to change the bus layer. You can rotate the via by using the Select
Via form or by using the Rotate Via(s) Cut Pattern command on this context-sensitive menu.
Via Up
Changes the layer to the next layer up and places the corresponding default via.
Via Down
Changes the layer to the next layer down and places the corresponding default via.
Rotate Via(s) Cut Pattern
Rotates the via cuts and swaps the rows and columns, if any, while rotating the via shape by
90 degree as you place or drag the via. You can also rotate pending vias by clicking the middle
mouse button. This command is available only while you are adding a via. You can also rotate
a via by using the Rotate Via(s) Cut Pattern button on the Select Via Form.
January 2011
226
Provides options to align vias while adding them to the layout. You can choose to align a via
automatically or by selecting a custom alignment option. You can also align a via by using the
Via Alignment options on the Select Via Form. For more information about the Automatic
and Override alignment options, see the Select Via Form.
Note: The Override options on the Via Alignment sub-menu, as shown in the figure above,
are available while you are adding a via.
January 2011
227
Provides predefined via patterns to choose from to add multiple vias simultaneously while you
are routing multiple wires. For more information about the available patterns, see the Select
Via Form.
Cycle Control Wire
Cycles the control wire function among the extreme and middle wires of a bus. For more
information, see Using the Control Wire.
Finish Bus
Automatically routes the active flightline following the layer, via and width specifications
defined in the application default constraint group or any overrides defined in the Create Bus
Form or in the Wire Assistant. The command is available only XL tier onwards. The command
routes only the active flightline even if the current net contains more than one open flightline.
This command is available only when the Create Bus command is running and there is an
active flightline (dynamic flightline from the current cursor position to the closest target). By
default, the Finish Bus command leaves opens if it cannot create the routes without creating
violation. For more information, see Finishing Connections.
January 2011
228
Fixed Width: Sets the same bus wire width to be used on all the layers. The width value
is derived either from the Width field in the Create Bus form, in which case all the bus
wires have the same width, or from the widths of pins from which the bus wires start, in
which case the bus wires have different widths.
January 2011
229
Start Pin Nearest Edge: Sets the bus wire width the same as the length of the starting
pin edge nearest to the pointer. The nearest pin is determined by the distance between
the pointer and the center of a pin edge. This is the default Use Width setting. The entire
pin edge highlights within the Aperture distance from the pointer.
If you select Start Pin Nearest Edge as the width option and also select the Fixed
check box on the Use Width sub-menu, the initial bus wire width is maintained on all the
layers the wire is changed to. After you complete creating the bus and start creating a
new one, the Use Width mode is still set to Start Pin Nearest Edge. You can tap
another pin to reset bus wire width to the width of the new pin.
Derived from Constraints: Sets the bus wire width the same as the minWidth value in
the technology file or in any applicable constraint group defined at the design or object
level. Within Aperture distance from the pointer, the length of the highlight matches the
minWidth value.
Last Specified: Sets the bus wire width the same as the value specified in the Width field
in the Create Bus form or as the Width value in the Override Constraints table in the
Wire Assistant for the applicable layer. Within Aperture distance from the pointer, the
length of the highlight matches the respective width value.
Target Pins: Sets each bus wire to match the width of the same edge of each respective
target pin. If the pins are vertically aligned to bus wires, the bus wire widths match the
width of the vertical edges of the respective target pins. Similarly, if the pins are
horizontally aligned to bus wires, the bus wire widths match the width of the horizontal
edges of the respective target pins. The horizontal and vertical edges might correspond
to narrow edges for some target pins and wide edges for other target pins.
January 2011
230
Keep Bit Spacing: Maintains the same bit spacing on all the layers.
Target Pins: Sets the same spacing between the centerlines of bus wires as the spacing
between the centers of the target pins. This option is available only in XL and GXL.
January 2011
231
Wire Tab
Wire Tab
January 2011
232
January 2011
233
Connectivity
Net Name lets you enter a net name for the current wire. The created wire is added to
the specified net. A new net is created if the one specified does not already exist. To
specify net names for creating a bus, enter a list of net names separated by commas or
spaces. You can also specify net names in bus notation, such as net<0:3>.
Environment variable: netName
Snap Mode controls how the cursor snaps when you create the wire. When Segments
(pathSegs) are used to create wires, anyAngle is not an option. PathSegs are limited to
orthogonal and diagonal routing.
Environment variable: snapMode
January 2011
234
January 2011
235
Using Paths
Width displays the width of the current wire. You can also enter a value for the width of
the current wire. You can increase or decrease the wire width interactively by pressing
Ctrl + Shift keys and scrolling the mouse wheel up or down, respectively.
Environment variable: wireWidth
Fixed Width specifies that wires on all layers are to be created using the value specified
in the Width field.
Environment variable: fixedWidthPaths
Justification controls the direction in which to offset the path from the digitized points
of the path.
Environment variable: pathJustify
Offset creates a wire at a specified distance from the digitized points with respect to the
centerline of the path, in the direction specified by Justification. The default is 0.
Environment variable: wireOffset
Path Style controls how the path ends are created.
Environment variable: pathStyle
truncate creates a wire with no ending extension.
extend creates a wire with the default ending extension value.
round creates a wire with path ends extending from the path points by one half the
path width, creating an octagonal shape.
January 2011
236
Using Segments
Width displays the width of the current wire. You can also enter a value for the width of
the current wire.
Environment variable: wireWidth
Fixed Width specifies that wires on all layers are to be created using the value specified
in the Width field.
Environment variable: fixedWidthPaths
Justification controls the direction in which to offset the pathSeg from the digitized
points of the pathSeg.
Environment variable: pathJustify
Offset creates a wire at a specified distance from the digitized points with respect to the
centerline of the pathSeg, in the direction specified by Justification. The default is 0.
January 2011
237
January 2011
238
January 2011
239
Connectivity
Net Name lets you enter a net name for the current wire. The created wire is added to
the specified net. A new net is created if the one specified does not already exist. To
specify net names for creating a bus, enter a list of net names separated by commas or
spaces. You can also specify net names in bus notation, such as net<0:3>.
Environment variable: netName
Probe Nets creates probes for the selected or specified net.
Snap Mode controls how the cursor snaps when you create the wire. When Segments
(pathSegs) are used to create wires, anyAngle is not an option. PathSegs are limited to
orthogonal and diagonal routing.
January 2011
240
January 2011
241
Using Paths
Width displays the width of the current wire. You can also enter a value for the width of
the current wire. You can increase or decrease the wire width interactively by pressing
Ctrl + Shift keys and scrolling the mouse wheel up or down, respectively.
Environment variable: wireWidth
Fixed Width specifies that wires on all layers are to be created using the value specified
in the Width field.
Environment variable: fixedWidthPaths
Justification controls the direction in which to offset the path from the digitized points
of the path or pathSeg.
Environment variable: pathJustify
Offset creates a wire at a specified distance from the digitized points with respect to the
centerline of the path, in the direction specified by Justification. The default is 0.
Environment variable: wireOffset
Path Style controls how the path ends are created.
January 2011
242
Using Segments
Width displays the width of the current wire. You can also enter a value for the width of
the current wire. You can increase or decrease the wire width interactively by pressing
Ctrl + Shift keys and scrolling the mouse wheel up or down, respectively.
Environment variable: wireWidth
Fixed Width specifies that wires on all layers are to be created using the value specified
in the Width field.
January 2011
243
January 2011
244
Width overrides the default width value of wires. You can increase or decrease the wire width
interactively by pressing Ctrl + Shift keys and scrolling the mouse wheel up or down,
respectively.
Fixed Width, if selected, specifies that wires on all the layers must be created using the
value specified in the Width field. If this check box is selected before the Create Wire
command is run and the value specified in the Width field does not violate the minWidth
value of the layer being edited, the Width value is saved for subsequent Create Wire
command runs. However, if the check box is not selected or the specified width value violates
the minWidth value of the layer being edited, the Width value is not saved.
If you change the value in the Width field or select the Fixed Width check box, the Use
Width option in the Create Bus Context-Sensitive Menu section automatically sets to Last
Specified. Conversely, if the Fixed Width check box is selected and you update the Use
Width option to a value other than Last Specified, the Fixed Width check box automatically
clears.
Bit Spacing specifies the distance between the centerlines of the bus wires. If no value is
specified in this field, the minSpacing value is considered.
Keep Bit Spacing maintains the same bit spacing on all the layers. The value specified in
the Bit Spacing field is used for spacing the bus wires. If this check box is selected, the
spacing between the wire centerlines is maintained after you add a via or bend the wires. If
this check box is not selected and you add a via or bend the wires, the spacing between the
wire centerlines changes to the minSpacing of the layer or the specified bit spacing,
whichever is greater.
Environment variable: weKeepBusWireSpacing
January 2011
245
January 2011
246
247
January 2011
248
Wire Tab
Width displays the width of the current wire. You can override this value. You can increase or
decrease the wire width interactively by pressing Ctrl + Shift keys and scrolling the mouse
wheel up or down, respectively.
Environment variable: wireWidth
Fixed Width specifies that wires on all layers are to be created using the value specified in
the Width field. If this check box is selected before starting the Create Wire command, and
the value specified in the Width field does not violate the minWidth value of the current
editing layer, the Fixed Width value is saved for subsequent Create Wire commands.
However, if either the check box is not selected or the specified value violates the minWidth
value of the current editing layer, the Fixed Width value is not saved.
If you change the value in the Width field, then the Use Width option in the Create Single
Wire Context-Sensitive Menu section automatically sets to Last Specified, if not already.
Similarly, if you select the Fixed Width check box, the Use Width option changes to Last
January 2011
249
January 2011
250
Bus Tab
Width overrides the default width value of wires. You can increase or decrease the wire width
interactively by pressing Ctrl + Shift keys and scrolling the mouse wheel up or down,
respectively.
Fixed Width specifies that wires on all layers are to be created using the value specified in
the Width field. If this check box is selected before starting the Create Wire command, and
the value specified in the Width field does not violate the minWidth value of the current
editing layer, the Fixed Width value is saved for subsequent Create Wire commands.
However, if either the check box is not selected or the specified value violates the minWidth
value of the current editing layer, the Fixed Width value is not saved.
January 2011
251
January 2011
252
Options
Select Via
Via Up
Via Down
Via Alignment
Finish Wire
Use Width
Backup Point
Smart Snapping
January 2011
253
Constraint-Aware Editing
Options
Opens the Create Bus Form (L, XL, GXL) or the Create Wire Form (XL, GXL) depending on
the command that is active. You can also press F3 to open the options form.
Select Via
Opens the Select Via Form to change to other layers. Using this form, you can also rotate the
via and also control via alignment.
Via Up
Changes the layer to the next layer up and places the corresponding default via.
Via Down
Changes the layer to the next layer down and places the corresponding default via.
Rotate Via(s) Cut Pattern
Rotates the via cuts and swaps the rows and columns, if any, while rotating the via shape by
90 degree as you place or drag the via. You can also rotate pending vias by clicking the middle
mouse button. This menu command is available while you are adding a via. You can also
rotate a via by using the Rotate Via(s) Cut Pattern button on the Select Via Form.
January 2011
254
Provides options to align vias while adding them to the layout. You can choose to align a via
either automatically or by selecting a custom alignment option. You can also align a via by
using the Via Alignment options on the Select Via Form. For more information about the
Automatic and Override alignment options, see the Select Via Form. The Override options
on the Via Alignment sub-menu are available while you are adding a via.
Finish Wire
Automatically routes the active flightline following the layer, via and width specifications
defined in the application default constraint group or any overrides defined in either the F3
Options form or the Wire Assistant. The command routes only the active flightline even if the
current net contains more than one open flightline. This command is available only when the
Create Wire command is active and there is an active flightline (dynamic flightline from the
current cursor position to the closest target). To use the command, select Finish Wire from
the context-sensitive menu. By default, it leaves opens if it cannot connect without creating
violation. For more information, see Finishing Connections.
January 2011
255
In VLS L, only Fixed Width, Derived from Constraints, and Last Specified options are
available.
In XL and GXL, for all the Use Width options, except for Target Pin Narrow Edge and
Target Pin Wide Edge, a pin edge highlights when it is within a specific distance from the
pointer. If you click, the wire snaps to the highlighted pin edge. This is the smart snapping
feature of wire. You can configure the snap distance (Aperture) in the Layout Editor
Options form. The highlight represents the starting point of wire creation and the length of
the highlight determines wire width. The center of the highlight is represented by a yellow box.
You can cycle the highlight through the available edges within the Aperture distance by using
the Cycle Edge command on the Smart Snapping sub-menu.
January 2011
256
Narrow Edge
Wide Edge
Fixed
Last Specified
January 2011
257
If you select Start Pin Nearest Edge as the width option and also select the Fixed check
box on the Use Width sub-menu, the initial wire width is maintained on all the layers the wire
is changed to. After you complete creating the wire and start creating a new one, the Use
Width mode is still set to Start Pin Nearest Edge. You can tap another pin to reset wire
width to the width of the new pin.
January 2011
258
January 2011
259
This command is available on the Create Single Wire context-sensitive menu in XL and
GXL. You can toggle between Cycle Edge and Use Current Position modes by using the
corresponding bindkeys, Ctrl + Spacebar and Ctrl + Shift + Spacebar, respectively.
Enabled
If selected, it enables the smart snapping mode. If off, the Cycle Edge and Use Current
Position options are not available. If smart snapping is off, you can start creating the wire by
clicking anywhere on a pin; the wire starts from the clicked position.
Environment Variable: weNoSmartSnap
January 2011
260
Wire creation begins from the edge that is highlighted at the time of click.
Wire creation completes on the edge to which the wire is snapped at the time of
click.
The length of the highlight on the starting pin edge depends on the Use Width option
selection, which also determines the wire width. You can cycle the highlight through the
prospective starting and ending pin edges in the Cycle Edge mode by pressing Ctrl +
Spacebar keys. You can switch to Use Current Position mode by using either the contextsensitive menu or by pressing the Ctrl + Shift + Spacebar bindkeys.
Use Current Position
This command resets the point of starting wire creation and completing wire creation to the
cursors current location. In this mode, you can start or end a wire in empty space as well as
from or at a pin. Therefore, select this command when you do not want to start or end a wire
by snapping to a pin edge. This is the default smart snapping mode when Smart Snapping
is Enabled.
Auto Tap Wire
This option is on by default. See the Auto Tap option in the Layout Editor Options form in
the Virtuoso Layout Suite L User Guide.
Constraint-Aware Editing
Enforces constraints for nets grouped in a bus constraint, differential pairs, shielding wires,
and for setting symmetry. This option is on by default and is available only in XL and GXL.
January 2011
261
Snapping
Tap
Wire Editing
Snapping
Snap To Track
For more information about this option, see the Virtuoso Layout Suite L User Guide.
For information about snapping wires to tracks, see Creating Wires Snapped to Track
Patterns.
Tap
See the description of all the options in this section in the Virtuoso Layout Suite L User
Guide.
For controlling filtering out of tapped objects, see tapPreference.
Wire Editing
For information on the Wire and Allow Loops options, see the Virtuoso Layout Suite L
User Guide.
The following options are available in the Wire Editing section only in VLS XL and GXL:
Show Alignment Markers dynamically displays an alignment arrow and an alignment
marker. The arrow points to the closest object on the active flightline. The marker snaps the
cursor to the target object edges and center as you move the cursor.
January 2011
262
Alignment Marker
(Flightline)
Alignment Arrow
Blockage: Use Minimum Width allows blockages to be treated as metal shapes with
minimum width when width-based spacing tables are defined in the application default
constraint group. When off, unassigned blockages are treated as metal shapes and their
actual width is used to calculate spacing requirements. The option is off by default.
Environment variable: blockageUseMinWidth
For Create Via options, see the Virtuoso Layout Suite L User Guide.
January 2011
263
Connectivity
Net Name enables you to enter a net name for the wire being created.
Probe Nets creates probes for the selected or specified net.
Width enables you to specify the width of the wire to be created using point-to-point routing.
Environment variable: enableWidthOverride
Fixed Width, if selected, causes the wire width specified in the Width field to be used to
generate wire segments for all layers. If the specified width is less than the minWidth value,
the width that you specify is ignored and the default minWidth value for each layer is used
instead. If the specified width is greater than the minimum maxWidth value, the value that
you specify is ignored and the default minWidth value for each layer is used instead.
Whenever a value specified by you is overridden, a warning message is generated. The
Fixed Width value applies to all the routing layers.
January 2011
264
Pin Escape column specifies the Top and Bottom layers to define the layer range. You
can use this field to override the validLayers setting in the virtuosoDefaultTaper
constraint group. If a virtuosoDefaultTaper constraint group does not already exist,
it is created based on the specified Layers, Vias, and Halo values. If you override the
valid top or bottom layers, a color bar appears next to the layer cyclic field. Placing the
cursor over the color bar displays the specified pin escape layer limit and the override
information.
January 2011
265
The forms display the valid standard and custom vias from the application default
constraint group and show the looked up valid vias to use as "checked". You can override
January 2011
266
January 2011
267
Options
Use Width
Backup Point
Constraint-aware Editing
Options
Opens the Point to Point Form (XL, GXL). You can also use the F3 bind key to open the
options form.
Use Width
This command provides options for setting the wire width based on pin sizes.
January 2011
268
Match Pin Narrow Edge: Matches the wire width to the shortest edge of the pin
Match Pin Wide Edge: Matches the wire width to the longest edge of the pin
Last Specified: Picks the value specified in the Width field in the Point to Point Form
or in the spacing table in the Wire Assistant for the applicable layer
Backup Point
Removes the last digitized point. If a via had been added to the last digitized point, the via is
also removed.
Auto Tap Wire
This option is on by default. See the Auto Tap option in the Layout Editor Options form in
the Virtuoso Layout Suite L User Guide.
Constraint-aware Editing
Enforces constraints for differential pairs, for shielding wires, and for setting symmetry. This
option is on by default and is available only in XL and GXL.
January 2011
269
Connectivity
Net Name enables you to specify a net names for the wire or bus being created. If the
nets you specify do not exist in the design, those nets are created.
Probe Nets, if selected, highlights the net as you create the wire or bus.
Wiring
Width enables you to specify the width of the wire to be created using guided routing.
The router uses the specified value if the value is greater than the minWidth value and
less than the maxWidth value of the routing layer on which wire is being created. If the
specified value is less than the minWidth value of the routing layer, the router uses the
minWidth value to create the wire. If the specified value is greater than the maxWidth
value of the routing layer, the router uses the maxWidth value to create the wire.
January 2011
270
Pin Escape column specifies the Top and Bottom layers to define the layer range. You
can use this field to override the validLayers setting in the virtuosoDefaultTaper
constraint group. If a virtuosoDefaultTaper constraint group does not already exist,
it is created based on the specified Layers, Vias, and Halo values. If you override the
valid top or bottom layers, a color bar appears next to the layer cyclic field. Placing the
cursor over the color bar displays the specified pin escape layer limit and the override
information.
January 2011
271
The forms display the valid standard and custom vias from the application default
constraint group and show the looked up valid vias to use as "checked". You can override
January 2011
272
where,
Note: The minimal routing envelope width is only an estimate. The router derives
the minimal width by using the width and spacing of all the layers, including the
layers that may not be used in the final routing.
where,
trackSpacing = (spacing) of the net used for trackWidth
January 2011
273
trackWidth is the potential track width of the representative net (one with the
smallest potential track width).
potentialTrackWidth = Second smallest (width + spacing) value of all
the legal routing layers for a given net
where,
width = Max ((bus width value, if specified | override cache
value, if present | 0), minWidth constraint through lookup) for
a given layer
Therefore,
potentialTrackWidth of netA = 0.15+0.15 = 0.3
Therefore,
January 2011
274
And,
minimumEnvelopeWidth = [(0.1+0.1) + (0.2+0.2) + (0.3+0.3) + 0.1] = 1.3
envelopeWidth = [1.3 + (7*0.2)] = 2.7
You can modify the additional tracks value in the F3 form anytime while creating the wire.
You can also modify the tracks value in the Guided Routing Envelope section in the Wire
Assistant. The setting applies to the entire envelope, except to the starting and ending
portions (around the starting and ending pins/instPins), where the envelope needs to be
sufficiently wide to allow the connection between the wire and the starting or ending pins/
instPins.
Environment variable: envelopeNumTracks
Gather At Bend, if selected, enables the width of the first and last segments of the
routing envelope to match the width of the pin envelopes they connect to. If this check
box is off, the width of the first and last segments is calculated as the usual routing
envelope width, based on the specified Number of Additional Tracks.
Environment variable: weGuidedRouteGatherAtBend
Related topics
Guided Routing
Guided Single Wire Routing
Guided Bus Routing
Guided Routing Context-Sensitive Menu
January 2011
275
Options
Use Width
Backup Point
Constraint-aware Editing
Options
Opens the Guided Routing Form (XL, GXL). You can also use the F3 bind key to open the
options form.
January 2011
276
This command provides options for setting the wire width based on pin sizes.
Match Pin Narrow Edge: Matches the wire width to the shortest edge of the pin
Match Pin Wide Edge: Matches the wire width to the longest edge of the pin
Last Specified: Picks the value specified in the Width field in the Guided Routing Form
or in the spacing table in the Wire Assistant for the applicable layer
Backup Point
Removes the last digitized point. If there is at least a point in the envelope, the last point and
associated data are removed from the envelope. If there is no more point as a result of the
last removed point, the current command is done. Next click starts a new envelope.
Otherwise, next click continues in the current envelope.
Toggle L90 X/Y
Toggles the snap mode of the routing envelope between L90 X First and L90 Y First. The
orientation of the first segment defines whether the snap mode is X or Y First.
Auto Tap Wire
This option is on by default. See the Auto Tap option in the Layout Editor Options form in the
Virtuoso Layout Suite L User Guide.
Constraint-aware Editing
This option is not supported by the Guided Routing command in IC 6.1.4 release.
January 2011
277
January 2011
278
January 2011
Via Type
Column
279
The Select Via form consists of a matrix of layer, via, and cut class lists in three columns.
Each row in the matrix represents a routing layer and contains a button for the layer, a droplist for the vias that can reach that layer from the current layer, and the cut classes, if any are
defined for the cut layer. The first column contains the buttons for the layers. The second
column provides a list of the available via types for the given layer. The third column provides
a list of the cut class choices if a cutClasses constraint is defined for the cut layer of the
selected viaDef in the layerRules section of the technology file. The buttons in the first
January 2011
280
January 2011
281
Direction 1
Direction 2
January 2011
282
Direction 3
Override enables you to specify a custom via alignment option that overrides the
automatic alignment. The Override buttons are available only if you click a target layer
button.
Each Override button carries the image of two pathSegsblue and redand a
rectangular via. The two pathSeg colors indicate two layers. You move the wire you are
creating from one layer to the other after digitizing a via. The image on the button
represents the alignment of the via with respect to the two layers. Clicking a button
displays a check mark on the button; the check mark is cleared when you digitize a via
with the selected alignment setting. The Center Center button is available only if the
Automatic check box is selected.
Environment variable: viaAlignment
Top Right
Center Center
Bottom Right
Top Left
Bottom Left
Clear removes the check mark displayed on the selected Override button.
January 2011
283
Auto No Crossing is the default via pattern. You can either set one of the two automatic via
pattern modes or temporarily override the automatic pattern by setting the pattern to one of
Perpendicular, Diagonal Down, Diagonal Up, Stagger, In Taper, or Out Taper. If a
selected pattern, such as Perpendicular with orthogonal bus wires, creates shorts, then the
dragging of the wires is prevented.
Environment variable: viaPattern
Auto No Crossing: Automatically places the vias in a diagonal pattern in such a way that
bus wires do not cross when making orthogonal transitions. This pattern retains the bus
bit order and might prevent the wire editor from creating jogs if Via Alignment is on.
Auto Crossing: Automatically places the vias in a diagonal pattern in such a way that bus
wires do cross when making orthogonal transitions. This pattern reverses the bus bit,
which might be useful if the starting and targets pins are reversed.
January 2011
284
Perpendicular: Vias are created along a line perpendicular to the incoming direction of
the wires.
Diagonal Down: The right-most or top bus is the longest segment to drop via. This
pattern is most appropriate for right-hand turns.
Diagonal Up: The left-most and bottom bus is the longest segment to drop via. This
pattern is most appropriate for left-hand turns.
January 2011
285
Stagger
In Taper
Out Taper
Via patterns and Fan Out to Vias support both orthogonal and diagonal wire directions.
Related topics
Using Vias
January 2011
286
Stretch Form
The options listed in this section are specifically associated with creating or editing wires. For
remaining options of this form, see the Virtuoso Layout Suite XL User Guide.
Keep Connected allows overlapping wires on the same net to remain connected during
the stretch command. To control the amount of data the wire editor considers when using
Keep Connected, use the environment variable maxNumConnWireElements. If the
limit defined by this environment variable is reached, a message box with a warning
along the following lines will appear:
The number of objects in selection set plus connected objects exceeds the limit
currently set to value through layout environment variable
maxNumConnWireElements. Continuing stretch operation without complete
selection may produce unexpected results such as unconnected nets. You may
increase maxNumConnWireElements at the cost of longer run time.
Stretch connected objects together. In the following example, the via is moved with
the segment being stretched. The attached pathSeg is lengthened.
January 2011
287
When stretching a path or a pathSeg that is attached to a non-wire object such as a pin
or polygon, a new "surrogate" segment is added between the path or pathSeg where it
originally connects to the other object.
During the stretch, if the end of the path or pathSeg is moved far enough so that it would
no longer connect to the other object, the surrogate segment appears, maintaining the
connection. If the path or pathSeg is stretched in a way that keeps its end within the other
object, the surrogate segment is not needed, and will, therefore, not appear.
The following conditions apply to segments added when using the Stretch command:
Segments are added when attached objects would otherwise not stay connected.
Angles of added segments are controlled by Snap Mode, not Lock Angles.
January 2011
288
January 2011
Lock Angles on
289
January 2011
Lock Angles on
290
B
Environment Variables
This chapter describes the environment variable that affect options in the Virtuoso Spacebased Power and Automatic Routers.
Data Type
NA
enableVsrUi
boolean
NA
enableMaximizeCuts
boolean
Common Variables
Route Setup
Special Blockage Treatment setTreatBlockageAsMetalLayers
boolean
fixErrorsFixMinAreaAtPins
boolean
Minimum Area
fixErrorsErrorTypesMinArea
boolean
fixErrorsErrorTypesMinEnclArea
boolean
fixErrorsErrorTypesMinEdge
boolean
Minimum Width
fixErrorsErrorTypesMinWidth
boolean
Manufacturing Grid
fixErrorsErrorTypesMfgGrid
boolean
January 2011
291
Data Type
Routing Grid
fixErrorsErrorTypesRGrid
boolean
Crossing
fixErrorsErrorTypesCrossing
boolean
Port Shorts
fixErrorsErrorTypesPort Short
boolean
fixErrorsErrorTypesNumCut
boolean
fixErrorsRobustPinConnection
boolean
adjustViaToWireEdge
boolean
Reduce Vias
optimizeRouteReduceVias
boolean
routeSearchAndRepair
boolean
Repair Opens
routeSearchAndRepairCloseOpens boolean
EXTRACT NET
CONNECTIVITY FORM
Pin Style
extractedPinStyle
cyclic
Possible values are:
Labeled Shapes
Connected
Shapes
Whole Net
allowLowerLevelShapeForRoute
boolean
deleteRoutingKeepPower
boolean
Blockage
checkRoutabilityBlockage
boolean
Minimum Space
checkRoutabilityMinSpace
boolean
Minimum Width
checkRoutabilityMinWidth
boolean
Via
checkRoutabilityVia
boolean
checkRoutabilityMarkersLimit
boolean
Delete Routing
Keep Routed Power Nets
CHECK ROUTABILITY
January 2011
292
January 2011
293
294
checkRoutabilityVia
Directs the router to check for via escapes.
checkRoutabilityMarkersLimit
Sets a limit for the number of markers generated for each
violation type by the rteCheckRoutability function.
However, the rteCheckRoutability function still produces
the number of violations shown in the Routability Report
in the CIW.
rte checkRoutabilityMarkersLimit int
positive_integer
Note: If this environment variable is set to 0 or a negative
value, there will be no routability markers generated. In
order to generate the routability markers, the value for this
environment variable should be greater than 0.
enableMaximizeCuts
Attempts to pack more cuts in an overlap area than the
minimum normally selected. The default value is t. You
can turn off this option by specifying
(envSetVal "rte" "detailRouteMaximizeCuts"
'boolean nil).
enableVsrUi
Allows the deprecated IC613 Automatic Routing GUI
form to be used in place of the new IC614 Automatic
Routing GUI form. This is supported for compatibility only
and will be removed in the next release.
allowLowerLevelShapeForRoute
Controls the pin model used by the routers connectivity
extractor. When set to t will model the labeled shape and
connecting shapes on the same layer as a pin. However,
when it is set to nil only the labeled shape will be
modeled as the pin.
January 2011
295
Data Type
NA
spaceFuncName
string
{ function_name
| "" }
NA
setTaperMode
boolean
NA
wireTaperConstraintGroup
string
{
constraintGroup
_name | "" }
NA
weKeepSelectViaOrder
boolean
autoReshape
boolean
Auto Tap
autoTap
boolean
NA
tapPreference
cyclic
Possible values
include: noPrefer,
wire, pin
boolean
Wire
string
wireConstraintGroup
{
constraintGroup
_name | "" }
Auto Merge Geometric
Wires
weAutoMergeWires
boolean
Allow Loops
allowLoops
boolean
adjustEditedViaParams
boolean
January 2011
296
Data Type
showAlignmentMarkers
boolean
blockageUseMinWidth
boolean
maxNumConnWireElements
int
Stretch Form
NA
keepWiresConnected
cyclic
Possible values
include: all, spine,
none
autoViaAlignment
boolean
viaAlignment
cyclic
Possible values
include: none, topleft, top-center, topright, center-left,
center-center,
center-right, bottomleft, bottom-center,
and bottom-right
Pattern
cyclic
viaPattern
Possible values
include: perp,
diag_1, diag_2,
stagger, out_taper,
in_taper
Create Geometric Wire Form
Create Wire using
createWireMode
cyclic
Possible values
include: paths,
segments
January 2011
297
Data Type
wireWidth
float
Value should be a
positive float number
Offset
wireOffset
float
Value should be a
positive float number
Acute Angle
acuteAngleWire
boolean
usePrevPointForVia
boolean
Auto Terminate
autoTerminate
boolean
snapToPin
boolean
snapToViaCenter
boolean
viaAssistance
cyclic
Possible values
include: snap,
display, none
pathSegBeginExt
float
Value should be a nonnegative integer
Begin Style
pathSegBeginStyle
cyclic
Possible values
include: truncate,
extend, variable,
diagonal
End
pathSegEndExt
float
Value should be a nonnegative integer
January 2011
298
Data Type
End Style
pathSegEndStyle
cyclic
Possible values
include: truncate,
extend, variable,
diagonal
fanOutToVias
boolean
Gather Wires
gatherBusWires
boolean
wireWidthMode
cyclic
Possible values
include:
nearestEdgeWidth,
narrowEdgeWidth,
wideEdgeWidth,
constraintsDerviedWi
dth,
userSpecifiedWidth
weNoSmartSnap
boolean
weKeepBusWireSpacing
boolean
weCreateBusConstraint
boolean
Number of Bits
weBusNumBits
int
Width
enableWidthOverride
boolean
Connection Type
p2pSeedStyle
cyclic
Possible values
include: Exact
Location, Shortest
Connection
Guided Routing Form
January 2011
299
Data Type
int
Value should be a nonnegative integer
Gather At Bend
weGuidedRouteGatherAtBend
boolean
weWADefaultSeedCGName
string
Wire Assistant
NA
{
constraintGroup
_name | "" }
NA
weWASeedCGColor
string
{ color | "" }
NA
weWAUserDefColor
string
{ color | "" }
NA
weWAConflictColor
string
{ color | "" }
Flightlines
autoUpdateFlightlines
cyclic
Possible values
include: on, off,
minimum
allLayersWrongWay
cyclic
Possible values
include: As Is,
Allow, None,
Custom, unknown
allLayersWrongWayCustomValue
int
Value should range
between 0 to 100.
enforceGapSpacingOnDiffPairVias
boolean
boolean
boolean
January 2011
weShowCtrlWireAlignMarkerOnly
300
301
302
layerTapPickWireVia
The default behavior when tapping on a via is, if
there is an existing segment connected to one layer
of the via (or stack of vias) the intend wire is tap from
the unoccupied layer of the via. This option can be
used to disable the default behavior causing the
Choose Object to Tap form to open.
wireConstraintGroup
Specifies the constraint group used to supply a
default set of constraints for both interactive and
automatic routing. The default constraint group is
virtuosoDefaultSetup. The
virtuosoDefaultSetup constraint group should
contain validVias and validLayers for routing
and possibly other process rules that would override
the foundry rules.
weAutoMergeWires
Automatically merges the connected geometric paths
and collinear geometric pathsegs while creating or
stretching a geometric wire.
Default is t.
allowLoops
When t, allows loops when creating or editing wires.
Default is nil.
adjustEditedViaParams
Re-calculates via alignment if you stretch the wire
connected to the via.
Default is nil.
showAlignmentMarkers
Allows display of alignment marks when the pointer
aligns with a nearby wire, pin, or via that is on the net
you are routing.
blockageUseMinWidth
January 2011
303
January 2011
304
January 2011
305
Default is none.
pathSegBeginExt
Sets the beginning extension value is used when you
create a path segment with a variable extension. The
default is the constraint group value for the path
width for the active layer.
pathSegBeginStyle
Sets which beginning extension style is used when
you create a path segment. The default is
truncate.
pathSegEndExt
January 2011
306
January 2011
307
weKeepBusWireSpacing
Maintains the same centerline-to-centerline spacing
between the bus wires on all the layers.
Default is nil.
weCreateBusConstraint
Creates a bus constraint automatically for the nets
you specify by using the netName environment
variables or for the ones you pick by selecting
multiple pins.
Default is nil.
weBusNumBits
Specifies the number of wires in the bus.
Default is 2.
enableWidthOverride
Allows the wire width specified in the Width field to
be used by the point to point router when generating
wire segments.
p2pSeedStyle
Controls the type of connection to be followed when
creating a point to point route. The default is
Shortest Connection.
envelopeNumTracks
Specifies number of tracks that is used to calculate
the width of the routing envelope while creating a
guided route. The routing envelope represents the
available routing area for the wire.
Default is 5.
weGuidedRouteGatherAtBend
January 2011
308
January 2011
309
Default is As Is.
allLayersWrongWayCustomValue
Specifies the extent of wrong way routing you want to
permit. You can specify a value between 0 to 100, 0
being the level of maximum freedom for creating
wrong way routing and 100 being the level of
maximum restriction for creating wrong way routing.
The default value is 1.
January 2011
310
enforceGapSpacingOnDiffPairVias
Lets you force the application of gap spacing
between consecutive vias of the differential pair.
Default is t.
useOverlapRegionForVia
Creates square vias to connect collinear wires.
Default is nil.
weShowCtrlWireAlignMarkerOnly
Displays the alignment marker only if the control wire
is aligned with its target pin.
Default is t.
January 2011
311
January 2011
312
C
Bindkey Keyboard Map
For information about bindkeys, see Bindkeys and Access Keys.
F keys
F1
F2
F3
F4
F5
F6
F7
Cadence
Help
Save
Toggle
Display
Form
Toggle
Partial
Select
Open
Design
Toggle
Maintain
Connections
DRD
Options
Form
F10
F11
F12
F8
F9
Set Filter
Size,
Toggle
between
values with
each press
Shift-F5
Fully Select
Partially
Selected
Objects
Display/
Hide
Assistants
Alphabet keys
Key to Map: 1=Top row is Control + key
2=Second row is Shift + key
3=Third row is key
4=Last row is Control + Shift + key
January 2011
313
1 Select All
1 Interrupt
1 Deselect All
1 Toggle DRD
Edit Mode
2 Select Area
2 Return
2 Chop
3 Select
3 Go to Level
3 Copy
3 Deselect
4 Via Down
3 Display
Options
4 Create Point to
Point Routing
1 View 0
2 View 32
2 Zoom To Grid
3 Fit All
3 Toggle Gravity
3 Create
Instance
4 Finish Entire
Net
K
N Snap mode
options:
1 L90XFirst
1 Select Via
Stack
2 Clear Rulers
2 Merge
2 orthogonal
2 Rotate
3 Draw Rulers
3 Label
3 Move
3 diagonal
3 Create Contact
1 Create Pin
1 Redraw
1 Split
1 Zoom to Set
2 Create
Polygon
2 Design Prop
2 Reshape
2 Search
2 Tree
3 Create Path
3 Object Prop
3 Create
Rectangle
3 Stretch
3 Tap
4 Via Up
4 Create Guided
Routing
1 Type in CIW
1 Close
1 Fit Edit
1 Cycle Select
January 2011
314
2 Redo
2 World View
2 Next View
2 Descend
2 Paste
3 Undo
3 Attach
4 Finish Wire
4 Create
4 Create Bus
Geomteric Wire
(L)
Create Wire (XL,
GXL)
Esc
Tab
Delete
Back Space
1 Zoom In x2
2 Zoom out x2
3 Zoom In
3 Cancel
3 Pan
3 Delete
3 Undo Point
3 Yank
4 Cycle Control
Wire
Return
Spacebar
January 2011
315
Arrow keys
Control + key: Fit cell to portion of window
Shift + key: Move Cursor
Key: Pan to portion of cellview
Home
PgUp
top
left
center
right
End
PgDn
bottom
Sets cursor to
move 1 grid
point. Then
press Shift
and arrow
keys to move
the cursor 1
grid point.
Sets cursor to
move 2 grid
points. Then
press Shift
and arrow
keys to move
the cursor 2
grid points.
January 2011
316
Enter
D
Routing Assistants
Wire Assistant
The Wire Assistant, available in VLS-XL and GXL, is a dockabe assistant that provides a
single point of access to the most commonly used options for creating and editing a wire.
These options are otherwise available in the corresponding options forms when the Bus,
Wire, Point to Point, or Guided Routing command on the Create Wiring menu is
running, in the Layout Editor Options form, and in the Create Single Wire, Point to Point,
and Guided Routing context-sensitive menus. Some options are available exclusively in the
Wire Assistant.
In addition, the Wire Assistant provides a quick, easy, and single-point access to the
constraint values to be used by the wire editor for creating and editing wires. Using the Wire
Assistant, you can override values for constraints such as minimum width, minimum spacing,
minimum number of cuts, valid layers and valid vias. You can override the constraint values
in the Wire Assistant if the values you specify are:
Greater than the constraint value in the looked-up constraint group for the applicable
minimum rules.
Within the layer/via range in the looked-up constraint group for Routing, Pin Escape
layers and Valid Vias. See Override Constraints section of the Wire Assistant.
For more information about constraint group look up precedence, see Constraint Group
Lookup Precedence.
While routing a net from the Navigator assistant, you can choose to use the Wire Assistant
override values. To do this:
1. In the Navigator assistant, right-click a net.
The Net context-sensitive menu displays.
2. Choose the Route With WA Override command.
Note: This command supports Specialty Routing.
January 2011
317
Right-click in the main menu or toolbar area and select Wire Assistant.
Once selected, Wire Assistant is added as a docked assistant pane within the current
session window. By default, Wire Assistant is positioned in the lower right area of the
session window.
January 2011
318
Toolbar
The Wire Assistant comprises of two components, the toolbar and the different sections for
configuring settings while creating and editing wire or a bus. You can add or remove these
sections to or from the Wire Assistant. You can also configure the fields and options to
appear in each section, as required.
The toolbar contains the following buttons:
January 2011
319
Top-Level Node
Represents the Wiring section in the
Wire Assistant
Child Node
Represents an option in the Wiring
section on the Wire Assistant
Use this form to configure sections and the options in each section that you want to display
or hide in the Wire Assistant for a session. In this form, the top-level nodes (next to the +
sign) represent titles of sections that appear in the Wire Assistant. The child nodes of these
top-level nodes represent the fields and options that are available for the respective sections.
January 2011
320
January 2011
321
"Net Name" t)
"Probe Nets" nil)
"Override Constraints" t)
"Fixed Width" t)
"Allow Loops" nil)
"Snap To Pin Center" t)
"Snap To Via Center" t)
"Snap to Track" nil)
"Adjust Edited Vias Params" nil)
"Automatic Via Alignment" t)
"DRD Mode" nil)
"Flightlines" nil)
"Wrong Way Tax" t)
"Use Grid" nil)
"Blockage: Use Minimum Width" t)
"Enforce Gap Spacing on DiffPair Vias" nil)
"Use Truncate End Style at Pins" nil)
"Attempt to Use Double Cut Vias" t)
"Purposed Routing" nil)
"Specify Via Cuts" t)
"Use Squarish Collinear Vias" nil)
"Show Alignment Markers" t)
"Auto Terminate" nil)
"Place Via(s) at Last Click" nil)
"Use Width" t)
"Snap Mode" nil)
"Pin Strapping Layer" nil)
"Taper Pin Width" t)
"Remove Preroute Dangles" t)
"Wrong Way Tax" t 'netRoute)
"Use Grid" nil 'netRoute)
"Pin Strapping Layer" nil 'netRoute)
"Blockage: Use Minimum Width" t 'netRoute)
"Enforce Gap Spacing on DiffPair Vias" nil 'netRoute)
"Attempt to Use Double Cut Vias" t 'netRoute)
"Taper Pin Width" t 'netRoute)
"Remove Preroute Dangles" t 'netRoute)
"Use Simple Pattern for Pin-to-Trunk" nil 'netRoute)
"P2P Connection Type" t)
"Guided Routing Envelope" t)
"Layer Mode" t)
"Direction Mode" t)
"Match Widths and Spacings" t)
"Pattern" t)
"Tapping" nil)
)
)
January 2011
322
Use this form to save the override values you specify in the Wire Assistant to another
constraint group. You can specify the name of the constraint group in which to save the
override values in the Constraint Group Name field. When you click OK in the form, the
form closes and a message informing you about the creation of the constraint group is
generated in the CIW.
Based on the values you override, the following three types constraint groups are created:
The constraint group name you specify is suffixed with _WA_Net, _WA_Design, or
_WA_TAPER, based on the values you override.
Note: If there are no override values, the corresponding <name>_WA_* constraint group is
not generated.
January 2011
323
In the Wire Assistant, you can access the new constraint group from the Seed Attributes
From a Constraint Group button on the toolbar. Corresponding to the three types of
constraint groups created (_WA_Net, _WA_Design, and _WA_Taper), only one entry is
created in the Seed Attributes From a Constraint Group drop-down list. Selecting that
single entry from the Seed Attributes From a Constraint Group list updates all the values
in the Wire Assistant from the three constraint groups.
January 2011
324
Wire Assistant
Section
Wire
Assistant
Section
Options
Options
Connectivity
Net Name
Probe Nets
Finish Net
Override
Constraints
Net Route
Wiring
Fixed Width
Allow Loops
Snap To Pin Center
Snap To Via Center
Snap to Track
Adjust Edited Vias Params
Automatic Via Alignment
DRD Mode
Enable Pushing
Flightlines
P2P
Connection
Type
Exact Location
Shortest Connection
January 2011
325
Wire Assistant
Section
Wire
Assistant
Section
Options
Options
Assisted Routing
Number of Additional
Tracks
Gather At Bend
Create Wire(s)
Auto Tap
Tap Layer
Tap Attributes
Tap End Styles
Select from Overlaps
Include All (Wire) Via
Layers
Tap Purpose List
By default, the Wire Assistant displays the Connectivity, Override Constraints, and
Wiring sections.
Connectivity
These options are available in the Create Wire Form, Create Bus Form, Point to Point Form,
and Guided Routing Form.
January 2011
326
The text above the table indicates the constraint group used to seed the table. The Default
constraint group is derived from the Wire setting in the Layout Editor Options form (for
more information about the form, see Virtuoso Layout Suite L User Guide). You can
change the constraint group from which to seed the table by selecting a value from the Seed
Attributes From a Constraint Group list on the Wire Assistant toolbar. If you select a
different value from the Seed Attributes From a Constraint Group list, the Default label
changes to Seeded From. By using weWADefaultSeedCGName, you can seed a default
constraint group on the Wire Assistant.
Some of the features of the Override Constraints section include:
The constraint group selected from the Seed Attributes From a Constraint Group
list does not change the application default constraint group setting in the Wire section
of the Layout Editor Options form.
While overriding the constraint values in the Width and Spacing table, ensure that the
values specified for the Width, Spacing, and Minimum Number of Cuts are greater
than or equal to the values for the corresponding minimum rules in the looked up
constraint group. In addition, the valid routing layers and valid vias should be a subset of
January 2011
327
Modification of the values in the Override Constraints section does not change the
content of the constraint group in the OpenAccess database.
If you override any value in the Override Constraints section, the change is indicated
by colored fields in the table and by color bars next to the other updated fields. The
figures below illustrate some examples where the constraint values are overridden in the
table and for other fields.
January 2011
328
Width and Spacing Table allows you to override the preferred routing direction, the
width, and the spacing for the layers to be used while creating wires. You can override
the current preferred routing direction for each layer by selecting a different value from
the Dir list. The routing directions supported by the Wire Assistant include Horizontal
, Vertical
, and None
. Any update to the routing direction for a layer in the
Layers assistant is automatically updated in the Dir column for that layer in the Wire
Assistant.
You can click in the Width and Spacing fields to edit them. If a net has been specified
in the Net Name field, then the net width and spacing overrides, if any, are visible in the
table. If you change any width value, then the Use Width option in the Create Wire(s)
section automatically sets to Last Specified, if not already.
If you select a non-drawing, voltage-aware layer purpose to create a wire, the layer
purpose is represented in the Layers column in the
<layer:purpose_abbreviation> format, as in metal1:dr4.
Note: The wire editor allows the creation of bus wires even if the terminals/instance
terminals distance is less than the override spacing, regardless of the current DRD
checking mode. After creating the bus, you should run the Batch Checker on the result.
The Batch Checker will flag error on the pins/instPins that do not have enough spacing
for the override spacing value. For more information about the Batch Checker, see
Chapter 7, Space-based Router Batch Checking.
Minimum Number of Cuts enables you to override the minNumCut rule value for
creating and editing wires. This setting is applied to the next via selected from the Select
January 2011
329
Pin Escape column enables you to select the Top and Bottom layer limits and overrides
the validLayers setting in the virtuosoDefaultTaper constraint group. If a
virtuosoDefaultTaper constraint group does not already exist, it is created based
on the specified Layers, Vias, and Halo values. If you place the pointer at the Pin
January 2011
330
Note: The wire editor follows the union of both the Top and Bottom Routing and Pin
Escape layers setting in the Wire Assistant. For example, if the Routing Top and
Bottom layers are set to Metal4 and Metal1, respectively, and the Pin Escape Top
and Bottom layers are set to Metal5 and Metal2, respectively, the routing interval
assumed by the wire editor is between Metal5 and Metal1.
January 2011
331
If you click the Vias button in the Pin Escape column, it opens the Setup Valid Vias
form.
January 2011
332
These options are available in the Create Bus Form, Create Wire Form, Create Bus Form,
Select Via Form, and the Layout Editor Options Form.
Fixed Width, if selected, maintains the same specified width on all the layers while
creating wires. If this option is not selected, then the wire width is derived from settings
of the Use Width option in the Create Wire(s) section. If the Fixed Width check box is
selected before the Create Wire, Point to Point, and Guided Routing commands are
run and the value specified in the text field does not violate the minWidth value of the
layer being edited, the Fixed Width value is saved for subsequent create command
January 2011
333
January 2011
334
January 2011
335
This section is automatically enabled in the Wire Assistant when you start the Bus, Wire,
Point to Point, or Guided Routing command from the Create Wiring menu and
Assisted Routing is selected in the Wire Assistant Options form. This section remains
available in the Wire Assistant as long as one of these commands is running.
Wrong Way Tax controls whether or not wrong way routing is permitted.
As Is uses the default setting as initialized by the router. This setting can allow
certain wrong way routing if required. This is selected by default and maps to the tax
value 1.
Allow permits wrong way routing freely. This maps to the tax value 0.
None does not allow wrong way routing. The wrong way tax is 100.
Custom lets you control the extent of wrong way routing you want to permit. You
can select this option and specify a value in the Wrong Way Tax Value combo box.
The default value is 1. You can increase the value to impose higher restriction on
wrong way routing.
Environment variable: allLayersWrongWay
Wrong Way Tax Value indicates the extent to which wrong way routing can be created.
This cyclic field is placed next to the Wrong Way Tax combo box. This field is editable
only when Wrong Way Tax is set to Custom. You can specify a value between 0 to 100,
0 being the level of maximum freedom for creating wrong way routing and 100 being the
level of maximum restriction for creating wrong way routing.
Environment variable: allLayersWrongWayCustomValue
January 2011
336
January 2011
337
This section is automatically enabled in the Wire Assistant when you start the Create
Wiring Wire command and Create Wire(s) is selected in the Wire Assistant Options
form. This section remains available in the Wire Assistant as long as the Wire command is
running.
Specify Via Cuts enables you to specify the number of Rows and Columns for the
next via to be placed while creating a wire. By using this option, you can create the
required via array while creating the wire.
January 2011
338
Alignment Marker
Alignment Arrow
January 2011
339
January 2011
340
This section is automatically enabled in the Wire Assistant when you start the Wire or Bus
command from the Create Wiring and Finish Net is selected in the Wire Assistant
Options form. This section remains available in the Wire Assistant as long as the Wire
command is running.
Pin Strapping Layer adds a strapping via at the pin location or as close as possible to
the pin when you run the automatic Finish Wire or Finish Entire Net command. You
can set the strapping layer as Poly or Metal. This option helps to minimize the use of
poly while performing device-level routing of multi-finger devices that have poly layer
pins.
Taper Pin Width enables the router to create pathSegs connecting to top-level pins or
instPins using width matching the target pin. This option applies to the Finish Wire and
Finish Entire Net commands.
Remove Preroute Dangles checks for and removes wire dangles, if any, when you run
the Finish Entire Net command.
Net Route
This section is automatically enabled in the Wire Assistant if you select a pathSeg or a net
in the Navigator assistant and if Net Route is selected in the Wire Assistant Options form.
January 2011
341
Use Grid
Use Simple Pattern for Pin-to-Trunk, if selected, allows only pin-to-trunk routing. If
this check box is off, pin-to-trunk and trunk-to-trunk routing is performed.
Important
Cadence recommends that you lock the nets after performing pin-to-trunk routing to
ensure that any subsequent routing by assisted routing commands does not rip
them up and re-route them as regular nets.
You can view the current Route Pattern on a net in the Property Editor assistant after
selecting the net in the Navigator assistant. The Route Pattern field is editable and can
take one of these values: steiner, balanced, trunk.
Note: Wire Assistant supports specialty routing. For more information about trunk
topologies and specialty routing, see the Virtuoso Routing IDE User Guide.
P2P Connection Type
January 2011
342
This section is automatically enabled in the Wire Assistant when you start the Create
Wiring Guided Routing command and Guided Routing Envelope is selected in the
Wire Assistant Options form. This section remains available in the Wire Assistant as long
as the Guided Routing command is running.
These options are available in the Guided Routing Form.
Number of Additional Tracks enables you to specify the additional width of the
routing envelope in track units. The specified value is added to the minimal routing
envelope width that the router automatically calculates. The additional width provides
more routing space to the router. The default value of the additional number of tracks is 4.
Gather At Bend, if selected, enables the width of the first and last segments of the
routing envelope to match the width of the pin envelopes they connect to. If this check
box is off, the width of the first and last segments is calculated as the usual routing
envelope width, based on the specified Number of Additional Tracks.
January 2011
343
See the Layout Editor Options form in the Virtuoso Layout Suite L User Guide for the
options in this section.
January 2011
344