Detailed-route qualification
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 true | Why |
|---|---|
| Chapters 1 to 10 passed, including global routing in Chapter 10 | Routing starts from the plan and the congestion picture that Chapter 10 qualified. |
| Placement is legal and power structures are routed | Overlapping cells make pins short each other. Pins under power routes cannot be reached. |
| The clock tree is built and the analysis views are active | Timing-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 cell | Check D-01 compares the session against this list. |
| Project budgets for remaining violations, multi-cut via share and wire length exist | This 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
| Question it answers | Is the design ready to route, and which NanoRoute settings will the run use? |
|---|---|
| Stage | Before routing |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | Whole design. The mode settings are global to the session. |
| Stop condition | The 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 session | adds GUI violation markers; writes files. Some commands in this card only read or report. |
| Output | A 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 matter | Unplaced instances, overlapping cells, pin spacing, blockages at pin locations, congestion, track offset and direction problems, and the non-default route parameters. |
| Healthy | check_design reports no errors, tracks are clean, and the non-default route settings equal the methodology list. |
| Warning | Congestion findings that have been reviewed, or a non-default setting that nobody can explain. |
| Hard stop | check_design errors, unplaced instances, overlapping cells or faulty tracks. Routing on top of these multiplies violations. |
| Common misuse | Reading 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 fix | Fix the placement, track or pin problem that the report names, and align the settings with the methodology. |
| Rerun after a fix | Rerun D-01, and the placement checks if placement changed. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
11.4.2 Post-stage checks
| Question it answers | Did detailed routing finish, and what do the log summary lines say about violations, opens and wire length? |
|---|---|
| Stage | After routeDesign |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | D-01 passed and routeDesign has finished. |
| Legacy UI | setNanoRouteMode -route_detail_end_iteration <n> routeDesign |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | Whole design. A rerun can be limited to selected nets or an area. |
| Clock nets | routeDesign 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 session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis |
| Output | Log 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 matter | Violations 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. |
| Healthy | Violation counts fall at each pass to zero, and there is no open-net warning. |
| Warning | A few markers remain in a known location, such as a macro boundary, with a written plan. |
| Hard stop | Any open net, or a violation count that stops falling. The reference suggests checking congestion above 1,000 violations. |
| Common misuse | Treating 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 fix | Read 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 fix | Rerun routeDesign after the cause is fixed, then D-02 to D-10. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | How much wire and how many vias did the route use, layer by layer? |
|---|---|
| Stage | After routing |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Detailed routing finished. |
| Legacy UI | report_route -summary reportRoute |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | Signal nets. Power routes are checked in D-09. |
| Detour measure | reportWire 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 session | reads or reports only |
| Output | Tables on the console and in the log. |
| Fields that matter | Net and instance counts, nets by terminal count, wire length per layer, via count per cut layer, and the net length distribution. |
| Healthy | 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. |
| Warning | Wire length or via count that differs noticeably from the last route of the same design. |
| Hard stop | The net count differs from the expected count, or a layer outside the allowed routing range carries wire. |
| Common misuse | Reading the totals as quality. Statistics describe what exists, not whether it is legal or connected. |
| Root cause and fix | Investigate with D-04 and D-06 before the numbers are used for anything else. |
| Rerun after a fix | Rerun after every reroute. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is the routed geometry free of design rule violations, and which categories remain? |
|---|---|
| Stage | After routing and after every repair |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Detailed routing finished. |
| Legacy UI | verify_drc -limit 0 -report <f> get_verify_drc_mode |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | Whole die by default. -area and -layer_range restrict it. Placed instances only. |
| Settings persist | set_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 session | adds GUI violation markers; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | Violation markers in the database and a report file. |
| Fields that matter | The 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. |
| Healthy | Zero violations with the limit removed, under recorded verify_drc settings. |
| Warning | Remaining violations of one type in one place, each with an owner and a waiver. |
| Hard stop | Any short. A count equal to the limit is NOT EVALUATED, because the list is cut off and the true count is unknown. |
| Common misuse | Reading 1000 as the total, or taking a clean result from a restricted -area or -layer_range as whole-design evidence. |
| Root cause and fix | Rerun with -limit 0 and no area restriction. Repair marked violations with D-05. |
| Rerun after a fix | Rerun D-04 on the whole die after every repair. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Can the remaining markers be fixed without rerouting the whole design? |
|---|---|
| Stage | After D-04 finds violations |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Markers exist from D-04 and there are no open nets. |
| Legacy UI | ecoRoute -fix_drc verify_drc -limit 0 -report <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | The marked violations. A region or a layer range can be given. |
| Open nets | The 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 session | adds GUI violation markers; updates the design database; writes files; runs an expensive analysis |
| Output | A changed database and the router log, then new markers from the recheck. |
| Fields that matter | The violation count before and after, a message that the repair reverted, and any open-net error. |
| Healthy | The count falls to zero after the repair, confirmed by the D-04 recheck. |
| Warning | The count falls but not to zero, and the rest sit in congested areas. |
| Hard stop | The repair reverts, errors out because of open nets, or the recheck shows a new violation type. |
| Common misuse | Running clearDrc first. The router works from the markers, so clearing them removes its work list. |
| Root cause and fix | Fix open nets first. For a stubborn cluster, delete the violating regular wires with editDelete -nets |
| Rerun after a fix | Rerun D-04 to D-10, because a repair can change connectivity, vias, antenna results and timing. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is every regular net connected end to end, with no opens, dangling wires, unconnected pins or loops? |
|---|---|
| Stage | After routing and after every repair |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design routed. |
| Legacy UI | verifyConnectivity -type regular -report <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | All 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 session | adds GUI violation markers; writes files |
| Output | Markers in the database and a report file. |
| Fields that matter | Counts of opens, dangling wires (geometrical antennas), unconnected pins and loops, and the nets involved. |
| Healthy | Zero violations of every type, and the count is below the error limit. |
| Warning | Dangling wires that affect no connection, reviewed and either removed or waived. |
| Hard stop | Any open or unconnected pin on a signal net. The net is not electrically complete. |
| Common misuse | Using -noOpen, -noAntenna or -noUnroutedNet to obtain a clean report. Each switch hides a category. |
| Root cause and fix | For opens, run check_tracks and review pin modelling, then reroute the net. |
| Rerun after a fix | Rerun D-06 after any reroute. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Do any routed nets violate the process antenna rules or the maximum floating area? |
|---|---|
| Stage | After routing, before filler and finishing |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Signal nets routed, and the LEF holds antenna keywords. |
| Legacy UI | verify_antenna -report <f> verify_antenna -detailed -report <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | Whole design. -use and -nets narrow it to net types or named nets. |
| Command name | Older 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 session | adds GUI violation markers; writes files; runs an expensive analysis |
| Output | Markers and a report file. |
| Fields that matter | Per 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. |
| Healthy | No violations, and the library supplied antenna data so that the check had something to test. |
| Warning | Violations only on nets the router can still repair with diodes and layer changes. |
| Hard stop | Violations remain after the repair pass, or no antenna data exists, so an empty report proves nothing. |
| Common misuse | Confusing this check with the dangling-wire antennas that verifyConnectivity reports. The two checks are different. |
| Root cause and fix | Keep -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 fix | Rerun D-04, D-06 and D-07 after every antenna repair. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | How many vias are single-cut, and does the multi-cut share meet the project budget? |
|---|---|
| Stage | After routing |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Detailed routing finished. |
| Legacy UI | report_via -regular report_route -multi_cut |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | All regular vias. -on_clock_nets and -on_selected_nets narrow it. |
| Redundant via terms | A 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 session | reads or reports only |
| Output | A table per cut layer with single-cut, multi-cut and total counts. |
| Fields that matter | Single-cut count and percentage, multi-cut percentage and total vias for each cut layer. |
| Healthy | The multi-cut share on each layer meets the project budget, and the total via count is close to the last route. |
| Warning | A multi-cut share below budget on upper layers only, with a plan for post-route via optimisation. |
| Hard stop | A layer that must be redundant is mostly single-cut, or the via count jumps with no design change. |
| Common misuse | Running 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 fix | Raise the multi-cut effort with setNanoRouteMode and route again, or run routeDesign -viaOpt on a DRC-clean design, then recheck. |
| Rerun after a fix | Rerun D-08 and D-04 after any via optimisation. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Are the power and ground nets still connected and DRC clean after signal routing? |
|---|---|
| Stage | After routing |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Power 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | The named PG nets. |
| Only if the block uses UPF | Repeat 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 session | adds GUI violation markers; writes files; runs an expensive analysis |
| Output | Markers and report files. |
| Fields that matter | Opens and unconnected PG pins per net, DRC violations on special routes, and missing vias where power routes on adjacent layers cross. |
| Healthy | No opens, no special-route violations and no missing power vias, matching the result recorded after power planning. |
| Warning | Violations only at blocks that the power plan lists as exceptions, each with an owner. |
| Hard stop | An open on a power net, a missing via at a power crossing, or a short between signal and special routing. |
| Common misuse | Assuming 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 fix | Repair the power vias, or reroute the offending signal nets, then rerun D-04, D-06 and D-09. |
| Rerun after a fix | Rerun D-09 after any reroute that touches the power nets. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is the timing picture built on detailed parasitics, and what does it look like before post-route optimisation? |
|---|---|
| Stage | After routing and the checks above |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Routing 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not 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 view | All active views. Chapter 12 adds one report per view. |
| Baseline for Chapter 12 | Keep 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 session | changes analysis configuration; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | Setup and hold summaries, path reports per group and DRV reports in the directory. |
| Fields that matter | The extraction engine and effort level, the views included in the summary, WNS, TNS, violating paths, DRV counts and density. |
| Healthy | The log shows detailed extraction with the effort level recorded, every active view is reported, and the numbers are stored as the baseline. |
| Warning | Violations that Chapter 12 is expected to repair, with the extraction mode recorded. |
| Hard stop | The log shows no detailed extraction, or a required view is missing. Those numbers are NOT EVALUATED for the routed design. |
| Common misuse | Reading 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 fix | Set the effort level and the views, and rerun. |
| Rerun after a fix | Rerun after any reroute or repair. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
11.5 Required reports, artefacts and how to read them
| Report | Fields that support qualification | Evidence class |
|---|---|---|
| Route log summary (D-02) | violations per pass, open nets, wire length against half perimeter, violation table by layer and type | implementation |
| report_route -summary (D-03) | net and instance counts, wire length and via count per layer | implementation |
| verify_drc report (D-04) | count against the limit, violations by layer and type, verify_drc settings | implementation |
| verifyConnectivity report (D-06) | opens, dangling wires, unconnected pins, loops | implementation |
| verify_antenna report (D-07) | antenna ratios per net and layer, floating area | implementation |
| report_via -regular (D-08) | single-cut and multi-cut counts per cut layer | implementation |
| Power-net checks (D-09) | opens, special-route violations, missing power vias | implementation |
| timeDesign -postRoute summary (D-10) | extraction mode, views included, WNS, TNS, DRVs | preliminary |
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.
#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
| Finding | Status | Why |
|---|---|---|
| Route complete, zero DRC with the limit removed, no open nets | PASS | Clean against the recorded verify_drc settings, and connected, on the whole die. |
| verify_drc count equals the limit | NOT EVALUATED | The list is truncated, so the true count is unknown. |
| Open nets listed in the route log | HARD STOP | Those nets have no complete route. |
| Any short remains | HARD STOP | A short joins two nets. |
| A few spacing markers, waived and owned | WARN / REVIEW | Record the waiver and recheck after any change. |
| Antenna violations remain after repair | HARD STOP | The stage cannot pass with known antenna violations. |
| Missing vias at power crossings | HARD STOP | The power grid is weaker than designed. |
| Timing run whose log shows no detailed extraction | NOT EVALUATED | The numbers do not describe the routed design. |
| Power-domain routing checks in a single-supply block | NOT APPLICABLE | No 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 see | Likely cause | What to try |
|---|---|---|
| Many violations on Metal1 and Metal2 | Pin access, wrong track definitions or overlapping cells | Run checkPlace and check_tracks, then fix the library, tracks or placement |
| Many violations on upper layers | Large vias, with the track pitch below the line-to-via distance | Align the tracks to at least the line-to-via pitch |
| Count does not fall from pass to pass | Congestion, or a data problem | Stop and view congestion, then return to placement or the floorplan |
| Open nets | Pins not on tracks, pin modelling problems, or conflicting route settings | Run check_tracks, then review the settings and the library |
| Antenna violations | Long wires on low layers, with no diode or layer change | Enable 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.
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.
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.
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.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| D-01 | Route readiness and mode record Before routing | check_design -type route -out_file <f>check_tracksgetDesignMode -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-02 | Route 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-03 | Route statistics After routing | report_route -summaryreportRoute | 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-04 | DRC 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-05 | Repair marked violations by ECO route After D-04 finds violations | ecoRoute -fix_drcverify_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-06 | Regular-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-07 | Process 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-08 | Via counts and redundant via status After routing | report_via -regularreport_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-09 | Special-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-10 | Timing after route and parasitic status After routing and the checks above | getExtractRCMode -engine -effortLeveltimeDesign -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. |
11.10 Command cheat sheet: Detailed route
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| Command | What 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_tracks | A log report of track problems: offset, direction, spacing, and pins that are off track or under a power stripe. |
getDesignMode -bottomRoutingLayer -topRoutingLayer | The routing layer range for global and detail routing. It is a design mode setting, so getNanoRouteMode does not show it. |
getNanoRouteMode -nonDefault | Only 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_driven | The 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 true | Changes the session. Makes routing timing driven. routeDesign already does this by default. |
setNanoRouteMode -route_with_si_driven true | Changes the session. Adds SI-driven routing on top of timing-driven routing. |
setNanoRouteMode -route_detail_fix_antenna true | Changes 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 true | Changes 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 medium | Changes the session. Raises the effort for double-cut vias during routing, at some cost in run time. |
| Route runs | |
|---|---|
routeDesign | Changes the database. Global and detailed routing in one command, with timing-driven and SI-driven routing by default. |
globalRoute | Changes the database. Global routing only: assigns nets to global routing cells and prints the congestion table in the log. |
detailRoute | Changes the database. Detailed routing on the globally routed design, including search and repair. |
detailRoute -select | Changes 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_iteration | Changes the session. Returns the end iteration to its default so that post-route optimisation runs. |
routeDesign -viaOpt | Changes the database. Post-route via optimisation, which may create violations and then runs search and repair. |
routeDesign -wireOpt | Changes the database. Post-route wire widening, shrinking and spreading, controlled by the post-route wire settings. |
setNanoRouteMode -route_with_eco true | Changes the session. Makes routeDesign work in ECO mode, completing partial routes and keeping existing wires. |
| Route statistics | |
|---|---|
report_route -summary | Summary tables: object counts, nets by pin count, wire length per layer, via count per cut layer, net length statistics. |
reportRoute | Routing statistics for signal nets, with total wire length and via count for each layer in the last paragraph. |
reportRoute -clock | The 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 -summary | A 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_mode | The 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. |
clearDrc | Changes the database. Removes all DRC markers. Do not use it before ecoRoute, which works from the existing markers. |
| Repair | |
|---|---|
ecoRoute -fix_drc | Changes 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_antenna | Changes the database. Repairs marked violations and fixes antenna issues in the same pass. |
editDelete -nets <net> -regular_wire_with_drc | Changes 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> -all | Changes the database. Creates power connections, needed for antenna diodes that the router added. |
| Vias | |
|---|---|
report_via -regular | Single-cut and multi-cut counts and percentages for each cut layer of regular routing. |
report_via -special | The same table for special routing vias. |
report_via -detail | A per-via-definition listing with single-cut and total counts. |
report_route -multi_cut | The 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 -effortLevel | The extraction engine and the post-route effort level that timing will use. |
setExtractRCMode -engine postRoute -effortLevel medium | Changes the session. Selects detailed extraction at the medium effort level (TQuantus), which needs a Quantus technology file. Record the choice with the reports. |
extractRC | Runs 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. |