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.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| G-01 | Routing set-up record Before earlyGlobalRoute |
getRouteModegetRouteMode -earlyGlobalEffortLevelgetDesignMode -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 -summaryreport_route -clockreport_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 |
earlyGlobalRoutereport_message -errors -countreport_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 -overflowreportCongestion -hotSpot -num_hotspot 5reportCongestion -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 -summaryreport_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_guidereport_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 | |
|---|---|
getRouteMode | The current setRouteMode settings, which control early global route. Record them with every congestion report. |
getRouteMode -earlyGlobalEffortLevel | The congestion effort level of early global route. The default is standard, the most accurate and slowest. |
getDesignMode -bottomRoutingLayer | The lowest LEF layer used by global and detail routing. |
getDesignMode -topRoutingLayer | The highest LEF layer used by global and detail routing. |
getDesignMode -congEffort | The congestion effort level that controls placement and place_opt_design. The default is auto. |
getExtractRCMode -engine | The extraction engine. The default is preRoute, which early global route parasitics use. |
report_tracks -prefer_only | The track definitions of each layer in DEF TRACKS format, preferred direction only. Tracks set the capacity of a gcell. |
check_tracks -layer <layer> -direction H | A 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 -summary | Route type constraints per layer, per NDR and per constraint type, so you can see what clock routing the router was asked for. |
getRouteMode -earlyGlobalNumTracksPerClockWire | The number of tracks early global route reserves per clock wire. The default is 0. |
commit_ccopt_clock_tree_route_attributes | Sets 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 | |
earlyGlobalRoute | A quick global route that estimates congestion and parasitics, with a log of overflow and wire length per layer. Changes the database. |
setRouteMode -earlyGlobalEffortLevel low | Faster and less accurate congestion estimates. Changes the session; record it. |
setRouteMode -reset | Restores every setRouteMode parameter to its default and reports those that changed, so redo the set-up record afterwards. Changes the session. |
report_message -errors -count | A list of {ID count} pairs for every error ID issued. |
report_message -warnings -count | A list of {ID count} pairs for every warning ID issued. |
getLogFileName | The name of the current log file, where the [NR-eGR] lines are. |
| Congestion reports | |
reportCongestion -overflow | Average congestion, horizontal and vertical overflow, and a congestion distribution table. |
reportCongestion -hotSpot | The local hotspot score with the maximum and total hotspot, and a table of hotspot boxes and scores. |
reportCongestion -hotSpot -num_hotspot 5 | The same, limited to the number of hotspots you ask for. |
reportCongestion -hotSpot -includeBlockage | The hotspot report with blockage area included. |
reportCongestion -3d | Layer-based congestion reporting from the 3D congestion map. |
reportCongestArea -num 10 -mode average | Up 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 gcell | The gcell objects that overlap the area, in microns. |
setLayerPreference gcellOvflow -isVisible 1 | Shows routing congestion in the GUI. Changes a display preference only. |
| Layer usage and wire length | |
report_route -summary | Design 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_routes | The same table with tracks blocked by regular wiring counted as well. |
report_route -clock | Routing statistics of the clock nets. |
report_route -ndr | NDR statistics of nets. |
report_route -net <net> | The routing report for one net. |
reportRoute | Routing 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_guide | Whether 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_length | The minimum net length for that guide diagnostic. |
route_ccopt_clock_tree_nets | Routes 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 true | Routes inside the preferred power domains as far as possible. Changes the session. |