Skip to content
Ch 12 / 16 Chapter 12: Post-route optimisation qualification
CHAPTER 12

Post-route optimisation qualification

After detailed routing the wires are real, so the delays are real too, and some of them are worse than the plan assumed. Post-route optimisation repairs what it can by resizing, buffering and ECO routing. This chapter checks four things: that the timing numbers come from detailed extraction in every active view, that the repair helped, that it did not damage the route it started from, and that the area and power it cost are known. It does not replace signoff timing.

12.1 Stage purpose

Chapter 11 left you with a legal, connected route and a timing baseline taken on detailed parasitics. That baseline usually still has violations. Two kinds matter here. A setup violation means data arrives too late for the capturing clock edge. A hold violation means data changes too soon after it. Both are measured as slack, the margin to the requirement. WNS is the worst negative slack and TNS is the sum of the negative slacks at the endpoints.

Routing adds a third group, which is about wires that now sit next to each other. Signal integrity, or SI, is the effect of a switching neighbour on a victim net. It shows up as extra delay, as a glitch on a quiet net, or as a slower transition. Design rule violations, or DRVs, are limits on capacitance, transition and fanout set in the constraints or the library. Do not confuse them with the geometric DRC of Chapter 11. They are electrical limits, and they share only the letters.

The command for this stage is optDesign -postRoute. The reference says it repairs design rule violations, glitch violations and setup violations on base and SI delay by default, and that it runs ECO routing unless you prohibit it. Hold fixing and power recovery are separate requests. In multi-mode multi-corner mode it works on all active views together.

Keep four ideas apart. Tool completion means the command returned. Analysis coverage means every active view, both check types and every violation class were really evaluated. Stage qualification means the results meet your project budget and the repaired route is still legal. Signoff is a later activity with its own tools, and it can disagree with the numbers here. An optimisation run that finished with a smaller TNS has completed. It has not yet been qualified.

12.2 Entry prerequisites

Must already be trueWhy
Chapter 11 is qualified: zero DRC on the whole die, regular nets connected, antenna clean, with the reports savedOptimisation starts from this route, and the saved reports are what you compare with afterwards.
The timing baseline from Chapter 11 is stored, taken with detailed extractionEvery claim of improvement in this chapter is a comparison with it.
The analysis views are active and the methodology lists themA view that is not active is not optimised and not reported.
The methodology states the extraction effort level, the analysis type, SI settings and which violations are in scopeCard O-01 compares the session against this list.
Extraction scale factors have been generatedThe reference asks for the default and detailed factors before optDesign runs.
Project budgets for setup, hold, DRV, area and power existThis book sets no such numbers.

12.3 Relevant files and analysis context

The commands read the database and the session modes, and they write report directories. By default optDesign writes its timing reports into a directory called timingReports and prefixes the files with the design name and the stage. Use -outDir and -prefix so the baseline, the intermediate runs and the final run each keep their own directory. A rerun with the same names overwrites the earlier evidence.

Three records travel with every timing number. First, the extraction mode: setExtractRCMode -engine postRoute selects detailed extraction, and -effortLevel selects native, TQuantus, IQuantus or standalone Quantus. Unless you set the effort level, optDesign -postRoute uses postRoute medium, or low without a Quantus technology file, while timeDesign -postRoute defaults to native detailed extraction. Clock DRV fixing in post-route optimisation does not work with the signoff effort level, which is meant for ECO flows after it. Second, the SI setting: timeDesign and optDesign in post-route mode turn SI-aware delay calculation on unless you set it false, and it needs on-chip variation analysis. Third, the view list, because a number without its views does not say what it covers.

Views deserve a second sentence. Auto view pruning can drop views during optimisation to save run time. The -expandedViews option restores them at the end and writes a report directory per view. The log summary can therefore list fewer views than the per-view reports do, and the overall TNS counts each endpoint once at its worst view, so it is not the sum of the per-view values.

12.4 Checks and command cards

12.4.1 Pre-stage checks

O-01Modes in force at entry
Question it answersWhich extraction engine, SI setting, analysis mode and optimisation settings will the run use?
StageBefore optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateRoute qualified in Chapter 11, session open.
Legacy UI
getExtractRCMode -engine -effortLevel -coupled
getDelayCalMode -SIAware
getAnalysisMode -analysisType -cppr
getOptMode -nonDefault
getSIMode -nonDefault
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 -coupled show the extraction engine, the post-route effort level and whether coupling is output.
-SIAware shows the SI-aware setting. It reads false by default and when set false, and timeDesign and optDesign in post-route mode turn it on unless it is set false.
-analysisType -cppr show the analysis type and the clock path pessimism removal setting.
-nonDefault lists only the settings whose value differs from the default.
Scope and viewWhole session. These settings are global, not per view.
SI needs on-chip variationSI-aware delay calculation requires multi-mode multi-corner mode and the analysis type onChipVariation, and SI analysis requires coupled extraction. The getter cannot tell an unset value from false, so confirm SI delay in the run summary and search the scripts for setDelayCalMode -SIAware false.
Effect on sessionreads or reports only
OutputValues on the console.
Fields that matterThe engine and effort level, coupling on, the analysis type on-chip variation, and a non-default list that matches the methodology.
HealthyEngine and effort level as the methodology says, on-chip variation and coupling on, and non-default settings equal to the methodology list.
WarningA non-default optimisation setting that nobody can explain.
Hard stopThe analysis type is not on-chip variation, coupling is off, or a script sets SI-aware false with no recorded reason.
Common misuseReading the settings after the run. A script that changed a mode during the run is then invisible. Record before running and compare after.
Root cause and fixSet the modes in the methodology order, record them, and rerun the baseline if any of them changed.
Rerun after a fixRerun O-01 after any mode change, and the baseline of O-03.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-02Analysis view coverage
Question it answersAre all the views that the methodology requires active, and does each active view have constraints that cover its checks?
StageBefore optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateViews defined in the multi-mode multi-corner setup of Chapter 3.
Legacy UI
report_analysis_views -type active
all_setup_analysis_views
all_hold_analysis_views
report_analysis_coverage -view <v>
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 active selects the active views. The values setup and hold select the views for those checks.
-view names the view that the coverage report analyses.
Scope and viewPer view. Run the coverage report once for every active view.
Effect on sessionreads or reports only
OutputA hierarchical view report, Tcl lists of view names, and a coverage report per view.
Fields that matterWhich views are active, which are setup and which are hold, and per view the numbers of met, violated and untested checks.
HealthyThe active lists equal the methodology, and no view reports untested checks that the project expects to be tested.
WarningA defined but inactive view that the methodology marks as optional, listed as not evaluated.
Hard stopA required view is inactive, or a view has untested checks that nobody can explain.
Common misuseCounting views from the optDesign log. Auto view pruning can leave a view out of the summary even though it is active.
Root cause and fixActivate the missing view in the analysis-view setup, or record why it is excluded, then repeat the baseline.
Rerun after a fixRerun O-02 after any change to the view setup.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-03Baseline timing with detailed extraction
Question it answersWhat do setup and hold look like per view before any repair, with detailed parasitics?
StageBefore optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-01 and O-02 passed.
Legacy UI
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
-postRoute runs extraction and timing analysis at the post-route stage. Early Global Route does not run in this mode.
-expandedViews adds a report directory for every active view.
-outDir names the directory that receives the reports.
-hold restricts the run to hold timing.
Scope and viewAll active views, setup and hold as separate runs.
Setup and hold are separateThe timeDesign run reports setup unless -hold is given. Run both, and read each against its own views.
Effect on sessionchanges analysis configuration; writes files; runs an expensive analysis
OutputSummary and path reports in the chosen directory, with one subdirectory per view.
Fields that matterWNS, TNS, number of violating paths and all paths per view, DRV counts, and the list of views in the summary.
HealthyEvery required view appears in the per-view reports, and the numbers equal the Chapter 11 baseline if nothing changed since.
WarningThe numbers differ from the Chapter 11 baseline with no recorded reason, for example a changed extraction mode.
Hard stopA required view is missing, which leaves it NOT EVALUATED, or the log shows no detailed extraction.
Common misuseOverwriting the baseline directory by reusing its name. Use a fresh -outDir for each run.
Root cause and fixFix the mode or the view setup, and rerun with a new directory.
Rerun after a fixRerun after any reroute or mode change.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

12.4.2 Post-stage checks

O-04Post-route optimisation run
Question it answersDid post-route optimisation of DRV, glitch and setup violations finish, and what do its summary lines say?
StageAfter the baseline
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-01 to O-03 passed and the baseline is stored.
Legacy UI
optDesign -postRoute -expandedViews -outDir <dir> -prefix <p>
optDesign -postRoute -drv
optDesign -postRoute -incr
optDesign -postRoute -noEcoRoute
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
-postRoute selects the stage after routing.
-expandedViews -outDir -prefix write per-view reports to a named directory with a named prefix.
-drv corrects max_cap and max_tran violations only. It cannot be used with -incr.
-incr optimises setup incrementally on the paths that still violate. An earlier optDesign run on all path groups must exist.
-noEcoRoute prohibits ECO routing during the run.
Scope and viewAll active views, the whole design. -selectedNets can limit -drv and -hold runs.
Fanout and SI slewThe reference says post-route mode does not fix maximum fanout violations unless setOptMode -opt_fix_fanout_load is set, and SI slew violations only if -opt_post_route_fix_si_transitions is true. Record both settings. Set the fanout option from the first optDesign -preCTS call onward. In post-route mode -incr works only on high-effort path groups. By default post-route optimisation also calls ccopt_pro to repair clock DRVs.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis
OutputA log with a final summary, report directories, and a changed database.
Fields that matterWNS, TNS and violating paths per setup view before and after, DRV counts, whether ECO routing ran, and the changes the log lists.
HealthySetup and DRV violations fall to zero or to the project budget in every active view, and the summary lists every view.
WarningViolations fall but remain in one view, with a recorded plan for -incr or for a waiver.
Hard stopWNS or TNS gets worse, a required view is missing from the summary, or ECO routing was prohibited and the route was not repaired another way.
Common misuseTreating optDesign returned as qualified. The command stops when it cannot improve, and the log summary may list fewer views than the design has.
Root cause and fixRead the per-view reports, then rerun with -incr for what remains. For DRV only, use -drv.
Rerun after a fixRerun O-03 to compare, and O-08 for the physical state.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-05Hold fixing after routing
Question it answersAre hold violations repaired in every hold view without damaging setup?
StageAfter setup is repaired
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-04 finished, and the filler cells, if any, are known to the tool.
Legacy UI
optDesign -postRoute -hold -holdVioData <name>
optDesign -postRoute -setup -hold
optDesign -postRoute -hold
setOptMode -opt_post_route_setup_recovery auto
setOptMode -opt_post_route_hold_recovery auto
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
-hold corrects hold violations and writes a summary file named prefix_hold.summary.
-holdVioData writes the top 50 remaining hold paths as text, csv and a detailed text file.
-setup -hold runs setup and hold together, which can reduce the number of ECO route passes.
-opt_post_route_hold_recovery controls the hold recovery step in these runs.
Scope and viewAll active hold views. -selectedNets and -selectedTerms can limit the repair.
Filler cellsThe reference says optDesign removes the filler cells that setFillerMode identified at the start and adds them back at the end. If filler cells exist, identify them with setFillerMode before the run.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis
OutputA hold summary file, optional violation data files, and a changed database.
Fields that matterHold WNS and TNS per view, the remaining violating paths, the reasons for hold paths left unfixed when verbose output is on, and the setup change caused by the repair.
HealthyHold violations are zero in every hold view, and setup WNS and TNS are within what the project allows.
WarningA few hold violations remain with a reason in the log, such as no room for a delay cell.
Hard stopSetup WNS or TNS degrades beyond what the project allows, or hold violations remain on paths the project requires clean.
Common misuseReading only the hold summary. Hold repair is setup aware, but by default it may degrade setup TNS (-opt_hold_allow_setup_tns_degradation defaults to true), so re-measure setup after every hold run.
Root cause and fixUse -holdVioData to list the paths that remain, set -opt_verbose true to see why, then fix them with a targeted change or a waiver.
Rerun after a fixRerun O-03 for setup and hold, and O-08.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-06Timing after optimisation, per view
Question it answersIs the final timing better than the baseline in every view, and did any view get worse?
StageAfter optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-04 and O-05 finished.
Legacy UI
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
-postRoute -expandedViews run detailed extraction and write a report directory per active view.
-outDir names the final directory, which must differ from the baseline.
-hold restricts the run to hold timing.
Scope and viewAll active views, setup and hold separately.
Same endpointsCompare counts of endpoints first. If the totals differ, the two runs did not analyse the same design, and nothing else in the comparison is safe.
Effect on sessionchanges analysis configuration; writes files; runs an expensive analysis
OutputReports per view, plus summaries for setup and for hold.
Fields that matterWNS, TNS and violating endpoints per view against the baseline, the endpoint count in both runs, and the engine and effort level used.
HealthyEvery view is equal or better than the baseline, the endpoint totals match, and the remaining violations are within the project budget.
WarningOne view improved while another got worse, for example hold repair that cost setup.
Hard stopA view has more violating endpoints than in the baseline, or the endpoint totals differ between the two runs.
Common misuseComparing the optimisation log with the baseline. Use the same command, the same views and the same extraction mode for both.
Root cause and fixFind the worst view and its paths with the path reports, then rerun O-04 with -incr or repair that group.
Rerun after a fixRerun O-06 after every optimisation step.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-07DRV and SI results
Question it answersAre the design rule violations and the SI glitches gone, and are the SI settings in force the ones the methodology expects?
StageAfter optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-06 finished and SI-aware delay calculation was on.
Legacy UI
reportTranViolation -outfile <f>
report_constraint -all_violators \
    -drv_violation_type {max_transition max_capacitance max_fanout} -view <v>
timeDesign -postRoute -drvReports -outDir <dir>
setSIMode -enable_glitch_report true
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
-outfile writes the transition violation report to a file. Run it after timeDesign or optDesign.
-drv_violation_type selects max_transition, max_capacitance or max_fanout.
-drvReports writes only design rule violation reports.
-enable_glitch_report stores the glitch data that SI glitch fixing and the report_noise command rely on.
Scope and viewPer view for report_constraint. The others cover the active views.
Glitch fixing needs dataSI glitch fixing needs the glitch report enabled, and warns if it is disabled. The default is false. With it off, timeDesign and optDesign still write the SI glitch report file, but report_noise is not available. Set it before the timing update.
Effect on sessionchanges analysis configuration; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputViolation lists and the SI glitch report file.
Fields that matterPins and ports over the transition limit, counts of max_cap, max_tran and max_fanout violations, and glitch failures.
HealthyZero DRV violations in every active view, and the glitch report lists no failures.
WarningFanout or SI slew violations outside the optimisation scope, or glitch fixing run with the glitch report disabled, listed and owned.
Hard stopMax_cap or max_tran violations remain after the run.
Common misuseAssuming a clean setup summary means clean DRVs. Slack and DRVs are separate counts, and fanout and SI slew are off by default in post-route mode.
Root cause and fixSet the missing option, for example fixing of fanout load, and rerun O-04 with -drv.
Rerun after a fixRerun O-07 after every DRV run.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-08Physical integrity before and after ECO route
Question it answersWas the route clean before optimisation, and did the optimisation and its ECO routing leave it legal, connected and similar in wire and vias?
StageBefore and after optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateRun once before optimisation and again after O-06.
Legacy UI
checkPlace <report_file>
verify_drc -limit 0 -report <f>
verifyConnectivity -type regular -report <f>
verify_antenna -report <f>
report_route -summary
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 0 removes the cap of 1000 reported violations.
-report names the report file.
-type regular checks regular wires and vias.
-summary prints only the summary tables of the route report.
Scope and viewWhole design. Use the same scope before and after, so that the two sets of reports compare.
Run it twiceRun these commands before optimisation and save the reports, then run them again afterwards. Without the first set you cannot say what optimisation changed. New wires and vias can also add antenna violations, so the antenna check is part of this card. Repeat the special-net checks of D-09 if the ECO touched the power routes.
Effect on sessionadds GUI violation markers; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputMarkers, report files and route summary tables.
Fields that matterPlacement violations, DRC and connectivity counts, wire length and via count per layer against the saved pre-optimisation values, and the new violation types.
HealthyZero placement, DRC and connectivity violations, and wire length and via count move by an amount that you expect.
WarningA few new spacing violations that ECO repair can fix, with a recheck planned.
Hard stopAny new open, short or antenna violation, or placement violations that make the optimised cells illegal.
Common misuseRunning only the timing report after optimisation. A timing improvement can come together with a route that is no longer legal.
Root cause and fixRepair with ecoRoute -fix_drc as in Chapter 11, then repeat O-06 because the repair changes wires.
Rerun after a fixRerun O-06 to O-08 after every repair.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
O-09Area and power cost, and power recovery
Question it answersHow much area and power did the repair cost, and does the project allow power recovery now?
StageAfter optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateO-08 passed.
Legacy UI
report_area -out_file <f>
report_power -outfile <f>
optPower -postRoute
setOptMode -opt_leakage_to_dynamic_ratio 0.0
optPower -postRoute
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
-out_file writes the area report to a file.
-outfile writes the power report to a file.
-postRoute runs power optimisation on the routed design.
-opt_leakage_to_dynamic_ratio sets the priority between dynamic power at 0 and leakage power at 1.
Scope and viewTop level and per hierarchy module. Power depends on the views and activity that you set up.
Only if the project uses power recoveryPer the reference, the default ratio of 1.0 optimises leakage only. Power analysis needs correct power views, library leakage data and switching activity. This book does not set those up. Power optimisation can also run inside optDesign when setOptMode -opt_power_effort is set, and -incr switches it off.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis
OutputArea and power reports, and for optPower a changed database.
Fields that matterStandard cell area per module and total power, to be compared with values taken before optimisation with the same settings.
HealthyArea and power are within the project budget, and optPower, if used, left timing and DRC checks clean.
WarningArea growth that the budget allows but that is large compared with the last project.
Hard stopArea or power above the budget, or a power run that degraded timing or created violations.
Common misuseUsing optPower to fix timing. It reduces power without degrading timing, so it is a separate step that must be followed by O-06 and O-08.
Root cause and fixRun optPower only if the project uses it, with the ratio recorded, then recheck timing and physical state.
Rerun after a fixRerun O-06 and O-08 after any optPower run.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

12.5 Required reports, artefacts and how to read them

ReportFields that support qualificationEvidence class
Mode record (O-01)engine, effort level, SI setting, analysis type, non-default settingsimplementation
View coverage (O-02)active setup and hold views, met, violated and untested checksimplementation
Baseline timing (O-03)WNS, TNS, violating paths, DRVs, per viewpreliminary
optDesign log and summary (O-04, O-05)before and after WNS and TNS, views listed, DRV counts, ECO route statusimplementation
Final timing per view (O-06)WNS, TNS and endpoint counts per view, against the baselineimplementation
DRV and glitch reports (O-07)violating pins, counts by type, glitch failuresimplementation
Physical recheck (O-08)placement, DRC and connectivity counts, wire and via totalsimplementation
Area and power reports (O-09)cell area, total power, with the settings usedpreliminary

Timing numbers from this stage are implementation evidence at best. Extraction runs at several effort levels, and signoff timing uses its own tool and parasitics. The numbers tell you whether the repair worked inside the implementation tool. They do not say the design passes signoff.

The excerpt below imitates the style of a post-route optimisation summary. Its numbers are made up, and the layout and field names in your log can differ.

Reading a post-route optimisation summarySynthetic report, not tool output
optDesign -postRoute -expandedViews -outDir rpt_final -prefix final
...
Setup views included: func_ss_setup scan_ss_setup
Hold views included:  func_ff_hold
                          before      after
Setup WNS (ns)            -0.287     -0.045
Setup TNS (ns)           -21.840     -0.150
Violating endpoints          225          6
All endpoints               4000       4000
Hold WNS (ns)              0.008      0.008
DRV max_cap                    0          0
DRV max_tran                   4          0
DRV max_fanout                 0          0
ECO route                                done
Per-view reports: rpt_final/<view>/

Read it in four passes. First, the footer and the view lists: the summary names two setup views and one hold view. If your methodology has four active views, the log has already told you something is missing, even before any number is read. Second, the counts: the endpoint totals are equal at 4,000, so both runs analysed the same design, which is the first thing to confirm.

Third, the slack: WNS improved from -0.287 to -0.045 ns and the violating endpoints fell from 225 to 6, so the repair worked, yet WNS is still negative. The stage is not qualified until those six endpoints are repaired or waived under your budget. Fourth, the DRVs and the ECO route line: four transition violations went to zero, and the line shows ECO routing ran, which makes O-08 mandatory. The figure shows the same slack picture as a histogram of the endpoints, with the counts printed on the bars.

negative slack: violating endpoints180below -0.20640-0.20 to-0.101436-0.10 to0.001,1201,0100.00 to0.101,4801,5400.10 to0.201,1751,444above 0.20Endpoint setup slack bin in ns, worst slack over the active setup viewsbefore optDesign -postRouteafter optDesign -postRouteLedger, counted from the bars (illustrative)BeforeAfterEndpoints analysed, all six bins4,0004,000Violating endpoints, three negative bins2256Worst populated binbelow -0.20-0.10 to 0.00Equal totals mean both runs counted the same endpoints, which is the first thing to check.
Figure 15. Endpoint slack before and after post-route optimisation, with a counted ledger
Read it. Six slack bins run from below -0.20 ns to above 0.20 ns. Each bin has two bars: the before run in amber and the after run in blue, with the endpoint count above each bar. The first three bins have negative slack and are shaded. The before bars in those bins add to 225 endpoints and the after bars add to 6, all in the bin from -0.10 to 0.00. Both runs count 4,000 endpoints, as the ledger shows. Values are illustrative.

Hold needs its own reading. This run did not request -hold, so the unchanged positive hold WNS is expected. It is a pass only for the view that appears in the list, and says nothing about a hold view that is missing. Section 12.7.1 shows that case.

12.6 Healthy, suspicious and hard-stop examples

FindingStatusWhy
Setup and hold zero in every active view, endpoint totals equalPASSBetter than baseline everywhere, with matching coverage.
A few setup violations remain with a planWARN / REVIEWRecord the plan, the budget and the extraction mode.
Timing run whose log shows no detailed extractionNOT EVALUATEDThe numbers do not describe the routed design.
A required view is missing from the report setNOT EVALUATEDIts checks were not evaluated.
Setup TNS worse after hold fixing, beyond the project allowanceHARD STOPThe repair damaged a result that was already measured.
Endpoint totals differ between baseline and finalHARD STOPThe comparison is not between the same designs.
New short or open after optimisation ECO routeHARD STOPThe optimised route is not legal or connected.
Glitch fixing ran with the glitch report disabledWARN / REVIEWThe tool warns, and the glitch result is not reliable.
Multi-supply optimisation checks in a single-supply blockNOT APPLICABLENo power domains exist.

12.7 Debugging, corrective action and reruns

Work from the numbers that did not move. A violation count that stays high after a run tells you which kind of repair is missing, and the table below lists the usual links.

What you seeLikely causeWhat to try
WNS unchanged after optDesignViolating paths are on a group or a view that the run did not coverCheck O-02, then rerun with -expandedViews and read the per-view reports
Setup improves, hold gets worseSetup repair shortened paths that hold neededRun the hold repair, then re-measure setup
Hold repair degrades setup TNSDelay cells added on shared endpoints, and the default allows itCheck the setting that allows setup TNS degradation and the hold recovery step
max_tran violations remainSetting off, or violations on clock netsLook at SI slew fixing and the clock DRV setting
Many glitch failuresGlitch fixing off, or run with the glitch report disabledEnable the glitch report before the timing update, rerun, and read the SI glitch report file
New DRC after optimisationECO route made new wiresRun O-08, repair with ecoRoute -fix_drc, rerun O-06

12.7.1 Worked example: a view that the summary missed

Suppose the optDesign summary of the previous section lists three views, and the methodology names five. The first move is to compare the log with the view reports of O-02 rather than to trust the log.

The matrix in Figure 16 is the result of doing that. It lists each view and asks three questions: is it active, does the summary mention it, and does it have its own report. A view that fails the third question has no evidence at all. A view that fails only the second is covered, but the log is not enough to prove it.

ViewActiveIn log summaryOwn reportWNS nsTNS nsViol.Verdictfunc_ss_setupyesyesyes-0.045-0.1506REVIEWscan_ss_setupyesyesyes0.0120.0000PASSfunc_ff_holdyesyesyes0.0080.0000PASSscan_ff_holdyesno *yes0.0210.0000PASSfunc_tt_holdnononon/an/an/aNOT EVALUATED* Not listed in the optDesign log summary. Its numbers come from the report that -expandedViews writes per view.Setup rows come from the setup run and hold rows from the hold run.Overall TNS counts each endpoint once, at its worst view, so it is not the sum of the rows.View names and numbers are illustrative.
Figure 16. Which analysis views each step covered, and the verdict per view
Read it. Five views are defined, one per row. Four are active and have their own report. The inactive view func_tt_hold has no numbers and is marked NOT EVALUATED. scan_ff_hold is active and passes, but the note marked with an asterisk says it is missing from the log summary and was found only in the per-view report. func_ss_setup is the only view that still fails, with 6 violating endpoints. Values are illustrative.

The matrix gives three different verdicts. func_ss_setup is a REVIEW: it ran and it fails. scan_ff_hold is a PASS that you could not have found from the log summary, which is why the per-view run of O-06 is required. func_tt_hold is NOT EVALUATED, and the status is not a pass. Either activate the view and rerun, or record a reason that your methodology accepts. Do not report it as met.

Decide in this order. Activate any required inactive view, rerun O-03 and O-06 with the same extraction mode, and compare endpoint counts. Then deal with func_ss_setup, as O-04 describes, using -incr. Only after that rerun the physical checks of O-08, because any further optimisation changes the route.

12.7.2 Worked example: what an ECO route does to a net

Optimisation adds buffers, and every added buffer needs a route. The reference says that when a net is modified, ecoRoute splits the wire: the part on one side of the new buffer stays with the original net and the rest is assigned to a new one. Figure 17 is a small model of this. A buffer is inserted into net N, the long M2 wire is ripped up between the two new pins, and the router reaches the buffer by going up to M3 on each side, with a via at each end of every M3 wire.

a Before optimisationt1t2t3t4t5t6c1c2c3c4c5c6c7c8c91 Pb After buffer insertion and ECO routet1t2t3t4t5t6c1c2c3c4c5c6c7c8c9DSnet Nnet VDSinoutBUFnet N1net N2net Vripped upM2 wire, horizontalM3 wire, verticalvia: dark cut, M2 and M3 enclosureM2 pinbuffer cell, M1 levelripped-up shape, removedtrack guide (P = pitch)Ledger, counted from this drawing (illustrative)BeforeAfterChangeNets in the picture, excluding V12+1Vias on the net or nets04+4Wire length, M2 plus M3 (in P)79+2M2 run beside net V (in P)53-2M3 wires crossing over net V02+2Less side-by-side run, but more wire, more vias and new crossings. Rerun extraction and timing, not only the DRC check.
Figure 17. ECO route after a buffer is inserted into net N, with the change in coupling counted
Read it. Panel a shows net N on M2 track t3 running above net V on t4 for five pitches, from c2 to c7. In panel b a buffer sits on M1 under two pins. Net N is split into N1 and N2, the wire between c4 and c6 is ripped up, and two M3 wires at c4 and c6 connect the pins to the buffer through four vias. The side-by-side run on M2 falls to three pitches, and the two M3 wires now cross over net V. The ledger counts nets, vias, wire length and the run beside V. Values are illustrative.

Read the ledger as a trade. The side-by-side run falls from 5 to 3 pitches, which usually lowers the coupling to net V. Yet the wire grows from 7 to 9 pitches, four vias appear where there were none, and two new M3 crossings add coupling of a different kind. No one of these numbers decides the timing. They are the reason the extraction and the SI analysis must be rerun after the ECO route, and the reason the timing before the repair cannot be reused.

A short sequence follows. It repeats the baseline commands under new names and then the physical checks (Chapter 11 D-09 too, if power routes changed), so the before and after reports can be compared.

Recheck sequence after post-route optimisationIllustrative values
timeDesign -postRoute -expandedViews -outDir rpt_after
timeDesign -postRoute -hold -expandedViews -outDir rpt_after_hold
verify_drc -limit 0 -report drc_after_opt.rpt
verifyConnectivity -type regular -report conn_after_opt.rpt
verify_antenna -report ant_after_opt.rpt
report_route -summary

Compare the new wire and via totals with the summary saved before optimisation, and the endpoint counts of rpt_after with the baseline. If the DRC count is above zero, repair it and restart from the first line of the sequence. A repaired wire is a changed wire, and the timing of the nets it touches is old again.

12.8 Exit criteria and stage checklist

  • Modes. The extraction engine, effort level, SI and analysis settings were recorded and equal the methodology.
  • Views. Every required view is active, appears in a per-view report, and has no unexplained untested checks.
  • Baseline. The pre-optimisation timing is stored under its own directory, with the same modes as the final run.
  • Setup. Setup violations are zero or within the project budget in every active view, with equal endpoint totals.
  • Hold. Hold violations are zero in every hold view, and setup did not degrade because of the hold repair.
  • DRV and SI. Max_cap, max_tran and, if in scope, fanout violations are zero, and glitch fixing ran with its data enabled.
  • Route. Placement, DRC, connectivity and antenna are clean after the ECO route, and wire and via totals were compared with the baseline.
  • Cost. Area and power are recorded with the settings used and are within the project budget.
  • Limits. The report states what was not evaluated, and that signoff timing is still required.

A post-route optimisation is qualified when it improved every view that matters, damaged nothing that was already clean, and states plainly what it did not evaluate. A run that only reports a smaller WNS has completed. The next chapter adds the physical finishing steps, and each of them can change timing again.

CHAPTER 12 SANITY CHECKS

12.9 Sanity check cheat sheet: Post-route optimisation

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
O-01Modes in force at entry
Before optimisation
getExtractRCMode -engine -effortLevel -coupled
getDelayCalMode -SIAware
getAnalysisMode -analysisType -cppr
Engine and effort level as the methodology says, on-chip variation and coupling on, and non-default settings equal to the methodology list.A non-default optimisation setting that nobody can explain.The analysis type is not on-chip variation, coupling is off, or a script sets SI-aware false with no recorded reason.
O-02Analysis view coverage
Before optimisation
report_analysis_views -type active
all_setup_analysis_views all_hold_analysis_views
report_analysis_coverage -view <v>
The active lists equal the methodology, and no view reports untested checks that the project expects to be tested.A defined but inactive view that the methodology marks as optional, listed as not evaluated.A required view is inactive, or a view has untested checks that nobody can explain.
O-03Baseline timing with detailed extraction
Before optimisation
timeDesign -postRoute -expandedViews -outDir <dir>
timeDesign -postRoute -hold -expandedViews -outDir <dir>
Every required view appears in the per-view reports, and the numbers equal the Chapter 11 baseline if nothing changed since.The numbers differ from the Chapter 11 baseline with no recorded reason, for example a changed extraction mode.A required view is missing, which leaves it NOT EVALUATED, or the log shows no detailed extraction.
O-04Post-route optimisation run
After the baseline
optDesign -postRoute -expandedViews -outDir <dir> -prefix <p>
optDesign -postRoute -drv
optDesign -postRoute -incr
Setup and DRV violations fall to zero or to the project budget in every active view, and the summary lists every view.Violations fall but remain in one view, with a recorded plan for -incr or for a waiver.WNS or TNS gets worse, a required view is missing from the summary, or ECO routing was prohibited and the route was not repaired another way.
O-05Hold fixing after routing
After setup is repaired
optDesign -postRoute -hold -holdVioData <name>
optDesign -postRoute -setup -hold
optDesign -postRoute -hold
Hold violations are zero in every hold view, and setup WNS and TNS are within what the project allows.A few hold violations remain with a reason in the log, such as no room for a delay cell.Setup WNS or TNS degrades beyond what the project allows, or hold violations remain on paths the project requires clean.
O-06Timing after optimisation, per view
After optimisation
timeDesign -postRoute -expandedViews -outDir <dir>
timeDesign -postRoute -hold -expandedViews -outDir <dir>
Every view is equal or better than the baseline, the endpoint totals match, and the remaining violations are within the project budget.One view improved while another got worse, for example hold repair that cost setup.A view has more violating endpoints than in the baseline, or the endpoint totals differ between the two runs.
O-07DRV and SI results
After optimisation
reportTranViolation -outfile <f>
report_constraint -all_violators \ -drv_violation_type {max_transition max_capacitance max_fanout} -view <v>
timeDesign -postRoute -drvReports -outDir <dir>
Zero DRV violations in every active view, and the glitch report lists no failures.Fanout or SI slew violations outside the optimisation scope, or glitch fixing run with the glitch report disabled, listed and owned.Max_cap or max_tran violations remain after the run.
O-08Physical integrity before and after ECO route
Before and after optimisation
checkPlace <report_file>
verify_drc -limit 0 -report <f>
verifyConnectivity -type regular -report <f>
Zero placement, DRC and connectivity violations, and wire length and via count move by an amount that you expect.A few new spacing violations that ECO repair can fix, with a recheck planned.Any new open, short or antenna violation, or placement violations that make the optimised cells illegal.
O-09Area and power cost, and power recovery
After optimisation
report_area -out_file <f>
report_power -outfile <f>
optPower -postRoute
Area and power are within the project budget, and optPower, if used, left timing and DRC checks clean.Area growth that the budget allows but that is large compared with the last project.Area or power above the budget, or a power run that degraded timing or created violations.
CHAPTER 12 CHEAT SHEET

12.10 Command cheat sheet: Post-route optimisation

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

CommandWhat it produces
Modes in force at entry
getExtractRCMode -engine -effortLevel -coupledThe extraction engine, the post-route effort level and whether coupling capacitance is output. Record them with every timing report.
getDelayCalMode -SIAwareThe SI-aware setting. It reads false by default and when set false, but timeDesign and optDesign -postRoute turn it on unless you set it false.
getAnalysisMode -analysisType -cpprThe analysis type and the clock path pessimism removal setting.
getOptMode -nonDefaultOnly the optimisation settings that are not default. This is the optimisation record for the run manifest.
setExtractRCMode -engine postRoute -effortLevel mediumChanges the session. Selects detailed extraction at medium effort (TQuantus, needs a Quantus technology file). Set it before the baseline run and keep it.
setAnalysisMode -analysisType onChipVariation -cppr bothChanges the session. The reference recommends on-chip variation with clock path pessimism removal for post-route optimisation.
View coverage
report_analysis_views -type activeA hierarchical report of the active views with their modes and corners.
all_setup_analysis_viewsA Tcl list of the active setup views.
all_hold_analysis_viewsA Tcl list of the active hold views.
report_analysis_coverage -view <v>Met, violated and untested check counts for one view. Run it per view.
Timing reports
timeDesign -postRoute -outDir <dir>Native detailed extraction by default and setup timing analysis, with reports written to the directory. No Early Global Route runs in this mode.
timeDesign -postRoute -hold -outDir <dir>The same for hold only.
timeDesign -postRoute -expandedViews -outDir <dir>Adds one report directory per active view, restoring views that auto view pruning removed.
timeDesign -postRoute -drvReports -outDir <dir>Design rule violation reports only, without the path reports.
Optimisation runs
optDesign -postRouteChanges the database. Post-route optimisation of design rule violations, glitch and setup violations, on base and SI delay by default.
optDesign -postRoute -holdChanges the database. Repairs hold violations after routing and writes a hold summary file.
optDesign -postRoute -setup -holdChanges the database. Setup and hold in one command, which can reduce the number of ECO routing passes.
optDesign -postRoute -drvChanges the database. Corrects maximum capacitance and maximum transition violations only, leaving setup and hold alone.
optDesign -postRoute -incrChanges the database. Incremental setup optimisation on the paths that still violate. In post-route mode it covers only high-effort path groups and switches power optimisation off.
optDesign -postRoute -noEcoRouteChanges the database. Prohibits the ECO routing that post-route optimisation normally performs. Use it only if you route the changes another way.
optDesign -postRoute -expandedViews -outDir <dir> -prefix <p>Changes the database. Writes per-view reports for all active views into the chosen directory with the chosen prefix.
Settings that steer optimisation
setOptMode -opt_fix_fanout_load trueChanges the session. Lets optimisation correct fanout load violations, which post-route mode does not fix by default. Set it from the first optDesign -preCTS call.
setOptMode -opt_post_route_fix_si_transitions trueChanges the session. Lets post-route optimisation fix SI slew violations, which it does not fix by default.
setOptMode -opt_hold_allow_setup_tns_degradation falseChanges the session. Stops hold repair from degrading setup total negative slack. The default is true, which allows the degradation.
setOptMode -opt_verbose trueChanges the session. Writes more optimisation detail to the log, including reasons for hold violations left unfixed.
DRV and SI results
reportTranViolation -outfile <f>Pins and ports that exceed the transition constraints, written to a file. Run it after timeDesign or optDesign.
report_constraint -all_violators -drv_violation_type {max_transition max_capacitance max_fanout} -view <v>Every violating pin for the three design rule types in one view.
setSIMode -enable_glitch_report trueChanges the session. Stores glitch data for report_noise and SI glitch fixing, which warns when it is off.
Physical integrity after optimisation
checkPlace <report_file>Placement violations of fixed and placed cells, with markers and a report file.
verify_drc -limit 0 -report <f>Geometry violations without the 1000 cap, with markers and a report file.
verifyConnectivity -type regular -report <f>Opens, dangling wires, unconnected pins and loops on regular routing.
verify_antenna -report <f>Process antenna and maximum floating area violations on the routed design.
report_route -summaryWire length per layer and via count per cut layer, to compare with the pre-optimisation route.
Area and power
report_area -out_file <f>The standard cell area per hierarchy module and for the top level, written to a file.
report_power -outfile <f>The power report, written to a file. Take it before and after with the same settings.
Power recovery, only if the project uses it
optPower -postRouteChanges the database. Swaps gates for lower-power ones or deletes buffers without degrading timing. Leakage only unless the ratio is changed.
optPower -postRoute -allowResizingChanges the database. Allows resizing for power. The command itself runs placement refinement, ECO routing and recovery, takes longer, and can still degrade timing.
setOptMode -opt_leakage_to_dynamic_ratio <r>Changes the session. A value from 0 to 1 that sets the priority between dynamic power (0) and leakage power (1).