Extraction and signoff correlation
14.1 Stage purpose
RC extraction measures the resistance (R) and capacitance (C) of the routed wires and vias. The result is a set of parasitics that delay calculation turns into net delay and into the load seen by each cell. Innovus stores them in an RC database, written RCDB, and can write them out as SPEF, the Standard Parasitic Exchange Format, one file for each RC corner. An RC corner is a named set of process data, temperature and scale factors for extraction.
Two extractors matter in this chapter. The in-tool extractor produces the numbers that optimisation and in-tool timing use. The signoff extractor, Standalone Quantus, produces the numbers that the signoff timing run uses. Both read the same geometry, but they model the capacitance differently, and the in-tool engines trade some accuracy for speed. The gap between them is the subject of this chapter.
| Effort level | Engine | Licence named in the reference | Role in the flow |
|---|---|---|---|
| not applicable (preRoute engine) | preRoute | No Quantus licence | Fast estimate from the density of nearby wires. Coupling is not reported. Used for early timing only. |
| low | Native detailed | No Quantus licence | Detailed geometry measurement with a capacitance table. Scale factors are recommended. |
| medium | TQuantus | No Quantus licence | Implementation-phase engine for newer nodes. Needs a Quantus technology file. Scale factors are optional. |
| high | IQuantus | Quantus XL licence | Near-signoff accuracy, recommended after ECO. Supports incremental extraction. |
| signoff | Standalone Quantus | Quantus licence | Highest accuracy, used for signoff. Scale factors are not supported for this level. |
Capacitance between wires deserves a closer look, because it is where the engines differ most. Figure 20 shows one victim wire with two neighbours on the same layer and one wire above it. Each neighbour couples to the victim, and the capacitance to the substrate and to everything else is the ground capacitance. To save run time, the native extractor lumps a small coupling capacitance into the ground capacitance. Three thresholds decide which couplings are small. A filter mode combines the relative and the coupling thresholds, and the total threshold acts on its own. Lumping keeps the total capacitance almost unchanged and removes the aggressor, so the timing tool can no longer see the crosstalk delay that aggressor would cause.
This chapter keeps four things apart. Tool completion means the extraction or timing command returned. Analysis coverage means every net has parasitics in every active view and RC corner. Stage qualification means the gap between in-tool and signoff results is known and inside your project budget. Signoff is the project signoff run itself, which this chapter does not replace.
Three evidence classes are used. Preliminary evidence comes from preRoute extraction, from native extraction whose scale factors have not been checked against signoff, or from a run on an unfinished route. Implementation evidence comes from postRoute extraction and timing on the final routed database. Signoff evidence comes from Standalone Quantus extraction and the signoff timing engine, run with the project signoff setup on the final database. Whether a signoffTimeDesign run inside Innovus counts as your project signoff evidence is a project decision. A difference between two runs of different classes is a correlation result. It is not a pass.
Scale factors are the second tool. A scale factor multiplies the extracted capacitance, coupling capacitance or resistance of an RC corner, so that the native numbers move toward the signoff numbers. The ledger shows why a scale factor is not a cure for everything. The fitted cap and res factors are small and describe an engine offset. The fitted coupling factor of 1.37 describes something else: two couplings that the filter removed. Match the filter first, and fit only what is left. The factors come from one net here only to show the idea: a real fit uses every net of the SPEF pair, as generateRCFactor does.
The flow that the rest of the chapter follows is drawn in Figure 21 in Section 14.7.1.
14.2 Entry prerequisites
| Must already be true | Why |
|---|---|
| Chapters 1 to 13 passed, routing is final, fill is present and the DRC is clean | Extraction reads the final geometry. Fill changes the capacitance, as Chapter 13 shows. |
| The process node is set with setDesignMode -process | The reference states that the node assigns the default coupling thresholds, so a missing node means different filters. |
| The technology data is available: a capacitance table for native detailed extraction above 32 nm, and a Quantus technology file for the other engines and for preRoute at 32 nm and below | Each engine reads a different file, and a file for the wrong corner gives plausible but wrong numbers. |
| Signoff extraction is available, either as a Standalone Quantus licence or as signoff SPEF files from the same routed database | There is nothing to correlate against without it. |
| The constraints, views, derates, OCV method and SI settings of the signoff run are written down | Cards X-07 and X-08 compare the session against this record. |
| A project budget for the in-tool to signoff difference exists, for net C, net R and for setup and hold slack per view | This book sets no such numbers. |
14.3 Relevant files and analysis context
The inputs are the routed database, the capacitance table or Quantus technology file for each RC corner, and, when signoff extraction runs from Innovus, a layer map between the LEF names and the technology file. The reference states that the layer map is required for Standalone Quantus, and that fill needs a stream layer map as well when its data is passed to Quantus. The outputs are the RCDB in memory, saved RCDB directories, SPEF files, and the timing report directories of both runs.
Four groups of settings decide what the numbers mean: setExtractRCMode, the RC corner scale factors, setAnalysisMode with setDelayCalMode and setSIMode, and the timing derates. The derates deserve a warning. The reference states that set_timing_derate can only be used on the command line and cannot be imported as part of an SDC file. Innovus therefore takes derates only from the session, and a derate written in an SDC does not reach it. A signoff run may read derates from its own SDC or scripts, so the mismatch can run in either direction. Compare both sides.
The scale factors belong to the RC corner, so saving the design with saveDesign saves them in the view definition file. Restoring the design restores them. Thus, record the factors with every comparison, because a factor that is applied silently moves the numbers it is meant to explain.
Use the same routed database for both extractors. The reference states that for postRoute correlation the native extraction must run on the same routed design that produced the signoff SPEF. A signoff SPEF from a design that has had one more ECO is a comparison of two different designs.
14.4 Checks and command cards
14.4.1 Pre-stage checks
Before extraction, store four baselines so that a later difference can be attributed: the routed database saved with saveDesign after the fill checks of Chapter 13, the settings records of X-01 and X-07, the post-route timing baseline of Chapters 11 and 12, and the constraint and derate record of the signoff setup.
14.4.2 Post-stage checks
| Question it answers | Which engine, coupling filter and technology data will the in-tool numbers come from, and do they match the signoff extraction setup? |
|---|---|
| Stage | Before extraction |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded, process node set, RC corners defined in the MMMC setup, routing complete. No extraction is needed to read the mode. |
| Legacy UI | report_unit_parasitics -all_layers -rc_corner <rc> get_rc_corner <rc> -rcCornerAttribute getExtractRCMode -engine -effortLevel -coupled getExtractRCMode -capFilterMode -coupling_c_th -relative_c_th -total_c_th |
| 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 preRoute or postRoute, and low (native detailed), medium (TQuantus), high (IQuantus) or signoff (Standalone Quantus). The default level is low, but the reference makes TQuantus the default for 65 nm and below when a Quantus technology file is defined, so read the engine back. PreRoute reports no coupling.-coupled true outputs ground and coupling capacitance separately. The reference says false is typical for static timing and that signal integrity analysis needs true.-capFilterMode relOnly, relAndCoup or relOrCoup: how the relative and coupling thresholds combine to lump coupling to ground. The default is relOnly.-coupling_c_th, -relative_c_th, -total_c_th the three thresholds. Defaults are 3 fF, 0.03 and 5 fF unless the process node sets others. The filter mode combines the relative and coupling thresholds only. Nets below the total threshold have coupling grounded whatever the filter mode.-all_layers, -rc_corner report unit R and C for every layer of one RC corner, at minimum width and default spacing.-rcCornerAttribute stands for one attribute name per call, for example -postRoute_cap, -postRoute_res, -postRoute_xcap, -T, -cap_table or -qx_tech_file. |
| Scope and view | Extraction mode is global to the session. Unit parasitics and RC corner attributes are per RC corner. |
| Licences and scale factor defaults | Native detailed and TQuantus need no Quantus licence, IQuantus needs Quantus XL and Standalone Quantus a Quantus licence. All scale factors default to 1.0 except the clock net factors, whose default 0 means they follow the signal net factor. |
| Effect on session | reads or reports only |
| Output | The log and console show each mode parameter with its name, value, type and set-by-user flag. The unit report lists ohm per micron and fF per micron per layer. |
| Fields that matter | Engine, effort level, coupled state, filter mode and thresholds, with the set-by-user flags. Per RC corner: unit R and C per layer, scale factors, temperature and technology file names. |
| Healthy | Engine, thresholds and corner data match the signoff setup. |
| Warning | Thresholds are defaults, not compared with signoff. |
| Hard stop | Coupling off in an SI flow, or a wrong technology file. |
| Common misuse | Reading a default as a decision, or comparing unit values taken at a different width or spacing. |
| Root cause and fix | Set the project values with setExtractRCMode, or correct the corner with update_rc_corner. The reference states that TQuantus supports only relAndCoup, and that a corner change in multi-mode multi-corner mode resets timing and RC data. |
| Rerun after a fix | Rerun X-01, then X-02 and every card after it. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Did extraction run with the intended engine on the final route, and is the stored RC database the one the timing run uses? |
|---|---|
| Stage | After final route and fill |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Routing and fill final. X-01 passed. |
| Legacy UI | setExtractRCMode -engine postRoute -effortLevel <level> extractRC saveRC <name>.rcdb.d report_rcdb <name>.rcdb.d |
| 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 postRoute selects the detailed engines.-effortLevel selects the engine variant, as X-01 lists.saveRC saves the RC data in a directory named with the .rcdb.d suffix. Use it after extractRC or spefIn.report_rcdb prints the header of one flat RCDB. It cannot read several RCDBs at once. |
| Scope and view | All RC corners of the design. report_rcdb reads one saved directory. |
| Cost and side effect | extractRC is an expensive analysis and replaces the RC data in memory. Timing commands read the RC database directly, so a SPEF file is optional. reset_parasitics deletes the data and keeps the extraction mode. |
| Effect on session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | The RC database in memory, a saved .rcdb.d directory, and a header report. |
| Fields that matter | RCDB version, platform, compression, source, design name, RC corners, Coupled, Node-loc and Statistical. |
| Healthy | The header lists every active RC corner, and Coupled matches the plan. |
| Warning | RCDB saved before the last fill or ECO change. |
| Hard stop | An active RC corner is missing, or preRoute ran after routing. |
| Common misuse | Restoring an RCDB on a different data model. The reference states that RC data restores only on a system of the same bit width. |
| Root cause and fix | Set the mode, delete the old data with reset_parasitics if you need a clean start, then run extractRC again. |
| Rerun after a fix | Rerun X-02, then X-03 and every card after it. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Does every net that matters have parasitics, in every active view? |
|---|---|
| Stage | After extraction or SPEF |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Extraction run, or SPEF read in for every active RC corner. |
| Legacy UI | report_annotated_parasitics -view <view> report_annotated_parasitics -view <view> -list_not_annotated -max_missing <n> > <file> |
| 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 | -view reports one analysis view. It is valid only in multi-mode multi-corner mode.-list_not_annotated lists the nets without annotation.-max_missing limits the number of missing annotations listed. The default is 1000. |
| Scope and view | One view per call. Run it once for each active view. |
| Analysis coverage | This is the coverage check of the chapter. A clean extraction log says the engine finished. Only the annotation report says which nets it covered. |
| Effect on session | writes files. Some commands in this card only read or report. |
| Output | A summary by net type and annotation status, and optionally a list written to a file with the redirect. |
| Fields that matter | Annotated and not annotated counts for real nets, supply nets and other types. The names in the not-annotated list. |
| Healthy | Every real signal and clock net is annotated in every active view. |
| Warning | Only supply or tied nets lack annotation, each explained. |
| Hard stop | Any real signal or clock net has no annotation. |
| Common misuse | Taking a timing report as proof of coverage. A net with no annotation is not timed with its extracted wire R and C, and the report still shows a normal number. |
| Root cause and fix | Extract again or read the missing SPEF. Then inspect the broken, floating and no-driver lists for netlist and extraction mismatches. |
| Rerun after a fix | Rerun X-03 for every view, then X-08. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Can the in-tool parasitics leave the tool as SPEF, and can the signoff parasitics come in, for every RC corner? |
|---|---|
| Stage | After extraction |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | For rcOut, extraction done. For spefIn, a SPEF file for each active RC corner from the same routed database. |
| Legacy UI | rcOut -spef <name>.spef.gz -rc_corner <rc> spefIn <signoff>.spef.gz -rc_corner <rc> |
| 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 | -spef names the output SPEF file. A .gz suffix compresses it.-rc_corner, -view name the RC corner. In multi-corner mode, -view picks the corner of a view instead, and it belongs to rcOut only.-cUnit sets the capacitance unit of the output, fF or pF. The default is pF.-spef_field is for spefIn. It maps fields of a multi-value SPEF to RC corners on spefIn, in the order of the corner list. |
| Scope and view | One RC corner per rcOut call. spefIn needs a file for every active RC corner. |
| Other spefIn options | -extended reads the layer data of a Quantus extended SPEF. -scaleRC applies the postRoute scale factors of the RC corner to the SPEF read in, and -scaleNets limits that to a list of nets. Native factors applied to a signoff SPEF would move it away from signoff, so leave -scaleRC off for the comparison SPEF. |
| Effect on session | updates the design database; writes files |
| Output | A SPEF file, or parasitics annotated into the design. |
| Fields that matter | The file per corner, the unit, the corner mapping, and the annotation report after reading. |
| Healthy | One SPEF per active corner, right unit, X-03 clean. |
| Warning | SPEF exists for only some corners, so reading has not started. |
| Hard stop | SPEF from another database, or written without resistance. |
| Common misuse | Using a SPEF written with -noRes. The reference states it only speeds up third-party simulators in early stages, and that most tools expect resistance in the file. |
| Root cause and fix | Regenerate the SPEF from the final routed database, with resistance, and state the capacitance unit. |
| Rerun after a fix | Rerun X-04, X-03 and X-08. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | For one chosen net, does the difference between in-tool and signoff lie in C, in R, in coupling or in delay calculation? |
|---|---|
| Stage | After both SPEF sets |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | The same net reported from the in-tool parasitics and from the signoff parasitics. Run report_timing before reportDelayCalculation, as the reference advises, so the timing window and the aggressor slew are right. |
| Legacy UI | report_net_parasitics <net> -rc_corner <rc> reportDelayCalculation -from <pin> -to <pin> -view <view> -si |
| 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 | -rc_corner names the RC corner. It is required for report_net_parasitics.-from, -to name the arc for reportDelayCalculation. A driver output to a load input gives a net delay, and an input to an output gives a cell delay.-si adds the signal integrity detail of the arc. Add -show_all_attackers to list the small attackers as well.-view names the view in multi-mode multi-corner mode. |
| Scope and view | One net per call, one RC corner or view. spefIn annotates into the same database, so save the in-tool data with saveRC first and restore it with restoreRC to report both. Whether spefIn replaces it is not verified. |
| Why total C is not enough | The report lists the probable worst attackers in order of coupling, not every attacker. A net can match on total capacitance and still miss an attacker, which is the case in Figure 20. |
| Effect on session | writes files |
| Output | A net parasitics report, and a delay calculation report for one arc. |
| Fields that matter | Total Cap, Total Res, Total XCap, Total Ground Cap and the coupling to each attacker. For the arc: net capacitance, rise and fall capacitance, total resistance and the delay type. |
| Healthy | Total C, R and coupling agree within the project budget. |
| Warning | Total C agrees, but coupling or attackers differ. |
| Hard stop | R or total C on a critical net is outside the budget. |
| Common misuse | Choosing easy nets. Take nets from the worst endpoints of X-08, and include one long net and one clock net. |
| Root cause and fix | Trace the cause: thresholds in X-01, technology data in X-01, scale factors in X-06. |
| Rerun after a fix | Rerun X-05 on the same nets after each change. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Which scale factors bring the native extraction to signoff, and are they used only where they apply? |
|---|---|
| Stage | After X-01 is aligned |
| Product | Innovus Implementation. The signoff reference needs a Standalone Quantus licence, or signoff SPEF files given with -spefMapFile. |
| Required state | A routed design, signoff SPEF files from that routing or a Standalone Quantus licence, and RC corners defined. |
| Legacy UI | generateRCFactor -preroute false -postroute low -reference signoff -outputFile <f>
update_rc_corner -name <rc> -postRoute_cap {<f>} -postRoute_res {<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 | -preroute true by default. It generates factors for preRoute extraction on signal and clock nets.-postroute low or medium. Without it no postRoute factors are generated.-reference low, medium, high, signoff or externalSpef. The default is signoff.-spefMapFile lists RC corner and SPEF file pairs. Use it with -reference externalSpef, as in generateRCFactor -preroute false -postroute low -reference externalSpef -spefMapFile -outputFile names the file that receives the factors, for use when you set them. The summary prints clock factors separately, so check them as well as the signal factors.-postRoute_cap, -postRoute_xcap, -postRoute_res take one value for effort level low, two for low and medium, three for low, medium and high. A missing value is 1. |
| Scope and view | Per RC corner. The command prints separate factors for signal nets and clock nets. |
| Order of work | The reference sequence is: write the native SPEF with extractRC and rcOut, correlate it with the signoff SPEF, set the pre-route and post-route factors on the RC corner, and extract again. For preRoute factors, extract at the preRoute stage and not on the final route, so that the factors include the gap between early and final routes. The reference also advises computing preRoute factors without the layer-independent extraction mode. |
| Effect on session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis |
| Output | A scale factor summary per RC corner and engine, and the output file. |
| Fields that matter | Cap, Res, XCap, Clock Cap and Clock Res factors for each RC corner and engine. |
| Healthy | Factors fit the engine in use and a rerun closed the gap. |
| Warning | Factors differ widely between corners, or XCap is far from one. |
| Hard stop | Factors set for effort level signoff, or from other routing. |
| Common misuse | Using a factor to cover a filter or technology mismatch. Align X-01 first. |
| Root cause and fix | Align the filters, regenerate the factors, apply them with update_rc_corner, and extract again. A corner change resets RC data, so read the signoff SPEF in again. |
| Rerun after a fix | Rerun X-01, X-02, X-03 and X-08 after every change of factors. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Do the in-tool and signoff timing runs use the same analysis type, derates, CPPR, SI and delay calculation settings? |
|---|---|
| Stage | Before the timing comparison |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Views and constraint modes loaded, derates applied, signoff setup record at hand. |
| Legacy UI | getAnalysisMode -analysisType -cppr getDelayCalMode -SIAware report_timing_derate get_global timing_cppr_threshold_ps getDesignMode -earlyPBAMode -pessimisticMode |
| 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 | -analysisType single, bcwc or onChipVariation.-cppr none, both, setup or hold: removal of clock path pessimism.-aocv, -socv also readable with getAnalysisMode: they are booleans that switch AOCV and SOCV analysis on. The libraries they use are named in the library set.-clkSrcPath, -clockPropagation also readable with getAnalysisMode. The reference says timeDesign -postRoute sets -clkSrcPath true and -clockPropagation sdcControl, so record them after the run.-SIAware true adds crosstalk-induced delay to delay calculation. It needs multi-mode multi-corner mode and the on-chip variation analysis type. The reference says timeDesign -postRoute sets it to true, so read it after the run.-delay_corner limits the derate report to one delay corner. The default is all of them.-earlyPBAMode, -pessimisticMode earlyPBAMode adjusts in-tool delay calculation toward Tempus path-based results. pessimisticMode adds pessimism to limit optimistic outliers, and the reference says it must not be used when Tempus is the final signoff engine. |
| Scope and view | Session settings and per-corner derates. |
| CPPR threshold | timing_cppr_threshold_ps is the most pessimism that CPPR may leave in a path. The reference gives a default of 20 ps. Compare it with the signoff value rather than assuming they agree. With a non-zero value the in-tool run can leave up to that much pessimism in a path. The reference also lists setDelayCalMode -signoff_alignment_settings, false by default, so record whether it was set. |
| Effect on session | reads or reports only |
| Output | A list of values and a derate table with early and late factors for clock and data paths. |
| Fields that matter | Analysis type, OCV method, CPPR mode and threshold, SI mode, derates per corner, and the early PBA and pessimistic modes. |
| Healthy | Analysis type, OCV, CPPR, SI and derates match on both sides. |
| Warning | One setting differs, and its effect is measured and recorded. |
| Hard stop | Derates or OCV set on one side only, or pessimistic mode with Tempus. |
| Common misuse | Assuming the SDC carries the derates. Innovus cannot import set_timing_derate from an SDC file, so derates set in one session do not reach a run that reads the SDC alone, and derates written in an SDC are not imported by Innovus. |
| Root cause and fix | Apply the same derates and OCV settings on both sides, or remove them on both, and record which. |
| Rerun after a fix | Rerun X-07 and X-08. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | How far apart are the in-tool and signoff timing results in each view, and which endpoints and path stages account for the gap? |
|---|---|
| Stage | After X-07 |
| Product | Innovus Implementation for timeDesign and report_timing. signoffTimeDesign runs Quantus and Tempus, which are separate products with their own licences. |
| Required state | Same routed database, equal settings, the signoff licences available. |
| Legacy UI | signoffTimeDesign -outDir <dir> report_timing -view <view> -path_type end timeDesign -postRoute -outDir <dir> signoffTimeDesign -reportOnly -outDir <dir> report_timing -view <view> -path_type full_clock -from <pin> -to <pin> |
| 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 | -expandedViews is a timeDesign option that writes a report directory for each view. signoffTimeDesign writes expanded views by default and has -noExpandedViews.-outDir, -prefix name the report directory and the file prefix, so two runs do not overwrite each other.-reportOnly skips extraction and uses the parasitics in memory. For signoffTimeDesign this is the form to use after spefIn.-noEcoDB turns off the ECO timing database that signoffTimeDesign writes for each view.-path_type end prints one line per endpoint with cause, slack and arrival time.-path_type full_clock prints the full path with the launch and capture clock paths. Use it with -from and -to on one path.-max_paths, -view the number of worst paths, and the view in multi-mode multi-corner mode. |
| Scope and view | All active views for the summaries. One view per report_timing call. |
| Report header | set_global timing_report_timing_header_detail_info extended adds the analysis mode, the active views, the CPPR setting and the delay calculation engine to report headers. Use it so the two reports state their own settings. |
| Effect on session | updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | A timing summary per view and for all views together, report directories, an ECO timing database per view from signoffTimeDesign, an endpoint list and full path reports. |
| Fields that matter | WNS, TNS, violating paths and all paths per view, setup and hold. Per endpoint: slack, arrival, clock path arrival, CPPR credit, and the net and cell delay of each stage. |
| Healthy | WNS, TNS and endpoint lists agree per view within budget. |
| Warning | Total slack agrees, a few endpoints differ, each traced to a stage. |
| Hard stop | In-tool optimistic beyond budget in any required view, or a signoff violation has no in-tool endpoint. |
| Common misuse | Comparing only WNS, or runs from different databases or view lists. The worst endpoint can differ while the gap is small, and the combined TNS takes the worst slack at each endpoint across views, so it is not the sum of the per-view values. |
| Root cause and fix | Walk the causes in Section 14.7 one source at a time, find the first stage where the two reports differ, and use X-05 on that net. |
| Rerun after a fix | Rerun X-08 after every change in extraction, scale factors or settings. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
14.5 Required reports, artefacts and how to read them
| Report | Fields that support qualification | Evidence class |
|---|---|---|
| Extraction mode and RC corner record (X-01) | engine, effort level, coupled, filter mode, thresholds, unit R and C per layer, scale factors | implementation |
| RCDB header (X-02) | RC corners listed, Coupled, source and design name | implementation |
| Annotation summary (X-03) | not annotated nets by type, per view | implementation |
| SPEF files (X-04) | one per RC corner, unit, from the final database | implementation, or signoff for the signoff SPEF |
| Net and arc reports (X-05) | Total Cap, Total Res, Total XCap, attackers, arc RC summary | implementation and signoff, compared |
| Scale factor file (X-06) | cap, res, xcap, clock factors per corner and engine | preliminary until a rerun confirms it |
| Settings record (X-07) | analysis type, OCV, CPPR, SI mode, derates | implementation and signoff, compared |
| Timing summaries, endpoint and path reports (X-08) | WNS, TNS, violating paths per view; endpoint slack, clock paths, stage delays | implementation and signoff, compared |
report_net_parasitics v -rc_corner rc_max -file_name v_native.rpt ## in-tool, illustrative Net: v RC Corner: rc_max Total Cap = 1.455 ff Total Res = 134.800 ohms Total XCap = 0.499 ff Cap Distribution: Total Ground Cap = 0.956 ff XCap With Nets: a1 = 0.499 ff report_net_parasitics v -rc_corner rc_max -file_name v_signoff.rpt ## signoff SPEF read in, illustrative Net: v RC Corner: rc_max Total Cap = 1.476 ff Total Res = 140.400 ohms Total XCap = 0.684 ff Cap Distribution: Total Ground Cap = 0.792 ff XCap With Nets: a1 = 0.506 ff a2 = 0.138 ff x = 0.040 ff
Let us read the pair against Figure 20. Total capacitance differs by 1.4 percent and resistance by 4.0 percent, both low in the native run. Offsets of this size are what a scale factor is for, and both are small enough to judge against the project budget. The coupling is different. The native report shows 0.499 fF of coupling and one attacker, the signoff report 0.684 fF and three. The ground capacitance in the native report is 0.164 fF higher. The two missing attackers carry 0.178 fF, so most of that capacitance moved to ground.
Thus, the two reports agree where a quick glance looks, on total capacitance, and disagree where timing is sensitive. A fitted coupling factor of 1.37 would make the coupling number look right, but total capacitance would then read 1.640 fF against 1.476 fF at signoff, about 11 percent high, because the lumped capacitance is still in the ground term. The decision is to compare the thresholds of X-01 with the signoff command file, and to fit scale factors only after that. All values here are illustrative and are not from a tool run.
14.6 Healthy, suspicious and hard-stop examples
| Finding | Status | Why |
|---|---|---|
| Engine and thresholds match the signoff setup | PASS | The two extractors answer the same question. |
| Thresholds are tool defaults, not compared | WARN / REVIEW | Defaults come from the process node and may differ from signoff. |
| In-tool and signoff runs use different routed databases | HARD STOP | The comparison measures two different designs. |
| Only supply nets are not annotated | WARN / REVIEW | Expected, but each net needs a stated reason. |
| A real signal net has no annotation | HARD STOP | The net is timed without its wire R and C. |
| Derates set on one side only | HARD STOP | The gap contains a setting difference, not an extraction difference. |
| Scale factors set for effort level signoff | HARD STOP | The reference does not support scaling at that level. |
| In-tool optimistic beyond the project budget | HARD STOP | Implementation closes timing that signoff will fail. |
| Per-domain derates in a single-supply block | NOT APPLICABLE | No power domains exist. |
14.7 Debugging, corrective action and reruns
A timing gap has several independent sources, and they hide each other. Change one source at a time, rerun X-08 after each change, and write down the gap that remains. The table lists the usual sources, the symptom that points to each, and the card that checks it.
| Source of difference | Symptom | Card |
|---|---|---|
| Coupling filter or engine differs | Total C close, coupling and attacker list different | X-01, X-05 |
| Technology data or temperature differs | Unit R or C differs on one or more layers | X-01 |
| Parasitics missing | Nets not annotated in one view | X-03 |
| Engine offset | A near-uniform ratio on C or R across nets | X-06 |
| Fill seen differently | Capacitance differs on layers that carry fill | X-01, Chapter 13 |
| Derates, OCV method or CPPR differ | Stage delays differ in the same ratio on clock or data paths | X-07, X-08 |
| SI mode or delay calculation differs | Net delay differs although net RC matches | X-07, X-05 |
| Path-based against graph-based analysis | Same stage delays, different slack at the endpoint | X-08 |
14.7.1 How to bound the remaining gap
To bound a difference means to give an upper limit for it and to show where it came from. Three steps do that. Figure 21 shows the flow they belong to.
First, make the two runs comparable, and do it before anything else: the same routed database, the same SDC, the same views, the same derates, OCV, CPPR and SI settings, and the same RC corner data. The strip at the bottom of Figure 21 lists them. A settings difference found later hides inside every extraction number, and a difference found before this step is not yet a measurement.
Second, decompose the extraction gap. Align the filters, then fit the scale factors, and record the gap after each change in a short table. A source that moves the gap is a cause. A source that does not move it is ruled out.
Third, state the residual against the endpoint list and not only against WNS. Take the endpoint lines from X-08 for both runs, subtract the slack of matching endpoints, and report the largest difference and its sign. The sign matters. A residual where the in-tool run is optimistic is a risk. A residual where it is pessimistic costs area and power. Your project budget decides how large either may be. The comparison script is yours to write, since the endpoint lines are plain text. This book prints no database path for it.
14.7.2 Worked example: an optimistic in-tool run
Suppose the setup WNS of the worst view is +0.021 ns in the tool and -0.034 ns at signoff, a gap of 0.055 ns. The routed database is the same. The signoff run applied derates that were written in its SDC, and the in-tool session never received them. All values here are illustrative.
| Step | Change | In-tool WNS (ns) | Signoff WNS (ns) | Gap (ns) |
|---|---|---|---|---|
| 0 | Baseline | +0.021 | -0.034 | 0.055 |
| 1 | Apply the signoff derates in the tool (X-07) | +0.004 | -0.034 | 0.038 |
| 2 | Match the filter mode and thresholds to the signoff command file (X-01) | -0.011 | -0.034 | 0.023 |
| 3 | Apply the factors from generateRCFactor and extract again (X-06) | -0.027 | -0.034 | 0.007 |
Step 1 changes the in-tool number. Innovus cannot import set_timing_derate from an SDC file, so the derates in the signoff SDC never reached the session, and part of the original gap was a settings error and not an extraction difference. Step 2 moves the in-tool number again because the removed attackers return, as in Figure 20. Step 3 removes the engine offset. The residual of 0.007 ns is what extraction and delay calculation still differ by, and it is a number you can compare with the project budget.
The decision depends on that budget. If the residual is inside it, X-08 is a pass for this view, and you rerun X-03 to X-08 for the other views. If it is outside, the next sources in the table are path-based against graph-based analysis and SI mode. Note that both runs now fail setup. Closing timing is the work of Chapter 12, and this chapter has shown that the failure is real and not an artefact of the extractor.
14.8 Exit criteria and stage checklist
- Mode. Extraction mode, filter and thresholds recorded and equal to the signoff setup.
- Technology. RC corner data and scale factors recorded, unit values checked per layer.
- Database. RC database saved from the final route and fill, with every active RC corner in its header.
- Coverage. Every real signal and clock net annotated in every active view.
- SPEF. One SPEF per RC corner from the same routed database, with the unit stated.
- Factors. Scale factors generated for the engine in use, applied, and confirmed by a rerun.
- Settings. Analysis type, derates, OCV method, CPPR and SI mode equal on both sides.
- Timing gap. In-tool and signoff slack compared per view and per endpoint, with the residual inside the project budget.
Thus, extraction is qualified when it is complete, runs with settings you can name, and sits within a stated, traced distance of signoff. A matching WNS alone does not show this, because two errors can cancel. In the next chapter, Chapter 15 shows how to record an ECO and decide which of these checks to run again.
14.9 Sanity check cheat sheet: Extraction and signoff correlation
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 |
|---|---|---|---|---|---|
| X-01 | Mode and RC corner record Before extraction | report_unit_parasitics -all_layers -rc_corner <rc>get_rc_corner <rc> -rcCornerAttributegetExtractRCMode -engine -effortLevel -coupled | Engine, thresholds and corner data match the signoff setup. | Thresholds are defaults, not compared with signoff. | Coupling off in an SI flow, or a wrong technology file. |
| X-02 | Extraction run and RCDB After final route and fill | setExtractRCMode -engine postRoute -effortLevel <level>extractRCsaveRC <name>.rcdb.d | The header lists every active RC corner, and Coupled matches the plan. | RCDB saved before the last fill or ECO change. | An active RC corner is missing, or preRoute ran after routing. |
| X-03 | Annotation coverage After extraction or SPEF | report_annotated_parasitics -view <view>report_annotated_parasitics -view <view> -list_not_annotated -max_missing <n> > <file> | Every real signal and clock net is annotated in every active view. | Only supply or tied nets lack annotation, each explained. | Any real signal or clock net has no annotation. |
| X-04 | SPEF out and in After extraction | rcOut -spef <name>.spef.gz -rc_corner <rc>spefIn <signoff>.spef.gz -rc_corner <rc> | One SPEF per active corner, right unit, X-03 clean. | SPEF exists for only some corners, so reading has not started. | SPEF from another database, or written without resistance. |
| X-05 | Net and arc comparison After both SPEF sets | report_net_parasitics <net> -rc_corner <rc>reportDelayCalculation -from <pin> -to <pin> -view <view> -si | Total C, R and coupling agree within the project budget. | Total C agrees, but coupling or attackers differ. | R or total C on a critical net is outside the budget. |
| X-06 | Scale factors After X-01 is aligned | generateRCFactor -preroute false -postroute low -reference signoff -outputFile <f>update_rc_corner -name <rc> -postRoute_cap {<f>} -postRoute_res {<f>} | Factors fit the engine in use and a rerun closed the gap. | Factors differ widely between corners, or XCap is far from one. | Factors set for effort level signoff, or from other routing. |
| X-07 | Equal timing settings Before the timing comparison | getAnalysisMode -analysisType -cpprgetDelayCalMode -SIAwarereport_timing_derate | Analysis type, OCV, CPPR, SI and derates match on both sides. | One setting differs, and its effect is measured and recorded. | Derates or OCV set on one side only, or pessimistic mode with Tempus. |
| X-08 | Timing and endpoints After X-07 | signoffTimeDesign -outDir <dir>report_timing -view <view> -path_type endtimeDesign -postRoute -outDir <dir> | WNS, TNS and endpoint lists agree per view within budget. | Total slack agrees, a few endpoints differ, each traced to a stage. | In-tool optimistic beyond budget in any required view, or a signoff violation has no in-tool endpoint. |
14.10 Command cheat sheet: Extraction and signoff correlation
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| Command | What it produces |
|---|
| Extraction settings and records | |
|---|---|
getExtractRCMode | Name, current value, type and set-by-user flag of every setExtractRCMode parameter. |
getExtractRCMode -engine -effortLevel -coupled | The engine, the effort level and whether coupling capacitance is kept separate. |
getExtractRCMode -capFilterMode -coupling_c_th -relative_c_th -total_c_th | The coupling filter mode and its three thresholds. |
all_rc_corners | A Tcl list of the RC corner objects in the design. Add -active for the active ones. |
get_rc_corner <rc> -rcCornerAttribute | One attribute of an RC corner. The attribute name replaces -rcCornerAttribute, for example -postRoute_cap or -qx_tech_file. |
report_unit_parasitics -all_layers -rc_corner <rc> | Unit resistance in ohm per micron and capacitance in fF per micron for every layer. |
| Setting up and running extraction | |
|---|---|
setExtractRCMode -engine postRoute -effortLevel low | Selects native detailed extraction. Changes the session. |
setExtractRCMode -engine postRoute -effortLevel medium -extraCmdFile <f> | Selects TQuantus, with the Quantus extra command file. Changes the session. |
setExtractRCMode -engine postRoute -effortLevel signoff -qrcCmdType auto -lefTechFileMap <f> | Selects Standalone Quantus with settings derived from Innovus. The layer map is required in auto mode. Changes the session. |
setExtractRCMode -capFilterMode relAndCoup -coupling_c_th <fF> -relative_c_th <v> -total_c_th <fF> | Sets the coupling filter. Changes the session. |
setExtractRCMode -coupled true | Keeps ground and coupling capacitance separate, which signal integrity analysis needs. Changes the session. |
extractRC | The RC database for the current routing. Changes the database and takes runtime. |
reset_parasitics | Deletes the parasitic database and keeps the extraction mode. Changes the database. |
saveRC <name>.rcdb.d | The RC data saved in a directory. Writes files. |
restoreRC <name>.rcdb.d | The RC data restored from a directory, on a system of the same data model. Changes the database. |
| Parasitic files and annotation | |
|---|---|
report_rcdb <name>.rcdb.d | The header of one flat RCDB: corners, Coupled, source and design name. |
report_annotated_parasitics -view <view> | A summary of annotated and not annotated nets for the view. |
report_annotated_parasitics -view <view> -list_not_annotated -max_missing <n> | The nets without annotation, up to the given count. |
report_net_parasitics <net> -rc_corner <rc> | Total C, R, coupling and the worst attackers of one net. |
rcOut -spef <name>.spef.gz -rc_corner <rc> | A SPEF file of one RC corner, compressed by the suffix. Writes a file. |
spefIn <signoff>.spef.gz -rc_corner <rc> | Signoff parasitics annotated to an RC corner. Changes the database. |
read_parasitics -rc_corner <rc> <f>.spef.gz | SPEF or RCDB parasitics read for an RC corner, also for hierarchical designs. Changes the database. |
| Scale factors and technology data | |
|---|---|
generateRCFactor -preroute false -postroute low -reference signoff -outputFile <f> | Cap, res and xcap factors per RC corner, from a comparison with signoff extraction. Writes a file and takes runtime. |
generateRCFactor -preroute false -postroute low -reference externalSpef -spefMapFile <map> -outputFile <f> | The same, using signoff SPEF files named in a map file. Writes a file. |
update_rc_corner -name <rc> -postRoute_cap {<f>} -postRoute_xcap {<f>} -postRoute_res {<f>} | New post-route scale factors for an RC corner. Can reset timing and RC data in MMMC mode. |
create_rc_corner -name <rc> -cap_table <f> -T <temp> | A new RC corner with a capacitance table and a temperature. Changes the session. |
| Timing settings that must match | |
|---|---|
getAnalysisMode -analysisType -cppr -aocv -socv | The analysis type, the CPPR mode and whether AOCV and SOCV are on or off. |
getDelayCalMode -SIAware -socv_accuracy_mode | Whether crosstalk delay is included and the SOCV accuracy level. |
getDesignMode -earlyPBAMode -pessimisticMode | The delay calculation modes that move in-tool timing toward or away from signoff. |
report_timing_derate | Global and per-object derating factors for early and late, clock and data paths. |
get_global timing_cppr_threshold_ps | The most pessimism in ps that CPPR may leave in a path. |
report_analysis_views -type active | The active views of the multi-mode multi-corner setup. |
| In-tool and signoff timing | |
|---|---|
timeDesign -postRoute -expandedViews -outDir <dir> | Extraction at the engine set by setExtractRCMode (native detailed at the low effort level), timing analysis and per-view setup reports. Changes the database and takes runtime. |
timeDesign -postRoute -hold -reportOnly -outDir <dir> | Hold reports from the extraction already in memory. |
signoffTimeDesign -outDir <dir> | Quantus extraction and Tempus timing, with a summary per view and an ECO timing database. Writes files and takes runtime. |
signoffTimeDesign -reportOnly -outDir <dir> | Signoff timing on the parasitics already in memory, for example after spefIn. |
report_timing -view <view> -path_type end -max_paths <n> | One line per endpoint with cause, slack and arrival. |
report_timing -view <view> -path_type full_clock -from <pin> -to <pin> | The full path with launch and capture clock paths. |
reportDelayCalculation -from <pin> -to <pin> -view <view> -si | Delay calculation detail for one arc, with signal integrity information. |
set_global timing_report_timing_header_detail_info extended | Adds analysis mode, views, CPPR and delay calculation engine to report headers. Changes the session. |