You are on page 1of 66

The F

Future
t re of Ro
Routing
ting in
IC Compiler: Zroute
Technical Tutorial
B-2008.09-SP4/A-2007.12-SP5-2+

Presenter Info

March 11, 2009


Version 2
2.03
03

1- 1
CONFIDENTIAL INFORMATION
The following material is being disclosed to you pursuant to a
non-disclosure agreement between you or your employer and
Synopsys. Information disclosed in this presentation shall be
used only as permitted under such an agreement.
agreement

LEGAL NOTICE
Information contained in this presentation reflects Synopsys
plans as of the date of this presentation. Such plans are subject to
completion and are subject to change. Products shall be offered
and purchased only pursuant to an authorized quote and
purchase order. Synopsys is not obligated to develop the
software with the features and functionality discussed in the
materials.
1- 2
Agenda

„ Zroute Technology Introduction

„ Basic Zroute Flow Overview

„ Multi-Threaded Routing

„ Example Scripts

„ Summary

Note that the appendix


pp has additional details about ggettingg started…

1- 3
Introducing Zroute
Architected From The Ground Up For New Challenges

1
State-of-the-art routing
technology

IC Compiler
C il 2
Concurrent DFM optimizations
Z
Zroute
t
3
Multi-threaded throughout

10X Speed-
Speed-up,
up higher QoR
QoR,, better manufacturability

1- 4
1. State-of-the-Art Routing Technology

Realistic Connectivity Dynamic Maze Grid

Dynamic
Grid
Virtual Wire

Advanced Design Rules Polygon Manager

0.6S X Y

S Z
0.6S
S
W
S

Faster runtimes,
runtimes improved design closure

1- 5
2. Concurrent DFM Optimizations

Soft Rules Redundant Vias


Yield

S T

S T Spacing

Antennas Wire Spreading/Widening

Metal 2
Via1 Via1
Metal 1 Metal 1

Gate

Faster runtimes,
runtimes improved manufacturability

1- 6
3. Multi-Threaded Throughout

All Routing Steps Scalability

Global Routing

X Speedup
Track Assignment

Detail Routing
# of cores

Transparent Larger Capacity

Native

Memory
Ready to go
Simple set
set-up
up
# of cores

Faster runtimes,
runtimes near linear scalability

1- 7
10X Speed-Up On Mainstream Hardware

3.5X Faster – Single


Single--threaded
“x”
3X S
Speedup
d – Multi-
M lti-threaded
Multi th d d on QuadQ d Core
C

10X Speed Up

“… achieved a 10x boost in performance


when we used it with a quad-core platform.”

1- 8
10X Speed-Up On Mainstream Hardware

3-4X 3X
Multi-threaded

X Speedup # of Cores

1- 9
Fewer Wires, Fewer Total Number of Vias

1-2% 10--15%
10
Wire Length # of Total Vias
40nm, 225K 45nm, 374K
40nm, 60K 65nm, 845K
45nm, 170K 65nm, 593K
65nm, 845K 65nm, 545K
65nm, 593K 65nm, 356K
65nm, 545K 80nm, 2777K
65nm, 356K 90nm, 2313K

0 1 2 3 0 10 20
Improvement % Improvement %

1- 10
Fewer Non-Optimized Single Vias

30--50%
30
Remaining Non-Optimized Single Vias
40nm, 225K
40nm, 93K
40nm, 60K
45nm, 374K
45nm, 170K
65nm, 1000K
65nm, 68K

0 10 20 30 40 50 60 70
Improvement %

1- 11
Fewer Jogs and Notches,
Improved Lithography

Litho-Friendly Routing

No Scenic Routes

Fewer Jogs

Fewer Notches

“… 70% fewer narrow jogs


30% fewer notches …”

1- 12
Zroute Results on Customer Designs

Technology # of Cells Utilization Runtime Wire Length Contacts


(nm) (K) (%) (X faster) (% less) (% less)
90 870 59 3.3 6% 3%
65 67 85 1.5 2% 9%
65 845 48 24
2.4 3% 18%
65 1000 75 2 0% 2%
45 50 63 9 6% 19%
45 60 90 14
1.4 3% 7%
45 93 80 1.3 4% 5%
45 170 72 3.8 1% 25%
45 225 74 11
1.1 3% 5%
45 374 61 3 4% 17.8%

3X 3% 11%

1- 13
Zroute Is GA in IC Compiler B-2008.09!

Also available in
A-2007.12-SP5-1

Multiple on-going
tape-outs
tape outs

1000+
Multiple planned
hits test chips at 32nm

1- 14
Zroute Users Tell The Story …

“… 2-3.4X faster single-threaded


3X scalability with 4 threads ...”
10/17/08

“… 70% fewer narrow jogs,


30% fewer notches ...”
9/22/08

“… tapes out home networking device


using
g new Zroute technology
gy …”
9/15/08

“… achieved a 10X boost in performance


when we used it with a quad-core
quad core platform.
platform ”
5/27/08

“ … routing runtimes cut significantly by


multi threading support … ”
multi-threading
5/19/08

1- 15
Zroute Technology Summary
Architected From The Ground Up For New Challenges

Available 1
B-2008.09
State of of
Part theICartCompiler
technology

IC Compiler
C il 2
Concurrent
Co-
Co DFMcurrent
-exists with optimizations
router

Z
Zroute
t
3
Multi-threaded
Single throughout
license for 4 cores

10X Speed-
Speed-up,
up higher QoR
QoR,, better manufacturability

1- 16
Agenda

„ Zroute Technology Introduction

„ Basic Zroute Flow Overview

„ Multi-Threaded Routing

„ Example Scripts

„ Summary

1- 17
Currently Supported Design Rules

„ All 65nm and above design rules

„ Most 45/40nm rules


z Common Platform and TSMC 45/40nm design rules
z Selected IDMs 45nm rules

„ Ongoing 32nm rule development

„ Zroute supports only design rules defined in the


Milk
Milkyway technology
t h l file
fil
z Classic router parameters used to implement design
rules must be migrated to the technology file

1- 18
Zroute Input and Output
„ Same inputs as classic router
z Milkyway design library
‹ Technology file
‹ Standard cell and macro cell FRAM view

z Route guides, layer constraints, nondefault rules


z Power nets routed with power and ground prerouter

„ Output - routing data generated in the Milkyway


CEL view
z open_mw_cel, save_mw_cel

„ Same IC Compiler command to report the design


z report_design –physical
1- 19
Basic Zroute Flow
Post--CTS Cell
Post

Set Zroute as Targeted Router set_route_mode_options –zroute true

Set Zroute Options Includes translating classic router parameters


into Zroute options

Route Clocks Integrated clock global router (ICGR) with


route_zrt_group

Route Signals route_opt –initial_route_only


i i i l l

route_opt –skip_initial_route
Postroute Optimizations route_opt
p –incremental

Chip Finishing

signoff_opt
1- 20
Enabling Zroute

„ Commands that run a router need to know which


router to use: classic or Zroute
z set_route_mode_options –zroute true
‹ This option is persistent
„ C
Commands
d that
th t run the
th embedded
b dd d router
t
z clock_opt
z route opt
route_opt
z Postroute optimize_clock_tree
z signoff_opt
„ Other Zroute commands that are router-specific
have “zrt” in the name
z U help
Use h l * t* to
*zrt* t find
fi d all
ll off them
th

1- 21
More on report_route_opt_strategy

„ Zroute „ Classic Router


********************************************************* *********************************************************
route_opt strategy for the design: route_opt strategy for the design:
Fix Hold Mode : route_base Fix Hold Mode : route_base
Search-Repair loops : 10 Search-Repair loops : 15
ECO Search-Repair loops :4 ECO Search-Repair loops :5
Optimize Wire/Via Search-Repair loops : N/A Optimize Wire/Via Search-Repair loops : 5
Optimize Wire/Via CPU limit : N/A Optimize Wire/Via CPU limit : -1
Crosstalk Optimization loops :2 Crosstalk Optimization loops :2
Route Violation threshold : 3000 Route Violation threshold : 3000
********************************************************* *********************************************************

„ Default
D f lt It
Iterations
ti are 10 and
d 4 ffor Zroute-based
Z t b d
route_opt
z Zroute converges
g q quicker
z Zroute is more intelligent, stopping on nonconvergence
1- 22
Zroute Versus Classic Router Commands

„ Commands do not match 1:1 due to different


routing architecture
Zroute Classic router
route_zrt_global route_global
route zrt track
route_zrt_track route track
route_track
route_zrt_detail route_detail
route_zrt_detail –incremental true route_search_repair
verify zrt route
verify_zrt_route verify route
verify_route
route_zrt_auto route_auto
route_zrt_eco* route_eco
insert_zrt_redundant_vias insert_redundant_vias
n/a optimize_wire_via
extract_zrt_hier_antenna_p
property
p y extract_hier_antenna_p
property
p y

*Zroute must use ECO route if there are opens!


1- 23
Zroute Options

„ Zroute option setup commands


z set_route_zrt_common_options
p
z set_route_zrt_global_options
z set_route_zrt_track_options
z set_route_zrt_detail_options

„ Commands to report Zroute options


z report_route_zrt_*_options

„ Commands to query Zroute option values


z get_route_zrt_*_options -name option_name

„ All options are persistent (saved with design)

* Î common|detail|global|track
1- 24
Intelligent DRC Convergence

„ For each iteration after the initial iteration, Zroute


analyzes the DRC distribution
z Different areas can use different partition size and aspect
ratio (nonuniform partitions)
„ Zroute uses varying techniques trying to fix DRCs
z Initial iterations use simple methods to fix most violations
z Subsequent
q iterations use more advanced methods
„ Zroute can weight violation types differently for
each iteration
z After iteration 30, costs are not changed
„ Zroute detects nonconvergence of DRC and stops
iterations
z You do not have to limit iterations to improve runtime
1- 25
Center Line Connectivity
„ Classic router depends on center line connectivity
z Zroute does not
z Center line connectivity imposes additional constraint when trying
to meet DRCs

Center line is not connected Center line is connected


1- 26
Don’t Do…
„ Don’t run verify_route on Zroute design
z Classic router has a different connectivity model (center line
connection)) , which affects open
p reporting
p g and DRC calculations
z Use verify_zrt_route to verify Zroute results
z Use verify_drc (65nm or above), signoff_drc (B-2008.09 or later
releases), or Hercules to independently verify the router result

„ Don’t use report_antenna_ratio to report antenna


violations, use verify_zrt_route –antenna true
„ Don’t run classic router AFTER Zroute
z You will get the following error if you try to do this:
Error: It is not recommended to use classic router
commands after Zroute commands. (RT-302)
z Can run classic router before Zroute
‹ For example,
p , usingg route_g groupp for clocks

1- 27
verify_zrt_route: Summary

„ verify_zrt_route outputs summary at the end


z If option
ti isi ffalse,
l summary reports
t “not
“ t checked”
h k d”
z Use -report_all_open_nets true to list all opens
z Scroll back up to investigate individual error types

Verify Summary:

Total number of nets = 229823, of which 0 are not extracted


-open_net Total number of open nets = 0, of which 0 are frozen
Total number of excluded ports =
0 ports of 0 unplaced cells connected to 0 nets
0 ports without pins of 0 cells connected to 0 nets
0 ports of 0 cover cells connected to 0 non-pg nets
-drc Total num of DRCs = 5
-antenna Total num of antenna violations = 0
-voltage_area Totall num of
f voltage-area
l violations
i l i = not checked
h k d

# | no antenna rules defined | not checked

1- 28
Switching to Zroute in the GUI

„ Select “Zroute Mode” check box or use


set_route_mode_options
p –zroute true

1- 29
Different Route Menu in IC Compiler GUI

Zroute Route menu Classic router Route menu

1- 30
Has Design Been Routed by Zroute?

„ set_route_mode_options –zroute true only


shows user intent
z Tells commands that use embedded routing to use
Zroute as the router
z Does not mean Zroute has been run on the design
„ To query if Zroute has been run on a design, use
is zrt routed design
is_zrt_routed_design
z Yes:
‹ Message: Design is routed using Zroute.
‹ Returns: true
z No:
‹ Message: Design is not routed using Zroute.
Zroute
‹ Returns: false
1- 31
Agenda

„ Zroute Technology Introduction

„ Basic Zroute Flow Overview

„ Multi-Threaded Routing

„ Example Scripts

„ Summary

1- 32
Multi-Threaded Routing Throughout
„ Designed from ground up as a multi-threaded router
z Most route engines run multi-threaded tasks
z Great threadability – close to upper bounds without QoR loss
„ Need multi-CPU or multi-core machines to run
multi-threading
z Number of threads ≤ total number of cores

„ Distributed routing is not supported


z Multi-threading: Multiple CPUs performing parallel algorithms
on the same machine using a single process memory
z Distributed: Partition design and send each partition to a
separate CPU with separate memory image of routing task
„ To enable multi-threading
multi threading (default is 1)
set_route_zrt_common_options –max_number_of_threads 2
1- 33
Measuring Multi-Threaded Routing

„ Speed-up should be measured by using wall-clock time,


not total CPU time (Example is 8 threads)
[GR: Done] Elapsed real time: 0:09:11
[GR: Done] Elapsed cpu time: sys=0:01:21 usr=0:41:02 total=0:42:23
[Track Assign: Done] Elapsed real time: 0:05:57
[Track Assign: Done] Elapsed cpu time: sys=0:00:50 usr=0:38:30 total=0:39:21
[DR Done] Elapsed real time: 0:17:50
[DR Done] Elapsed cpu time: sys=0:00:01 usr=2:21:07 total=2:21:09

„ In general, memory should be compared by using a


single process
z Total Memory = main process memory + child process
memory, easier just to turn off child process for router
z To turn off child process for both classic router and Zroute,
set_app_var physopt_enable_router_process false

1- 34
Example: Runtime Improvement
90nm, 2.3M Instances, 578 Macros

QoR
classic
Classic versus Zroute Zroute
„ Memory reduction
8.0 2.1X
7.0
z 21.6GB vs. 16.9GB
6.0
1 5X
1.5X z 21 6%
21.6%
5.0
„ Wire length improvement
me: Hours

4.0

3.0 1.7X z 1.8%


Runtim

2.0
„ Via reduction
1.0
z 11.6%
0.0
route_auto
t t i
insert_redundant
t d d t viasi verify_route
if t
„ Redundant via rate
improvement
Single CPU/Thread z 72.7% vs 93%

1- 35
Example: Multi-Threading Speed-Up
90nm, 2.3M Instances, 578 Macros

Comparing Threadability of Commands


250 0
250.0

200.0
5.2X

150.0 2.8X 1
Runtime: Mi nutes

2
4
100.0 4.7X 8

50.0

0.0
route auto
route_auto insert redundant vias
insert_redundant verif y_route
y route

*Run on 4 dual-core CPUs


1- 36
Example: Multi-Threading Speed-up
90nm, 2.3M Instances, 578 Macros

Comparing Threadability Inside


route_zrt_auto
140.0

120.0
6.9X
100 0
100.0
1
80.0
Runtime: Minutes

5.1X 2
4
60.0 3.3X 8

40.0
R

20.0

0.0
global track detail

*Run on 4 dual-core CPUs


1- 37
Agenda

„ Zroute Technology Introduction

„ Basic Zroute Flow Overview

„ Multi-Threaded Routing

„ Example Scripts

„ Summary

1- 38
Parameter Translator Example
„ See the parameter translator guide (SolvNet 024478)
for more info
##Run
##R n classic ro
router
ter script up
p to point of r
running
nning classic ro
router
ter
##Translate parameters
translate_zrt_parameters

Parameters translated into Zroute options


=========================================
Translated ignoreNotchDRC of droute 0 to set_route_zrt_detail_options
-ignore_drc {{same_net_metal_space false}}
Translated runTimingMode of trackAssign 1 to set_route_zrt_track_options
-timing_driven
i i d i true

Parameters not translated


=========================
Information: droute parameter checkMergedFatWire is obsolete in Zroute.
Zroute
(ZRT-410)
Warning: droute parameter accessPolyPin is not supported by Zroute.
(ZRT-409)
Warning: droute parameter dropVia1InsideM1Pin cannot be translated
exactly to corresponding Zroute option.
option (ZRT
(ZRT-412)
412)
Warning: droute parameter M1FloatingSpaceForViaOffLimit is supported by
Zroute only in Milkyway technology file. (ZRT-411)

1- 39
route_opt With Zroute Example

##Assume clocks are already routed

##Set signal integrity options


set_si_options
t i ti -delta_delay
d lt d l t
true \
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25

##Enable
##E bl Zroute
Z t inside
i id route_opt
t t
set_route_mode_options -zroute true

##Turn on multi-threading
set_route_zrt_common_options
t t t ti -max_number_of_threads
b f th d 2

##Add specific Zroute options as needed


#set_route_zrt_*_options

##Run initial routing


route_opt –initial_route_only

##Perform
##P f postroute
t t optimizations
ti i ti
route_opt –skip_initial_route

1- 40
route_zrt_auto: SI and Timing Driven
##Set signal integrity options
set_route_zrt_common_options -threshold_noise_ratio 0.25
set_route_zrt_global_options -crosstalk_driven true
set route zrt track options –crosstalk
set_route_zrt_track_options crosstalk_driven
driven true

##Tell tool to use Zroute


set_route_mode_options –zroute true

##Add specific Zroute options as needed


#set_route_zrt_xxx_options

##Set timing driven


set_route_zrt_global_options -timing_driven true
set_route_zrt_track_options -timing_driven true
set_route_zrt_detail_options -timing_driven true route_opt
–initial_route_only
initial route only
##Route design defaults
route_zrt_auto -max_detail_route_iterations 10

##Check results (optional)


verify_zrt_route
report_design -physical

1- 41
ICGR Flow With Zroute Example

##Set clock tree references


set_clock_tree_references …

##Set clock net routing rules


set_clock_tree_options -routing_rule XYZ –layer_list “upper_layers”

##Turn on ICGR inside CTO


set_app_var cto_2007_12 true ##2008.09 Flow
set_delay_calculation -clock_arnoldi set_delay_calculation –clock_arnoldi

##Run CTS and CTO


clock_opt –only_cts \
clock_opt –only_cts –no_clock_route –cts_effort high –no_clock_route

##Route clocks using the previous ICGR global route


route_zrt_group –all_clock_nets -reuse_existing_global_route true

Prior to B-2008.09-SP3 use


set_route_zrt_global_options -incremental true
route_zrt_group –all_clock_nets
ll l k
set_route_zrt_global_options -incremental false
Note: In B-2008.09-SP3, the global options are hidden
and work, but will be removed for the C-2009.06 release.
1- 42
Antenna Fixing with Layer Hopping
„ C
Concurrent
t fl
flow by
b default
d f lt
##Load design antenna rules (stored in design library)
source antenna_rules.tcl

##Run initial routing


route_opt –initial_route_only

##Perform postroute optimizations


route_opt –skip_initial_route

##
##Verify
y routing
g – antenna checking
g on by
y default
verify_zrt_route

„ Zroute scripts should explicitly turn off antenna


fixing and checking if not needed
set_route_zrt_detail_options -antenna false
verify_zrt_route –antenna false

„ Classic router scripts tended to turn antennas on


sequentially
1- 43
insert_zrt_redundant_vias –list_only

Redundant via optimization will attempt to replace the following vias:

VIA12 -> VIA12_2x1(r) VIA12_2x1 VIA12_1x2(r) VIA12_1x2


VIA12(r) ->
> VIA12
VIA12_2x1(r)
2x1(r) VIA12_2x1
VIA12 2x1 VIA12_1x2(r)
VIA12 1x2(r) VIA12_1x2
VIA12 1x2
VIA23 -> VIA23_1x2 VIA23_1x2(r) VIA23_2x1 VIA23_2x1(r)
VIA23(r) -> VIA23_1x2 VIA23_1x2(r) VIA23_2x1 VIA23_2x1(r)
......

define_zrt_redundant_vias
define zrt redundant vias \
-from_via { VIA12 VIA23 VIA34 VIA45 VIA56 VIA12_OPTI VIA23_OPTI VIA34_OPTI \
VIA45_OPTI VIA56_OPTI VIA12_OPTI_SQ VIA23_OPTI_SQ VIA34_OPTI_SQ VIA45_OPTI_SQ \
VIA56_OPTI_SQ VIA67 VIA78 } \
-to_via { VIA12 VIA23 VIA34 VIA45 VIA56 VIA12 VIA23 VIA34 \
VIA45 VIA56 VIA12 VIA23 VIA34 VIA45 \
VIA56 VIA67 VIA78 } \
-to_via_x_size { 2 2 2 2 2 2 2 2 \
2 2 2 2 2 2 \
2 2 2 } \
-to_via_y_size
to via y size { 1 1 1 1 1 1 1 1 \
1 1 1 1 1 1 \
1 1 1 } \

1- 44
Prioritizing Double and Single VIA for DFM
Hidden 2008.09-SP2
Un-Hidden 2008
2008.09-
09-
SP4

„ Some vias may be better for DFM, while others are


better for routability
„ Use define_zrt_redundant_vias -to_via_weights {}
to set a priority
z Weight is 1 to 10
z Higher
g weight
g via will be tried first
z Equal weights, Zroute will prioritize based on routability

1- 45
Insert Redundant Vias

Initial Release Flow


Not persistent, set
##Define redundant via sets (optional) in any script in
define zrt redundant vias …
define_zrt_redundant_vias which you insert
redundant vias
##Route design
set_route_mode_options –zroute true
route opt –initial_route_only
route_opt initial route only

##Insert double vias before timing opt


insert_zrt_redundant_vias

##Perform postroute optimizations


route_opt –skip_initial_route

##double via insertion


insert_zrt_redundant_vias

##Report double-via rate per layer


report design -physical
report_design physical

1- 46
Insert Redundant Vias
Concurrent Flow
##Define redundant via sets (optional)
define zrt redundant vias …
define_zrt_redundant_vias Optional

##Reserve room for redundant vias


set_route_zrt_common_options \
-concurrent_redundant_via_mode reserve_space E bl postroute
Enable t t
redundant via
##Enable postroute redundant via insertion insertion at end of
set_route_zrt_common_options \ routing
gpphases
-post_detail_route_redundant_via_insertion medium

##Route design
set_route_mode_options –zroute true
Redundant
edu da vias as
route_opt –initial_route_only
will be inserted
##Perform postroute optimizations at end of
route_opt –skip_initial_route routing phases

##Report redundant via rate per layer


report_design -physical
1- 47
Automatic Redundant Via Insertion
„ Automatically inserts DVs at end of detail route or
eco route. Hidden 2007.12-SP5-2
Unhidden 2008.09-SP2

„ Sett after
S ft iinserting
ti DVDVs so th
thatt DV rate
t remains
i
nearly constant through rest of flow
„ With setting
setting, the eco route during route_opt
route opt will
re-double the vias on routing changed nets
z Extraction and timing
g effects are seen before and after
route_opt
z route_opt optimizations are based on these effects
„ set_route_zrt_common_options
z -post_detail_route_redundant_via_insertion
{ off | low | medium | high
g }
„ Include define_zrt_redundant_vias, if used, in
any script the automatic option may apply in 1- 48
Soft Concurrent Double Via
Hidden 2007.12-SP5-2
„ Soft rules to increase DV rate Unhidden 2008.09-SP4

z Reserves space for later DV to be inserted


„ set_route_zrt_common_options
-concurrent_redundant_via_mode
{ off | reserve_space}
p }
-concurrent_redundant_via_effort_level
{ low | medium | high }
-eco_route_concurrent_redundant_via_mode
{ off | reserve_space }
-eco_route_concurrent_redundant_via_effort_level
{ low | medium | high }

„ Separate controls available for normal and eco


routing
„ Run insert_zrt_redundant_vias later to insert
1- 49
Agenda

„ Zroute Technology Introduction

„ Basic Zroute Flow Overview

„ Multi-Threaded Routing

„ Example Scripts

„ Summary

1- 50
Summary
„ Zroute is IC Compiler’s brand new, super-fast,
DFM-friendly router
z Fully multi-threaded
multi threaded for near
near-linear
linear scalability of runtime
z Concurrent DRC, antenna rules, wire and via optimization
z Concurrent redundant via insertion for higher
g yyield
z Soft rule support for lithography-friendly routing
z Signal-integrity-driven and timing-driven detail routing
z Simplified flow for ease-of-use
„ Zroute is available in version B-2008.09 to all
IC Compiler users
z Co-exists with the classic IC Compiler router
z Single IC Compiler license allows up to 4 threads
„ More info: https://solvnet.synopsys.com/zroute
1- 51
Predictable Success

1- 52
Appendix

„ More Details – Getting Started With Zroute


z Technology File and Parameter Translation
z Script Conversion

This section provides addition details about getting started


with Zroute – for even more complete materials, see the
customer training materials available from your Synopsys
support representative.
representative

1- 53
Technology File Details

„ All vias that you want Zroute to use (non-pin


access) must be defined as “default vias”
ContactCode "VIA23" {
isDefaultContact = 1
…}
}

„ All routing rules must be in the technology file for


Zroute
z Rules implemented as parameters
M1FloatingParaLenForViaOffLimit
M1FloatingSpaceForViaOffLimit
z Move to technology file for both classic router and Zroute
fatWireViaKeepoutParallelLengthThreshold = PL1
fatWireViaKeepoutMaxSpacingThreshold = S1

1- 54
Default Vias and Via Regions

„ Zroute depends on the same via regions as the


classic router to access pins
z Blockage, pin, via (BPV) extraction is the same
z If a particular via type needed to access pin and via
region
g does not exist
‹ Redo BPV with the contact specified as a default via

„ For non-pin access, Zroute uses only vias defined


as “default”
z Classic router uses both default vias and vias that were
used during BPV
‹ Ideally they would be the same set – but for historic
reasons in the classic router they might not be
z Zroute definition is clearer and self
self-consistent
consistent

1- 55
Translation Example: ignoreNotchDRC

„ Most classic router scripts set the following option:


set_route_options
t t ti -same_net_notch
t t h check_and_fix
h k d fi

„ When translated you see:


Translated
l d ignoreNotchDRC
i h of
f droute
d 0 to
set_route_zrt_detail_options -ignore_drc
{{same_net_metal_space false}}

„ By default, Zroute fixes notch and gap


set_route_zrt_detail_options -ignore_drc {}
z I other
In th words,
d ththe translation
t l ti above
b and
d default
d f lt are th
the same
„ Therefore, no need to set this option in translated scripts

1- 56
Translation Example: runTimingMode

„ Classic router is controlled by parameters that are


set by other functions
„ The translate_zrt_parameters command finds
these
z No need to translate because timing is set by using
Zroute options or route_opt
„ Other parameters, such as crosstalk prevention,
are similar

1- 57
Translation Example:
Migration to Technology File
„ TSMC fat wire via enclosure rule (VIA1.EN.3.1)
DesignRule {
layer1 = "Metal1"
layer2 = "Via1"
fatWireViaKeepoutParallelLengthThreshold = PL1
fatWireViaKeepoutMaxSpacingThreshold = S1
f tWi Vi K
fatWireViaKeepoutTblSize
tTblSi = 1
fatWireViaKeepoutMinSize = (R)
fatWireViaKeepoutWidthThreshold = (W)
fatWireViaKeepoutEnclosure = (G)
}

„ Old approach in current router – detail route parameter


M1FloatingParaLenForViaOffLimit
M1FloatingSpaceForViaOffLimit

„ Starting in version A
A-2007.12-SP2,
2007 12 SP2 the classic router
warns you to move these to the technology file
1- 58
Parameter Translator – Verification
set_route_mode_options -zroute true

##Add specific Zroute options as needed based on translation


#set_route_zrt_detail_options

##No antenna fixing and non-timing-driven routing


set_route_zrt_detail_options -antenna false
set route zrt global options -timing_driven
set_route_zrt_global_options timing driven false -crosstalk_driven
crosstalk driven false
set_route_zrt_track_options -timing_driven false -crosstalk_driven false
set_route_zrt_detail_options -timing_driven false

##Run Zroute
route_zrt_auto

##Verify basic Zroute results


Do not use
verify_zrt_route –antenna false classic router
report_design –physical verify_route!
##Independent DRC
verify_drc ;# 65nm or above, or signoff_drc (2008.09), or Hercules

1- 59
Independently Verifying Routing Results

„ As part of router qualification and to check that options


are correctly set, use independent DRC checking

„ For 65 nm or above, use verify_drc as a DRC checker


z if d runs Hercules
verify_drc H l b based
d on a ttechnology
h l fil
file
conversion

„ Better – run signoff_drc (B-2008.09) or Hercules

„ Both methods also flag


g non-routing
g problems
z You might need to filter errors
‹ Power and ground routing
‹ Contents of standard cells and macros
1- 60
Script Changes

„ You should modify classic router scripts to be


Zroute focused for final implementation scripts,
i t d off depending
instead d di on parameter t translation
t l ti
z Quick script conversion is good for proof-of-concept only
z Classic router script might set parameters in several
places in script to enable features, or when needed for
routing convergence
z Running parameter translation can overwrite previous
Zroute options you have set
„ Commands mightg be reordered,, deleted,, or added
due to Zroute behavior
z Refer to the IC Compiler Recommended Methodology with
Zroute
z More details in subsequent sections
1- 61
Common Missteps When Starting Zroute

„ Using verify_route to check results


„ Translating existing script 1:1
z Commands might have equivalence, but often not
needed since Zroute is more concurrent and simplified
z Commands used because of deficiencies in classic
router or flow
z Correct order has changed
g
„ Measuring Router QoR
z If optimize
p _wire_via is run in classic router
‹ Routing QoR is similar, but runtime is much better in
Zroute (~3-5x)
z If optimize_wire_via
optimize wire via not run in classic router
‹ Route QoR is much improved, routing runtime should still
be faster in Zroute (~2x)
1- 62
Script Changes

„ You should modify classic router scripts to be


Zroute focused for final implementation scripts,
i t d off depending
instead d di on parameter t translation
t l ti
z Quick script conversion is good for proof-of-concept only
z Classic router script might set parameters in several
places in script to enable features, or when needed for
routing convergence
z Running parameter translation can overwrite previous
Zroute options you have set
„ Commands mightg be reordered,, deleted,, or added
due to Zroute behavior
z Refer to the IC Compiler recommended methodology with
Zroute
z More details in subsequent sections
1- 63
Script Conversion Tip – Search and Repair

„ Don’t blindly convert every route_search_repair


to route_zrt_detail
route zrt detail –incremental
incremental true
„ Often classic router needed search and repair
because the flow was sequential
z Antenna fixing
z Off-grid
g p pins
„ Zroute converges faster and stops when it detects
nonconvergence
z Classic router used several iterations of search and
repair, spread through scripts, to help control runtime

1- 64
Script Conversion Tip – Redundant Vias

„ Initially classic router could not automatically


derive vias
z Some customers created complex scripts to query vias
from the database
foreach via [get_via_masters *] {
… }

„ Try to use Zroute default first


z Finds available vias and discards nonoptimal vias
z Redundant via rate should be better then using all vias
„ Use the –list_only option to customize
z Shows optimal list and all available list

1- 65
Script Conversion Tip – Wire Spreading

„ Do not use spread_zrt_wires just after initial


routing to reduce signal integrity
z Some classic router scripts do this
z Subsequent optimizations and ECO routing will be
slower
z Zroute has stronger crosstalk avoidance and timing-
driven detail routing
‹ Pre-spreading should not be needed and can produce
suboptimal results

1- 66

You might also like