Cadence Innovus (Legacy UI) · stage 10 of 16

Global and early routing qualification

Sanity checks and commands for the routing set-up record, early global route congestion, hotspots, layer usage, route guides, and congestion relief.

6 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

This stage covers global and early routing: recording the routing set-up, confirming route readiness and pin access, running early global route and reading its congestion reports, finding and relieving hotspots, and checking layer usage and route guides before detailed routing begins.

Sanity check cheat sheet

One row per command card. Read left to right: the check, the command that answers it, then what a healthy result, a result to review and a hard stop look like.

CardCheck and whenCommandHealthyReviewHard stop
G-01 Routing set-up record
Before earlyGlobalRoute
getRouteMode
getRouteMode -earlyGlobalEffortLevel
getDesignMode -bottomRoutingLayer
Layer range, effort level and tracks match the technology plan, and every setting is recorded. Effort level low or medium for a decision run, which the reference says gives a less accurate congestion report. A routing layer range or track definition that differs from the technology plan, so capacity is wrong before any net is routed.
G-02 Clock routing attributes
Before earlyGlobalRoute
reportRouteTypeConstraints -summary
report_route -clock
report_route -ndr
Clock nets show their NDR and shield constraints, so the router reserves the width and spacing. No clock constraints appear, so early global route would treat the clock nets as ordinary wires. Clock nets that early global route leaves have NDR or shield requirements that the summary does not list.
G-03 Route readiness and pin access
Before earlyGlobalRoute
check_design -type route -out_file <report_file>
checkPlace <report_file>
check_library -place -cell <lib_cell> -file <report_file>
No errors, and no pin access violations on cells you cannot move. A congestion finding below the tool stop level but above your budget, or a library cell with a pin access note. Unplaced instances or pins, overlapping cells, a blockage at a pin, or pin access violations on many instances.
G-04 Early global route run and log
After the routing set-up record
earlyGlobalRoute
report_message -errors -count
report_message -warnings -count
The net count matches the design, the layer range is the planned one, and overflow is within your budget in both directions. Overflow in one direction only, or ignored nets that you have not explained. Any error message, a layer range that differs from the set-up record, or a run that routed only a selected set of nets.
G-05 Overflow and congestion distribution
After earlyGlobalRoute
reportCongestion -overflow
reportCongestion -hotSpot -num_hotspot 5
reportCongestion -3d
Overflow in both directions and the maximum hotspot score are within your project budget. Small average overflow with one large hotspot, or horizontal and vertical results disagree. Maximum or total hotspot score beyond budget, or the top hotspot sits over a macro channel or a pin cluster.
G-06 Hotspot areas and the nets inside them
After G-05
reportCongestArea -num 10 -mode average -outfile <report_file>
dumpCongestArea -all <file>
dumpNetsInCongestedArea <file>
Few hot spots, each small, and none over a macro channel, a pin cluster or a blockage net area. Hot spots confined to one region that a placement or blockage change could relieve. A large hot spot over a macro channel or pin group, where no routing change inside the gcells can help.
G-07 Layer usage and track utilisation
After G-05
report_route -summary
report_route -track_utilization -layer <bottom>:<top>
report_route -track_utilization -layer <bottom>:<top> -include_regular_routes
Wire and vias sit on the planned layers, and available tracks stay above your project level on every layer. One layer carries most of the wire while the layers above it are lightly used. Wire on layers outside the planned range, or available tracks near zero on a layer in a congested area.
G-08 Route guides and the clock guide diagnostic
After G-04
saveRouteGuide -rguide <guide_file>
get_ccopt_property check_route_follows_guide
report_route -clock
The guide file is current for the nets you need, and the diagnostic was on with a minimum length that includes your clock nets. The diagnostic was off, or the minimum length is so large that the long clock nets are skipped. The guide you need was saved before the last optimisation or CTS change, so it describes routes that no longer exist.
G-09 Congestion relief and rerun
After G-06
createRouteBlk -box {<x1> <y1> <x2> <y2>} -partial <percent> -layers {<layer>}
deleteRouteBlk -name <blockage_name>
setRouteMode -reset
Overflow and hotspot score fall after the change, and no new hotspot appears next to the old one. The hotspot moves to a neighbouring area instead of disappearing. Overflow stays above budget after relief, or a partial blockage is left in the database with no record of why.

Command cheat sheet

Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.

Record the routing set-up
getRouteModeThe current setRouteMode settings, which control early global route. Record them with every congestion report.
getRouteMode -earlyGlobalEffortLevelThe congestion effort level of early global route. The default is standard, the most accurate and slowest.
getDesignMode -bottomRoutingLayerThe lowest LEF layer used by global and detail routing.
getDesignMode -topRoutingLayerThe highest LEF layer used by global and detail routing.
getDesignMode -congEffortThe congestion effort level that controls placement and place_opt_design. The default is auto.
getExtractRCMode -engineThe extraction engine. The default is preRoute, which early global route parasitics use.
report_tracks -prefer_onlyThe track definitions of each layer in DEF TRACKS format, preferred direction only. Tracks set the capacity of a gcell.
check_tracks -layer <layer> -direction HA check of offset, direction and spacing of the tracks on one layer, written to the log. Needs LEF loaded and the design placed.
Clock routing attributes
reportRouteTypeConstraints -summaryRoute type constraints per layer, per NDR and per constraint type, so you can see what clock routing the router was asked for.
getRouteMode -earlyGlobalNumTracksPerClockWireThe number of tracks early global route reserves per clock wire. The default is 0.
commit_ccopt_clock_tree_route_attributesSets isClock and isCTSClock on the clock tree nets and applies route type layers, NDR and shield. Changes the database.
setRouteMode -earlyGlobalNumTracksPerClockWire <n>Reserves n tracks per clock wire, from 0 to 8. Ignored once clock specifications are committed. Changes the session.
setAttribute -net <net> -non_default_rule <rule>Assigns a non-default rule to a net, which early global route honors. Changes the database.
Route readiness and pin access
check_design -type route -out_file <report_file>Checks routing prerequisites such as congestion, placement and pin access, and writes a Tcl dictionary of findings. Needs a placed database.
check_design -type place -out_file <report_file>Placement prerequisites such as PG rail alignment and pin access issues. Writes a file.
checkPlace <report_file>Placement violations, including pin access violations caused by pre-wires, with markers. Writes a file.
check_library -place -cell <lib_cell> -file <report_file>Cell DRC, pin access, symmetry and pin alignment of one library cell against the existing preroutes. Writes a file.
check_library -place -all_lib_cell -file <report_file>The same checks for every library cell. Writes a file.
Run early global route
earlyGlobalRouteA quick global route that estimates congestion and parasitics, with a log of overflow and wire length per layer. Changes the database.
setRouteMode -earlyGlobalEffortLevel lowFaster and less accurate congestion estimates. Changes the session; record it.
setRouteMode -resetRestores every setRouteMode parameter to its default and reports those that changed, so redo the set-up record afterwards. Changes the session.
report_message -errors -countA list of {ID count} pairs for every error ID issued.
report_message -warnings -countA list of {ID count} pairs for every warning ID issued.
getLogFileNameThe name of the current log file, where the [NR-eGR] lines are.
Congestion reports
reportCongestion -overflowAverage congestion, horizontal and vertical overflow, and a congestion distribution table.
reportCongestion -hotSpotThe local hotspot score with the maximum and total hotspot, and a table of hotspot boxes and scores.
reportCongestion -hotSpot -num_hotspot 5The same, limited to the number of hotspots you ask for.
reportCongestion -hotSpot -includeBlockageThe hotspot report with blockage area included.
reportCongestion -3dLayer-based congestion reporting from the 3D congestion map.
reportCongestArea -num 10 -mode averageUp to 10 hot spots, vertical and horizontal, each with peak overflow, location, boundary box and size in gcells.
reportCongestArea -num all -outfile <report_file>All hot spots, written to a file. The reference also states a maximum of 100 areas.
Congestion locations and nets
dumpCongestArea <file>The most congested gcells, with coordinates and track counts, in an ASCII file.
dumpCongestArea -all <file>Congestion information for every gcell, whatever its level. Writes a file.
dumpNetsInCongestedArea <file>The names of the nets in the congested area, from the early global route result. Writes a file.
dumpNanoCongestArea -all <file>The NanoRoute equivalent after routeDesign, with remaining and total tracks per gcell. Writes a file.
dbQuery -areas {{<llx> <lly> <urx> <ury>}} -objType gcellThe gcell objects that overlap the area, in microns.
setLayerPreference gcellOvflow -isVisible 1Shows routing congestion in the GUI. Changes a display preference only.
Layer usage and wire length
report_route -summaryDesign metrics, net pin statistics, wire length per layer and via counts per layer.
report_route -track_utilization -layer <bottom>:<top>Per layer, the tracks blocked by PG mesh, blockages, cells and nets, and the percentage of tracks still available.
report_route -track_utilization -layer <bottom>:<top> -include_regular_routesThe same table with tracks blocked by regular wiring counted as well.
report_route -clockRouting statistics of the clock nets.
report_route -ndrNDR statistics of nets.
report_route -net <net>The routing report for one net.
reportRouteRouting statistics for signal nets, including actual wire length and vias on each layer.
Route guides and geometry
saveRouteGuide -rguide <guide_file>The early global route result in route guide format. Writes a file.
saveRouteGuide -rguide <guide_file> -selNetFile <net_file>The same, for the nets listed in the file only. Writes a file.
get_ccopt_property check_route_follows_guideWhether CCOpt checks that detail-routed clock nets follow their CCOpt route guides. The default is true. Set it before ccopt_design.
get_ccopt_property check_route_follows_guide_min_lengthThe minimum net length for that guide diagnostic.
route_ccopt_clock_tree_netsRoutes the CCOpt clock tree nets from the CCOpt route guides, when final clock routing was disabled. Changes the database.
Relieving congestion
createRouteBlk -box {<x1> <y1> <x2> <y2>} -partial <percent> -layers {<layer>}A partial routing blockage that limits the router to the stated percent of the resource on the layer. Changes the database.
deleteRouteBlk -name <blockage_name>Deletes a routing blockage by name. Changes the database.
setRouteMode -earlyGlobalReverseDirection "(<x1> <y1> <x2> <y2>) <layer>:<layer>"Models routing in the non-preferred direction on one layer in an area. It affects the congestion value only, so it changes the estimate, not the design.
Only if the block is a partition or uses UPF
setRouteMode -earlyGlobalRoutePartitionHonorFence {<partition>}Routes the named partitions without crossing their fences. Changes the session.
setRouteMode -earlyGlobalHonorMsvRouteConstraint trueRoutes inside the preferred power domains as far as possible. Changes the session.