Skip to content
Ch 11 / 16 Chapter 11: Detailed-route qualification
CHAPTER 11

Detailed-route qualification

Routing turns a plan into metal. A routing run that finishes is not a routing run that is clean, because the router would rather leave a short or a spacing violation than leave a net unconnected. This chapter checks the result in four ways: whether every net is connected, whether the geometry is legal, whether the via and antenna rules hold, and whether the timing picture is now built on real wires. It does not close timing. Chapter 12 does that.

11.1 Stage purpose

Routing happens in two phases. Global routing divides the die into rectangles called global routing cells, or gcells, and assigns each net to a path through them. It does not yet decide which track a wire uses. Detailed routing then lays real wires on routing tracks, following the global plan, and adds vias where a wire changes layer. During detailed routing the router runs search and repair: it finds shorts and spacing violations and reroutes the area around them inside a window that grows with each pass.

Two words recur in this chapter. Regular wires are the signal and clock wires that the router creates. Special wires are the power and ground routes made earlier by power planning. The checks treat them differently, so a report must say which of the two it covers.

The key fact for qualification is that detailed routing ends with the best result it could reach, not with a guarantee. It stops on its own when it cannot make further progress. Thus, a finished run can still hold shorts, spacing violations, open nets and antenna violations. This chapter keeps four ideas apart. Tool completion means routeDesign returned. Analysis coverage means the verification commands covered the whole die, every net type and every rule category. Stage qualification means the results meet your project budget. Signoff is a separate, later activity with its own tools and rules, and nothing in this chapter replaces it.

11.2 Entry prerequisites

Must already be trueWhy
Chapters 1 to 10 passed, including global routing in Chapter 10Routing starts from the plan and the congestion picture that Chapter 10 qualified.
Placement is legal and power structures are routedOverlapping cells make pins short each other. Pins under power routes cannot be reached.
The clock tree is built and the analysis views are activeTiming-driven routing needs timing. A missing view means that part of the design is routed blind.
The methodology states the routing layer range, via effort, antenna repair and diode cellCheck D-01 compares the session against this list.
Project budgets for remaining violations, multi-cut via share and wire length existThis book sets no such numbers.

11.3 Relevant files and analysis context

The checks read the database in memory, and routing settings live in the session. The route log is the second source of evidence, because it records what the router saw while it ran. Keep the log of the routing run with the other results, and note its file name from getLogFileName (Chapter 1).

Four properties of the verification commands shape how you run them. First, verify_drc reports at most 1000 violations unless you raise the limit, and a limit of 0 removes it. A count that equals the limit is therefore a truncated count. Second, set_verify_drc_mode settings are saved in the design and used by every later verify_drc run, so a report is only meaningful together with get_verify_drc_mode. Third, verify_drc checks only placed instances. Fourth, verifyConnectivity and the antenna check overwrite their markers on every run, whereas verify_drc updates its markers incrementally.

Timing after routing depends on the extraction mode. setExtractRCMode -engine postRoute selects detailed extraction, and -effortLevel selects the variant: low is the native engine, medium is TQuantus, high is IQuantus and signoff is standalone Quantus. Defaults depend on the process node and on whether a Quantus technology file is defined. Record the engine and the effort level with every timing report. A timeDesign -postRoute run uses native detailed extraction by default, so set the effort level explicitly before the baseline and keep it for every later run.

11.4 Checks and command cards

11.4.1 Pre-stage checks

D-01Route readiness and mode record
Question it answersIs the design ready to route, and which NanoRoute settings will the run use?
StageBefore routing
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement legal, power routed, clock tree built, views active.
Legacy UI
check_design -type route -out_file <f>
check_tracks
getDesignMode -bottomRoutingLayer -topRoutingLayer
getNanoRouteMode -nonDefault
getNanoRouteMode -route_with_timing_driven -route_with_si_driven
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-type route runs the route prerequisite checks of check_design.
-out_file writes the full list of findings.
-nonDefault lists only the NanoRoute parameters whose value differs from the default.
Scope and viewWhole design. The mode settings are global to the session.
Stop conditionThe reference says check_design returns a status that discontinues the flow when it finds an error, so a script must test for it. For congestion, its default is to stop above 0.75 percent of gcells worst over-congested. The route check also runs verify_drc internally, so DRC markers can exist before routing. Record the verify_drc mode (D-04) first. The routing layer range is a design mode setting, so read it with getDesignMode as well as getNanoRouteMode. A getNanoRouteMode read shows timing-driven and SI-driven as false by default, although routeDesign turns both on for its own run.
Effect on sessionadds GUI violation markers; writes files. Some commands in this card only read or report.
OutputA table on the console, a Tcl-format findings file from -out_file, a track report in the log, and the mode lists on the console.
Fields that matterUnplaced instances, overlapping cells, pin spacing, blockages at pin locations, congestion, track offset and direction problems, and the non-default route parameters.
Healthycheck_design reports no errors, tracks are clean, and the non-default route settings equal the methodology list.
WarningCongestion findings that have been reviewed, or a non-default setting that nobody can explain.
Hard stopcheck_design errors, unplaced instances, overlapping cells or faulty tracks. Routing on top of these multiplies violations.
Common misuseReading the settings after the run. A script that changed a mode during the run is then invisible. Record before routing and compare after.
Root cause and fixFix the placement, track or pin problem that the report names, and align the settings with the methodology.
Rerun after a fixRerun D-01, and the placement checks if placement changed.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

11.4.2 Post-stage checks

D-02Route run and log summary
Question it answersDid detailed routing finish, and what do the log summary lines say about violations, opens and wire length?
StageAfter routeDesign
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateD-01 passed and routeDesign has finished.
Legacy UI
setNanoRouteMode -route_detail_end_iteration <n>
routeDesign
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
routeDesign with no arguments runs global and detailed routing. Timing-driven and SI-driven routing are on by default, and a placement check runs first.
-route_detail_end_iteration set before routeDesign, ends detailed routing at the given pass. Pass 0 builds the initial route without search and repair, pass 1 is the first repair pass, and the default adds post-route optimisation.
Scope and viewWhole design. A rerun can be limited to selected nets or an area.
Clock netsrouteDesign changes clock net status from FIXED to ROUTED so that they can change, and it routes them first. setNanoRouteMode -route_fix_clock_nets true keeps them FIXED, and -route_route_clock_nets_first false turns off the ordering. Clock nets that were not routed with NanoRoute are skipped.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis
OutputLog lines with the violation count after each pass, open-net warnings, wire length, the half perimeter of the net bounding boxes, and a violation table by layer and type.
Fields that matterViolations per pass, the open-net count and list, total wire length against half perimeter, the violation table by layer and type, and the congestion table of the global route.
HealthyViolation counts fall at each pass to zero, and there is no open-net warning.
WarningA few markers remain in a known location, such as a macro boundary, with a written plan.
Hard stopAny open net, or a violation count that stops falling. The reference suggests checking congestion above 1,000 violations.
Common misuseTreating routeDesign returned as route complete. The router prefers a short or spacing violation to an unconnected net, so a finished run can hold both.
Root cause and fixRead the summary, then run D-04 to D-07 on the database. For open nets, run check_tracks and review pin modelling. For many violations, check congestion.
Rerun after a fixRerun routeDesign after the cause is fixed, then D-02 to D-10.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-03Route statistics
Question it answersHow much wire and how many vias did the route use, layer by layer?
StageAfter routing
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDetailed routing finished.
Legacy UI
report_route -summary
reportRoute
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-summary prints only the summary tables: object counts, nets by terminal count, wire length per layer, via count per cut layer, and net and connection length statistics.
Scope and viewSignal nets. Power routes are checked in D-09.
Detour measurereportWire defines the wire ratio of a net as its total routing length divided by the half perimeter of its bounding box. A multi-pin net exceeds 1.0 without any detour, and ratios below 1.0 occur, so use it only to compare routes. reportWire lists only nets above ratio 1.0 unless you give a threshold of 0.
Effect on sessionreads or reports only
OutputTables on the console and in the log.
Fields that matterNet and instance counts, nets by terminal count, wire length per layer, via count per cut layer, and the net length distribution.
HealthyNet and instance counts match the previous route and the nets expected to be routed, and layer totals fall in the range the project expects.
WarningWire length or via count that differs noticeably from the last route of the same design.
Hard stopThe net count differs from the expected count, or a layer outside the allowed routing range carries wire.
Common misuseReading the totals as quality. Statistics describe what exists, not whether it is legal or connected.
Root cause and fixInvestigate with D-04 and D-06 before the numbers are used for anything else.
Rerun after a fixRerun after every reroute.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-04DRC verification
Question it answersIs the routed geometry free of design rule violations, and which categories remain?
StageAfter routing and after every repair
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDetailed routing finished.
Legacy UI
verify_drc -limit 0 -report <f>
get_verify_drc_mode
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-limit sets the maximum number of reported errors. The default is 1000 and 0 removes the limit.
-report names the report file.
-check_only selects the shapes checked. regular means what the router made, special means power routes, and default means both.
Scope and viewWhole die by default. -area and -layer_range restrict it. Placed instances only.
Settings persistset_verify_drc_mode values are saved in the design. Record the output of get_verify_drc_mode with the report, because two runs with different settings check different things. verify_drc also marks only one violation per via cell, so a via-cell count is lower than the instance count.
Effect on sessionadds GUI violation markers; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputViolation markers in the database and a report file.
Fields that matterThe count against the limit, violations by layer and type, the type names such as Short, MetSpc, Notch and EolOpp, and the verify_drc settings in force.
HealthyZero violations with the limit removed, under recorded verify_drc settings.
WarningRemaining violations of one type in one place, each with an owner and a waiver.
Hard stopAny short. A count equal to the limit is NOT EVALUATED, because the list is cut off and the true count is unknown.
Common misuseReading 1000 as the total, or taking a clean result from a restricted -area or -layer_range as whole-design evidence.
Root cause and fixRerun with -limit 0 and no area restriction. Repair marked violations with D-05.
Rerun after a fixRerun D-04 on the whole die after every repair.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-05Repair marked violations by ECO route
Question it answersCan the remaining markers be fixed without rerouting the whole design?
StageAfter D-04 finds violations
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateMarkers exist from D-04 and there are no open nets.
Legacy UI
ecoRoute -fix_drc
verify_drc -limit 0 -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-fix_drc repairs only the violations that already have markers. If the violation count would increase, it returns to its starting snapshot.
Scope and viewThe marked violations. A region or a layer range can be given.
Open netsThe reference states that NanoRoute stops with an error if open nets exist when -fix_drc runs. Wires deleted for a reroute leave the net open until it is routed again. The reference lists ecoDefIn and ecoPlace as prerequisites for ECO changes. Whether -fix_drc alone needs them is not verified here.
Effect on sessionadds GUI violation markers; updates the design database; writes files; runs an expensive analysis
OutputA changed database and the router log, then new markers from the recheck.
Fields that matterThe violation count before and after, a message that the repair reverted, and any open-net error.
HealthyThe count falls to zero after the repair, confirmed by the D-04 recheck.
WarningThe count falls but not to zero, and the rest sit in congested areas.
Hard stopThe repair reverts, errors out because of open nets, or the recheck shows a new violation type.
Common misuseRunning clearDrc first. The router works from the markers, so clearing them removes its work list.
Root cause and fixFix open nets first. For a stubborn cluster, delete the violating regular wires with editDelete -nets -regular_wire_with_drc and reroute them with detailed routing.
Rerun after a fixRerun D-04 to D-10, because a repair can change connectivity, vias, antenna results and timing.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-06Regular-net connectivity
Question it answersIs every regular net connected end to end, with no opens, dangling wires, unconnected pins or loops?
StageAfter routing and after every repair
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDesign routed.
Legacy UI
verifyConnectivity -type regular -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-type regular checks regular wires and vias. Unconnected terminals of both kinds are reported whatever the type.
-report names the report file.
Scope and viewAll regular nets.
Limits and unrouted nets-error caps reported errors at 1000 by default and -warning caps warnings at 50. The documentation disagrees on whether a net with pins but no wiring is flagged as unrouted, so do not rely on this check for it. Use the open-net list of the route log and the net count of D-03. A -type regular run does not check a net that has no regular objects.
Effect on sessionadds GUI violation markers; writes files
OutputMarkers in the database and a report file.
Fields that matterCounts of opens, dangling wires (geometrical antennas), unconnected pins and loops, and the nets involved.
HealthyZero violations of every type, and the count is below the error limit.
WarningDangling wires that affect no connection, reviewed and either removed or waived.
Hard stopAny open or unconnected pin on a signal net. The net is not electrically complete.
Common misuseUsing -noOpen, -noAntenna or -noUnroutedNet to obtain a clean report. Each switch hides a category.
Root cause and fixFor opens, run check_tracks and review pin modelling, then reroute the net.
Rerun after a fixRerun D-06 after any reroute.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-07Process antenna
Question it answersDo any routed nets violate the process antenna rules or the maximum floating area?
StageAfter routing, before filler and finishing
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateSignal nets routed, and the LEF holds antenna keywords.
Legacy UI
verify_antenna -report <f>
verify_antenna -detailed -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-report names the report file. The default is design_name.antenna.rpt.
-detailed lists the antenna values for every layer of every net, including nets without a violation.
Scope and viewWhole design. -use and -nets narrow it to net types or named nets.
Command nameOlder scripts sometimes call this check verifyProcessAntenna. The command is verify_antenna, and -no_max_float_area skips the floating area part. Repair runs during search and repair and post-route optimisation. The default of -route_detail_fix_antenna is auto, which fixes only data nets during routeDesign. verify_antenna has a -limit option, so check for a truncated list.
Effect on sessionadds GUI violation markers; writes files; runs an expensive analysis
OutputMarkers and a report file.
Fields that matterPer net and layer: metal area, side area, gate area, diffusion area, partial and cumulative ratios, and the target ratio. With -detailed an asterisk marks the point of violation.
HealthyNo violations, and the library supplied antenna data so that the check had something to test.
WarningViolations only on nets the router can still repair with diodes and layer changes.
Hard stopViolations remain after the repair pass, or no antenna data exists, so an empty report proves nothing.
Common misuseConfusing this check with the dangling-wire antennas that verifyConnectivity reports. The two checks are different.
Root cause and fixKeep -route_detail_end_iteration at its default, set -route_antenna_cell_name and -route_antenna_diode_insertion true, reroute, then run globalNetConnect so that the diode power pins are connected.
Rerun after a fixRerun D-04, D-06 and D-07 after every antenna repair.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-08Via counts and redundant via status
Question it answersHow many vias are single-cut, and does the multi-cut share meet the project budget?
StageAfter routing
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDetailed routing finished.
Legacy UI
report_via -regular
report_route -multi_cut
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-regular prints the table for regular routing vias, with single-cut and multi-cut counts and percentages per cut layer.
-multi_cut prints the single-cut and multi-cut table for each layer from the route report.
Scope and viewAll regular vias. -on_clock_nets and -on_selected_nets narrow it.
Redundant via termsA multi-cut via has more than one cut in one via shape. The reference lists three replacements in order: fat double-cut, normal double-cut and fat single-cut. A fat via is a via with extended metal overhang.
Effect on sessionreads or reports only
OutputA table per cut layer with single-cut, multi-cut and total counts.
Fields that matterSingle-cut count and percentage, multi-cut percentage and total vias for each cut layer.
HealthyThe multi-cut share on each layer meets the project budget, and the total via count is close to the last route.
WarningA multi-cut share below budget on upper layers only, with a plan for post-route via optimisation.
Hard stopA layer that must be redundant is mostly single-cut, or the via count jumps with no design change.
Common misuseRunning routeDesign -viaOpt as part of the check. It changes vias and can create violations, so it is a repair with a recheck, not a report.
Root cause and fixRaise the multi-cut effort with setNanoRouteMode and route again, or run routeDesign -viaOpt on a DRC-clean design, then recheck.
Rerun after a fixRerun D-08 and D-04 after any via optimisation.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-09Special-net integrity after routing
Question it answersAre the power and ground nets still connected and DRC clean after signal routing?
StageAfter routing
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePower grid built and checked in Chapter 5, and signal routing finished.
Legacy UI
verifyConnectivity -net {VDD VSS} -type special -report <f>
verify_drc -check_only special -report <f>
verifyPowerVia -net {VDD VSS} -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-net {VDD VSS} names the power nets. Use the PG net names of your design.
-type special checks special wires and vias. Unconnected terminals of both kinds are still reported.
-check_only special reports only violations between special routes and all other shapes.
Scope and viewThe named PG nets.
Only if the block uses UPFRepeat the checks for every supply net and check that routing honours each power domain. For a flat single-supply block this part is not applicable.
Effect on sessionadds GUI violation markers; writes files; runs an expensive analysis
OutputMarkers and report files.
Fields that matterOpens and unconnected PG pins per net, DRC violations on special routes, and missing vias where power routes on adjacent layers cross.
HealthyNo opens, no special-route violations and no missing power vias, matching the result recorded after power planning.
WarningViolations only at blocks that the power plan lists as exceptions, each with an owner.
Hard stopAn open on a power net, a missing via at a power crossing, or a short between signal and special routing.
Common misuseAssuming signal routing cannot disturb power. A routed signal can short to a special wire, so check after routing and not only after power planning.
Root cause and fixRepair the power vias, or reroute the offending signal nets, then rerun D-04, D-06 and D-09.
Rerun after a fixRerun D-09 after any reroute that touches the power nets.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
D-10Timing after route and parasitic status
Question it answersIs the timing picture built on detailed parasitics, and what does it look like before post-route optimisation?
StageAfter routing and the checks above
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateRouting finished, D-04 and D-06 reviewed, views active.
Legacy UI
getExtractRCMode -engine -effortLevel
timeDesign -postRoute -expandedViews -outDir <dir>
timeDesign -postRoute -hold -expandedViews -outDir <dir>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-engine -effortLevel show the extraction engine and the effort level. postRoute is the detailed engine, and the effort level picks native, TQuantus, IQuantus or standalone Quantus.
-postRoute runs detailed extraction and timing analysis. Early Global Route does not run in this mode.
-expandedViews adds a report directory per active view and restores views removed by auto view pruning.
-outDir names the report directory.
-hold reports hold violations only.
Scope and viewAll active views. Chapter 12 adds one report per view.
Baseline for Chapter 12Keep this output unchanged in its own directory. Chapter 12 compares post-route optimisation against it. optDesign -postRoute sets its own extraction mode, postRoute medium or low without a Quantus technology file, so an unset effort level can differ between baseline and optimisation.
Effect on sessionchanges analysis configuration; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputSetup and hold summaries, path reports per group and DRV reports in the directory.
Fields that matterThe extraction engine and effort level, the views included in the summary, WNS, TNS, violating paths, DRV counts and density.
HealthyThe log shows detailed extraction with the effort level recorded, every active view is reported, and the numbers are stored as the baseline.
WarningViolations that Chapter 12 is expected to repair, with the extraction mode recorded.
Hard stopThe log shows no detailed extraction, or a required view is missing. Those numbers are NOT EVALUATED for the routed design.
Common misuseReading a clean summary as timing closure. It is a baseline with detailed parasitics, before SI repair, and covers only the views that ran.
Root cause and fixSet the effort level and the views, and rerun.
Rerun after a fixRerun after any reroute or repair.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

11.5 Required reports, artefacts and how to read them

ReportFields that support qualificationEvidence class
Route log summary (D-02)violations per pass, open nets, wire length against half perimeter, violation table by layer and typeimplementation
report_route -summary (D-03)net and instance counts, wire length and via count per layerimplementation
verify_drc report (D-04)count against the limit, violations by layer and type, verify_drc settingsimplementation
verifyConnectivity report (D-06)opens, dangling wires, unconnected pins, loopsimplementation
verify_antenna report (D-07)antenna ratios per net and layer, floating areaimplementation
report_via -regular (D-08)single-cut and multi-cut counts per cut layerimplementation
Power-net checks (D-09)opens, special-route violations, missing power viasimplementation
timeDesign -postRoute summary (D-10)extraction mode, views included, WNS, TNS, DRVspreliminary

The route log comes first because it shows how the run ended. The excerpt below is built from the style of a NanoRoute log. Its numbers are illustrative, and the exact layout and field names in your log can differ.

Reading a route log summarySynthetic report, not tool output
#Start Detail Routing.
#start initial detail routing ...
#number of violations = 412
#start 1st optimization iteration ...
#number of violations = 38
#start 2nd optimization iteration ...
#number of violations = 3
#Complete Detail Routing.
#WARNING (NR) There are 2 open nets.
#List of open nets :
# u_core/net_a
# u_core/net_b
#
#Total wire length = 340827 um.
#Total half perimeter of net bounding box = 298122 um.
# number of DRC violations = 3
# By Layer and Type:
#            MetSpc  Short  EolOpp  Totals
#   Metal2        0      1       0       1
#   Metal3        1      1       0       2
#   Totals        1      2       0       3

Read the excerpt from the bottom up. Two nets are open, which is a hard stop on its own: those nets have no complete route, whatever the violation count says. The three remaining violations are two shorts and one parallel-run spacing violation, all on Metal2 and Metal3. Shorts are the more serious kind, because they join two nets.

The trend is healthy. The count fell from 412 to 38 to 3, so each pass made progress, which is the pattern the router is designed to show. A count that stalls instead points to congestion or a data problem. Finally, the wire length is 340827 divided by 298122, or about 1.14 times the half perimeter. That ratio is a sanity number, not a limit. Compare it with the previous route of the same design, and look at the nets with the largest individual ratios if it jumps.

11.6 Healthy, suspicious and hard-stop examples

FindingStatusWhy
Route complete, zero DRC with the limit removed, no open netsPASSClean against the recorded verify_drc settings, and connected, on the whole die.
verify_drc count equals the limitNOT EVALUATEDThe list is truncated, so the true count is unknown.
Open nets listed in the route logHARD STOPThose nets have no complete route.
Any short remainsHARD STOPA short joins two nets.
A few spacing markers, waived and ownedWARN / REVIEWRecord the waiver and recheck after any change.
Antenna violations remain after repairHARD STOPThe stage cannot pass with known antenna violations.
Missing vias at power crossingsHARD STOPThe power grid is weaker than designed.
Timing run whose log shows no detailed extractionNOT EVALUATEDThe numbers do not describe the routed design.
Power-domain routing checks in a single-supply blockNOT APPLICABLENo power domains exist.

11.7 Debugging, corrective action and reruns

Group the violations before you fix any of them. The location and type usually point to the cause, and one cause can account for hundreds of markers.

What you seeLikely causeWhat to try
Many violations on Metal1 and Metal2Pin access, wrong track definitions or overlapping cellsRun checkPlace and check_tracks, then fix the library, tracks or placement
Many violations on upper layersLarge vias, with the track pitch below the line-to-via distanceAlign the tracks to at least the line-to-via pitch
Count does not fall from pass to passCongestion, or a data problemStop and view congestion, then return to placement or the floorplan
Open netsPins not on tracks, pin modelling problems, or conflicting route settingsRun check_tracks, then review the settings and the library
Antenna violationsLong wires on low layers, with no diode or layer changeEnable antenna repair with the diode cell and reroute

11.7.1 Worked example: a short between two nets

Suppose D-04 reports one short. Figure 14 is a small model of the cause and of what the router does about it. It removes the offending shape, which is called ripping up, and routes the net again around the obstacle. Every wire in the new route sits on a track centre, and each via has a dark cut with metal enclosing it on both layers. The enclosure is what makes a via use routing space beyond its cut.

a Before: marker 1 remainst1t2t3t4t5t6c1c2c3c4c5c6c7c8c91 Pb After: net B ripped up and reroutedt1t2t3t4t5t6c1c2c3c4c5c6c7c8c9A1A2B1B2net Anet Cnet B1A1A2B1B2net Anet Cnet Bripped upM2 wire, horizontalM3 wire, verticalvia: dark cut, M2 and M3 enclosureM2 pinDRC markerripped-up shape, removedtrack centre guide (P = pitch)Ledger, counted from this drawing (illustrative)BeforeAfterChangeVias on net B24+2Wire length of net B (in P)57+2M2 track length held by B (in P)3 on t33 on t2moved up one trackM3 track length held by B (in P)2 on c54 on c5, c8+2DRC markers at this spot10-1Every wire sits on a track centre. In this example one-pitch spacing between nets is legal.
Figure 14. A short between net A and net B, repaired by ripping up and rerouting net B
Read it. Panel a shows two nets on a grid of tracks. M2 runs horizontally on rows t1 to t6 and M3 runs vertically on columns c1 to c9. Net B leaves pin B1 through a via onto M3 and turns east on M2 track t3, where net A already lies. The two M2 wires overlap between c5 and c6, so marker 1 sits there. In panel b the router removes the overlapping M2 segment and its via, shown dashed, and routes net B over t2 instead. The new M3 wire at c5 crosses net A without a via, so there is no connection there. The ledger counts the cost from the drawing: two more vias and two more pitches of wire. Layer directions and pin layers are an example, not a rule. Values are illustrative.

The ledger shows why a repair is not free. Net B is now two pitches longer and carries two extra vias. Each extra via adds resistance, and a longer wire adds capacitance, so the timing of net B has changed. The repair also moved net B onto M2 track t2, one pitch from net C and, between c5 and c6, one pitch from net A. In this example that spacing is legal. In a real design, the rules decide.

The command sequence is short. Report before the repair so that you can compare, then repair and recheck on the whole die.

Repair and recheck sequenceIllustrative values
verify_drc -limit 0 -report drc_before.rpt
ecoRoute -fix_drc
verify_drc -limit 0 -report drc_after.rpt
verifyConnectivity -type regular -report conn_after.rpt

Notice what the sequence does not do. It does not clear the markers first, because ecoRoute -fix_drc works from them. It does not trust the repair either. The reference says the command returns to its starting snapshot if the count would increase, so a repair that returned silently looks the same as one that did nothing. Compare the counts in the two reports. The decision after the recheck: if both reports show zero, D-04 and D-06 pass. Then rerun D-03 and D-07 to D-10, because the new vias and wire change antenna, via and timing results. If the count stays above zero, stop and look at congestion near the marker before you try again.

11.8 Exit criteria and stage checklist

  • Readiness. check_design -type route and check_tracks were clean before routing, and the non-default route settings are recorded.
  • Completion. The route log shows no open nets and violation counts that fell to zero.
  • Geometry. verify_drc with the limit removed reports zero violations on the whole die, with the verify_drc settings recorded.
  • Connectivity. verifyConnectivity is clean on regular nets, with no category switched off.
  • Antenna. verify_antenna reports no violations, and the library carried antenna data.
  • Vias. The multi-cut share on each layer meets the project budget.
  • Power. Power-net connectivity, special-route DRC and power vias are clean.
  • Timing. The post-route timing baseline shows detailed extraction at a recorded effort level, with all active views reported, and is stored for Chapter 12.

Thus, a detailed route is qualified when it is complete, legal, connected and honest about what it did not check. A route that merely finished tends to pass every visible check until a full-die verification shows what the first pass hid. Chapter 12 starts from this baseline and repairs the remaining timing and signal integrity violations.

CHAPTER 11 SANITY CHECKS

11.9 Sanity check cheat sheet: Detailed route

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. Judge every row against your project budgets, because this book sets no universal limits.

CardCheck and whenCommandHealthyReviewHard stop
D-01Route readiness and mode record
Before routing
check_design -type route -out_file <f>
check_tracks
getDesignMode -bottomRoutingLayer -topRoutingLayer
check_design reports no errors, tracks are clean, and the non-default route settings equal the methodology list.Congestion findings that have been reviewed, or a non-default setting that nobody can explain.check_design errors, unplaced instances, overlapping cells or faulty tracks. Routing on top of these multiplies violations.
D-02Route run and log summary
After routeDesign
setNanoRouteMode -route_detail_end_iteration <n>
routeDesign
Violation counts fall at each pass to zero, and there is no open-net warning.A few markers remain in a known location, such as a macro boundary, with a written plan.Any open net, or a violation count that stops falling. The reference suggests checking congestion above 1,000 violations.
D-03Route statistics
After routing
report_route -summary
reportRoute
Net and instance counts match the previous route and the nets expected to be routed, and layer totals fall in the range the project expects.Wire length or via count that differs noticeably from the last route of the same design.The net count differs from the expected count, or a layer outside the allowed routing range carries wire.
D-04DRC verification
After routing and after every repair
verify_drc -limit 0 -report <f>
get_verify_drc_mode
Zero violations with the limit removed, under recorded verify_drc settings.Remaining violations of one type in one place, each with an owner and a waiver.Any short. A count equal to the limit is NOT EVALUATED, because the list is cut off and the true count is unknown.
D-05Repair marked violations by ECO route
After D-04 finds violations
ecoRoute -fix_drc
verify_drc -limit 0 -report <f>
The count falls to zero after the repair, confirmed by the D-04 recheck.The count falls but not to zero, and the rest sit in congested areas.The repair reverts, errors out because of open nets, or the recheck shows a new violation type.
D-06Regular-net connectivity
After routing and after every repair
verifyConnectivity -type regular -report <f>Zero violations of every type, and the count is below the error limit.Dangling wires that affect no connection, reviewed and either removed or waived.Any open or unconnected pin on a signal net. The net is not electrically complete.
D-07Process antenna
After routing, before filler and finishing
verify_antenna -report <f>
verify_antenna -detailed -report <f>
No violations, and the library supplied antenna data so that the check had something to test.Violations only on nets the router can still repair with diodes and layer changes.Violations remain after the repair pass, or no antenna data exists, so an empty report proves nothing.
D-08Via counts and redundant via status
After routing
report_via -regular
report_route -multi_cut
The multi-cut share on each layer meets the project budget, and the total via count is close to the last route.A multi-cut share below budget on upper layers only, with a plan for post-route via optimisation.A layer that must be redundant is mostly single-cut, or the via count jumps with no design change.
D-09Special-net integrity after routing
After routing
verifyConnectivity -net {VDD VSS} -type special -report <f>
verify_drc -check_only special -report <f>
verifyPowerVia -net {VDD VSS} -report <f>
No opens, no special-route violations and no missing power vias, matching the result recorded after power planning.Violations only at blocks that the power plan lists as exceptions, each with an owner.An open on a power net, a missing via at a power crossing, or a short between signal and special routing.
D-10Timing after route and parasitic status
After routing and the checks above
getExtractRCMode -engine -effortLevel
timeDesign -postRoute -expandedViews -outDir <dir>
timeDesign -postRoute -hold -expandedViews -outDir <dir>
The log shows detailed extraction with the effort level recorded, every active view is reported, and the numbers are stored as the baseline.Violations that Chapter 12 is expected to repair, with the extraction mode recorded.The log shows no detailed extraction, or a required view is missing. Those numbers are NOT EVALUATED for the routed design.
CHAPTER 11 CHEAT SHEET

11.10 Command cheat sheet: Detailed route

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

CommandWhat it produces
Route readiness and mode record
check_design -type route -out_file <f>The pre-route prerequisite checks, written to a file: unplaced instances, track rules, overlaps, pin spacing, congestion and others. Errors stop the flow. It runs verify_drc internally, so markers appear.
check_tracksA log report of track problems: offset, direction, spacing, and pins that are off track or under a power stripe.
getDesignMode -bottomRoutingLayer -topRoutingLayerThe routing layer range for global and detail routing. It is a design mode setting, so getNanoRouteMode does not show it.
getNanoRouteMode -nonDefaultOnly the NanoRoute parameters whose value is not the default. This is the route-mode record for the run manifest.
getNanoRouteMode -route_with_timing_driven -route_with_si_drivenThe current value, type and default of the timing-driven and SI-driven switches. Both default to false, although routeDesign turns them on for its own run.
setNanoRouteMode -route_with_timing_driven trueChanges the session. Makes routing timing driven. routeDesign already does this by default.
setNanoRouteMode -route_with_si_driven trueChanges the session. Adds SI-driven routing on top of timing-driven routing.
setNanoRouteMode -route_detail_fix_antenna trueChanges the session. Lets the router repair process antenna violations by layer hopping or diodes. The default auto fixes only data nets, and the end iteration must be at its default.
setNanoRouteMode -route_antenna_diode_insertion trueChanges the session. Lets the router insert antenna diode cells, named with -route_antenna_cell_name. Run globalNetConnect afterwards.
setNanoRouteMode -route_detail_use_multi_cut_via_effort mediumChanges the session. Raises the effort for double-cut vias during routing, at some cost in run time.
Route runs
routeDesignChanges the database. Global and detailed routing in one command, with timing-driven and SI-driven routing by default.
globalRouteChanges the database. Global routing only: assigns nets to global routing cells and prints the congestion table in the log.
detailRouteChanges the database. Detailed routing on the globally routed design, including search and repair.
detailRoute -selectChanges the database. Detailed routing on the selected nets only.
setNanoRouteMode -route_detail_end_iteration <n>Changes the session. Stops detailed routing at pass n, which allows the staged strategy of initial route then search and repair.
setNanoRouteMode -reset -route_detail_end_iterationChanges the session. Returns the end iteration to its default so that post-route optimisation runs.
routeDesign -viaOptChanges the database. Post-route via optimisation, which may create violations and then runs search and repair.
routeDesign -wireOptChanges the database. Post-route wire widening, shrinking and spreading, controlled by the post-route wire settings.
setNanoRouteMode -route_with_eco trueChanges the session. Makes routeDesign work in ECO mode, completing partial routes and keeping existing wires.
Route statistics
report_route -summarySummary tables: object counts, nets by pin count, wire length per layer, via count per cut layer, net length statistics.
reportRouteRouting statistics for signal nets, with total wire length and via count for each layer in the last paragraph.
reportRoute -clockThe same statistics for clock nets.
report_route -track_utilization -layer <layer range>Share of tracks blocked by power mesh, blockages and cells, per layer. Add -include_regular_routes to count tracks blocked by signal wiring.
reportWire -summaryA wire statistics report limited to its summary table. The report file is named after the top cell unless a file name is given.
DRC verification
get_verify_drc_modeThe current verify_drc settings. They are saved in the design and used by every verify_drc run.
verify_drc -limit 0 -report <f>Writes a report and creates markers. A limit of 0 removes the cap, which is 1000 by default.
verify_drc -check_only regular -report <f>Only violations that involve regular routing, which finds what the router itself caused.
verify_drc -check_only special -report <f>Only violations that involve special routes such as power stripes and rails.
verify_drc -check_short_only -report <f>Only metal shorts, with all other DRC categories skipped.
verify_drc -area {<llx> <lly> <urx> <ury>} -report <f>A check restricted to one region, used to confirm a local fix quickly.
saveDrc <f>Writes a file. Saves the current DRC markers to a file without saving the whole design.
clearDrcChanges the database. Removes all DRC markers. Do not use it before ecoRoute, which works from the existing markers.
Repair
ecoRoute -fix_drcChanges the database. Repairs the DRC violations that already have markers, and reverts if the count would increase.
ecoRoute -fix_drc -layer_range <bottom>:<top>Changes the database. The same repair limited to a layer range.
ecoRoute -fix_drc -include_antennaChanges the database. Repairs marked violations and fixes antenna issues in the same pass.
editDelete -nets <net> -regular_wire_with_drcChanges the database. Deletes the regular wires of one net that carry DRC violations, so that they can be routed again. The option works only with a net or status filter.
Connectivity and antenna
verifyConnectivity -type regular -report <f>Opens, dangling wires, unconnected pins and loops on regular routing, with markers and a report file.
verifyConnectivity -type all -report <f>The same check on regular and special wires.
verifyConnectivity -net <net> -report <f>The connectivity check for one named net.
verify_antenna -report <f>Process antenna effect and, by default, maximum floating area violations, with markers and a report file.
verify_antenna -detailed -report <f>The antenna values for every layer of every net, including nets without a violation.
verify_antenna -use signal -report <f>The antenna check on signal nets only.
globalNetConnect <net> -type pgpin -pin <pin> -allChanges the database. Creates power connections, needed for antenna diodes that the router added.
Vias
report_via -regularSingle-cut and multi-cut counts and percentages for each cut layer of regular routing.
report_via -specialThe same table for special routing vias.
report_via -detailA per-via-definition listing with single-cut and total counts.
report_route -multi_cutThe single-cut and multi-cut table for each layer from the route report.
Special-net integrity
verifyConnectivity -net {VDD VSS} -type special -report <f>Opens and unconnected pins on the power nets, checking whole special wires and vias.
verifyPowerVia -net {VDD VSS} -report <f>Missing vias where orthogonal power routes on adjacent layers cross, with markers and a report.
verifyPowerVia -stackedVia -net {VDD VSS} -report <f>Adds the check for stacked vias between non-adjacent routing layers.
Timing after routing
getExtractRCMode -engine -effortLevelThe extraction engine and the post-route effort level that timing will use.
setExtractRCMode -engine postRoute -effortLevel mediumChanges the session. Selects detailed extraction at the medium effort level (TQuantus), which needs a Quantus technology file. Record the choice with the reports.
extractRCRuns extraction with the current mode and stores the result in the RC database.
timeDesign -postRoute -expandedViews -outDir <dir>Runs native detailed extraction by default and setup timing analysis, and writes one report directory per active view.
timeDesign -postRoute -hold -expandedViews -outDir <dir>Runs the same flow for hold only.
timeDesign -postRoute -reportOnly -outDir <dir>Rewrites the reports from the extraction and timing data already in memory, without extracting again.