Skip to content
Ch 16 / 16 Chapter 16: Final implementation handoff
CHAPTER 16

Final implementation handoff

Handoff is the point where the implementation database stops being a working session and becomes a set of files that other teams and tools read. Those readers cannot ask the session a question. This chapter freezes the database, reruns the closure checks on it, writes the deliverables, checks what can be checked about the written files, and records what is still open and where signoff starts.

16.1 Stage purpose

By this stage each earlier chapter has produced its own evidence. Handoff adds three questions that no earlier chapter asks. Do the files you hand over describe the same database? Is that database the one whose checks you read? And who owns every result that is still open? A design can pass every stage and still fail here, because a file was written before the last change, or because a waiver lives in an email.

Each deliverable keeps a different part of the design, as the figure below shows for one small routed region. The stream file keeps shapes. The DEF file keeps cells and routing. The SPEF file keeps resistance and capacitance per net. The netlist keeps connectivity. A LEF abstract keeps the pins and the obstructions of a block and hides the inside. No single file is the design, so the set of files, written from one database, is the handoff.

GDS streamkeeps every mapped shapeDEF filekeeps cells and routingSPEF filekeeps R and C per netVerilog netlistkeeps connectivity onlyLEF abstractkeeps pins and obstructionsLedger: what each file cannot tell youPU1U2R1R2R3C1C2C3U1/ZU2/ABUFX2 U1 (.A(a), .Z(n1));INVX1 U2 (.A(n1), .ZN(y));no coordinates, no layersno wire shapesayOBS on M2, M3GDS: shapes, not the netlistDEF: no cell internalsSPEF: no shapes, no cellsNetlist: no placement, no routesLEF: nothing inside the blockM2, horizontalM3, verticalV23 viaM1 pinfiller cellmetal fillP = 10 units, track pitch (illustrative). The GDS and DEF panels use the same coordinates for U1, U2 and net n1.
Figure 24. One routed region as five deliverables keep it
Read it. Net n1 runs from U1 to U2 on M2 and M3. The GDS panel and the DEF panel share the same coordinates. GDS draws every shape, including the cell internals once the cell stream files are merged in, the filler cells and the metal fill. DEF draws the cells as names and outlines and keeps the routing. The SPEF panel replaces the geometry with three resistors and three capacitors on the same net. The netlist panel has two lines of text and no geometry at all. The LEF panel treats the region as a block, so only the pins a and y and a hatched obstruction remain. The ledger lists what each file cannot tell its reader.

Four words are used with fixed meanings in this chapter and the checklist. They are easy to mix up, and mixing them is how an incomplete handoff is called a finished one.

WordMeaning hereExample
Tool completionThe command returned without an error.streamOut finished and a file exists.
Analysis coverageThe analysis saw everything it should have seen.Every required view and every net was included.
Stage qualificationThe result meets the project budget, with its evidence kept.Final DRC, connectivity and timing are clean on the frozen database.
SignoffAn independent tool, with its own rules and extraction, accepts the files.A signoff physical verification run on the stream file.

This chapter reaches stage qualification. It does not reach signoff, and the last section says where the line is.

Four terms are used throughout. The freeze is the moment after which no command changes the database. A deliverable is a file written from the frozen database for a named consumer. The manifest is the table that records every deliverable with its source, time and check. The open-issues log records every accepted deviation, with an owner and a reason.

16.2 Entry prerequisites

Must already be trueWhy
Chapters 1 to 15 passed, and the master checklist in Section 16.8 is filled in up to Chapter 15This chapter repeats the closure checks. It does not replace the stage evidence.
No ECO is openChapter 15 requalifies every change. A change that arrives after the freeze starts a new freeze.
A handoff specification lists each deliverable, its format, its consumer and its naming ruleThe manifest is checked against it. This book does not choose the list.
The layer map file for the stream, the macro stream files, and the DEF and LEF version settings are fixedThey decide what the written files contain. Chapter 13 reviewed the map file.
The output directory exists and has free space for the largest fileA stream file of a full block can be large, and a truncated file is easy to miss.
Project budgets for timing, DRC, connectivity and antenna existThe reruns compare against them. This book sets no numbers.

16.3 Relevant files and analysis context

The order of work matters more here than in any other chapter. Every file is written from the database in the session, so a command that changes the database between two writes gives you two files that disagree. The order is: freeze and record, rerun the closure checks, save and prove the restore, write the files, read back what can be read back, then close the manifest.

The manifest below lists the usual deliverables. Which of them your project needs comes from the handoff specification. The saved database carries the constraints. saveDesign keeps a link to each original SDC file when the file was not modified, and copies it into the saved directory when it was modified. The -tcon option copies every SDC file, which makes the save independent of the original location. Derates and analysis-mode settings are not carried by an SDC file, so keep the record of Chapter 14, card X-07. Constraints that must travel as a stand-alone file are written per view with writeTimingCon, which uses Design Compiler format. Whether the consumer accepts that file unchanged belongs in the handoff specification.

DeliverableWritten byConsumerChecked by
Saved database, with constraintssaveDesignAny later Innovus sessionZ-04
Verilog netlist, logical or with PGsaveNetlistEquivalence check, signoff timing, simulationZ-05
DEF file with routingdefOutExtraction and physical toolsZ-06
Stream file, GDSII or OASISstreamOutSignoff physical verificationZ-07
SPEF, one per RC cornerrcOutSignoff timingZ-08
Timing constraints, one per viewwriteTimingConSignoff timing, simulationZ-08
SDF, for the view pairs requiredwrite_sdfSimulation and signoff timingZ-08
Summary and gate count reportssummaryReport, reportGateCountReviewZ-01
Closure and timing reportsCards Z-02 and Z-03Review and signoffZ-02, Z-03
Block LEF abstract and modelwrite_lef_abstract, saveModelA parent design. Only if the block is used inside one.Not applicable to a top-level block
Manifest, open-issues log, log filesYou, from the cardsEveryoneZ-01

Every deliverable carries one of three evidence classes, and the class decides what you may claim about it. The classes are used in every chapter, and they are collected here because the handoff is where they meet.

ClassWhat it isWhat you may claim
PreliminaryAn estimate made before the final data exists, such as an early route or pre-CTS timing with ideal clocks.A direction. Never a pass.
ImplementationA result computed by the implementation tool on the database as it stood at that stage, such as DRC, connectivity and post-route timing. This chapter repeats them on the frozen database.The stage is qualified, against the project budget.
SignoffA result from an independent tool, with its own rule decks and extraction, run on the written files.The design is accepted for the next step. This book does not produce it.

The settings that shape the written files are part of the evidence. getExportMode and getStreamOutMode return the netlist and stream settings, and the lefDefOutVersion, defOutLefVia and defOutLefNDR globals control the DEF and LEF output. Record all of them in the manifest, because a file written with a different setting is a different file.

16.3.1 Where the signoff boundary lies

Innovus sessionFiles writtenSignoff tools, outside this bookPreliminaryestimates that can still moveImplementationtool checks on the final databaseThe cards of Chapters 1 to 16produce these two classes only.LayoutGDS and DEFLogicVerilog netlistTiming dataSPEF, SDF, SDCRecordreports and manifestPhysical verificationlayout against rulesEquivalence checknetlist against the RTLTiming signoffnetlist, SPEF, SDCRelease reviewmanifest, open issueswritesignoff boundary
Figure 25. Where the evidence of this book ends and signoff begins
Read it. The left frame is the Innovus session, which produces preliminary and implementation evidence. The middle frame is the four groups of files written for handoff. The right frame is four consumers that sit outside this book: physical verification, equivalence checking, timing signoff and the release review. The red dashed line is the boundary. Every arrow that crosses it hands over files and nothing else.

Four rules keep the boundary honest. Do not call the handoff signed off. Do not copy a number from an Innovus report into a signoff column. Keep the open issues that wait for signoff in the log, marked as deferred, so that the signoff result can close them by name. And hand over the manifest with the files, because it is the only record of which database the files came from.

16.4 Checks and command cards

The cards follow the order of work. Three come before the save, one saves, and four write and check the files. Each card says what to rerun if it fails, and the answer is always the same in kind: go back to the chapter that owns the defect, then start the handoff again from card Z-01. In this chapter, clean means no violation without an owner and a decision.

16.4.1 Pre-stage checks

The freeze starts with identity and inventory. Neither changes the database, and both are cheap, so run them before the long checks. If either fails, the long checks would be run on the wrong design.

Z-01Run identity and final summary
Question it answersIs this the release, the settings and the message record that the project approved, and what exactly is in the database that will be handed off?
StageFreeze
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateThe last ECO or fix is done. The session holds the design that will be handed off.
Legacy UI
getVersion
report_message -errors -count
report_message -suppressed
report_message -warnings -count
getLogFileName -fullPath
report_command_mode -non_default
summaryReport -noHtml -outfile <f>
reportGateCount -stdCellOnly -outfile <f>
report_area -out_file <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-fullPath with getLogFileName, returns the absolute path of the log file.
-errors -count with report_message, returns a Tcl list of {ID count} pairs for every error ID.
-suppressed with report_message, lists the suppressed message IDs.
-non_default with report_command_mode, lists every mode option whose value is not the default.
-noHtml, -outfile with summaryReport, write the text version only to a named file. -outfile needs -noHtml.
-stdCellOnly, -outfile with reportGateCount, count standard cells only and name the output file.
-out_file with report_area, writes the area of each module and of the top level.
Scope and viewThe session and the whole design.
Why keep the summaryThe summary is the file you compare after the restore in Z-04. The gate count and the area by module are what reviewers ask for first, and they are cheap to write now and hard to reproduce later.
Effect on sessionwrites files. Some commands in this card only read or report.
OutputVersion, path, message lists and a mode listing on the console, and two text files with the design summary and the gate count.
Fields that matterThe release and build, the log path, the error and suppressed lists, the non-default modes, Design Status, instance and macro counts, and the gate count.
HealthyRelease as approved, no error ID, Routed, expected counts.
WarningA new warning ID, or a count change only partly explained.
Hard stopAn error ID, a new suppressed ID, or not Routed.
Common misuseReading an empty error list as proof of a clean flow, since it counts this session only. Or comparing a gate count with an instance count: the gate count is module area divided by an assumed gate size.
Root cause and fixFind the first command that issued the ID in the log, correct it, and rerun from the stage that owns it.
Rerun after a fixRerun Z-01 after the last change, then every later card.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

16.4.2 Post-stage checks

The placement, DRC, connectivity, antenna, filler and timing checks of Chapters 7 and 11 to 13 are repeated on the frozen database. Density and via-count reports are repeated only if the database changed after them; record which. This is not duplication. A result from an earlier stage describes the database of that stage, and the handoff needs results that describe this one.

Z-02Physical closure on the frozen database
Question it answersIs the frozen database placed legally, free of DRC violations, fully connected and free of antenna violations?
StageBefore the save
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-01 is done. No command that changes the database has run since.
Legacy UI
checkPlace <report_file>
checkFiller -file <f>
verify_drc -limit 0 -report <f>
verifyConnectivity -type regular -report <f>
verifyConnectivity -type special -report <f>
verify_antenna -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
violationReportFileName with checkPlace, names the detailed report.
-limit with verify_drc, caps the number of reported violations. The default cap is 1000, and 0 removes it.
-type with verifyConnectivity, selects regular or special wires.
-report writes the report file.
Scope and viewWhole design for every check. No area restriction.
OrdercheckPlace runs first because verify_drc checks only placed instances. An unplaced cell would be invisible to the DRC run.
Effect on sessionadds GUI violation markers; writes files; runs an expensive analysis
OutputViolation markers and report files.
Fields that matterThe Unplaced count and placement violations, filler gaps, DRC violations by rule, opens, shorts and unrouted nets on regular and special nets, and antenna violations by net.
HealthyNothing unplaced, no DRC, open, short, antenna or unapproved filler gap.
WarningA cap or option hides a category.
Hard stopAny such violation without an owner and a decision.
Common misuseReading the cap as the count, or handing off an area run. The first hides violations, and the second misses damage outside the box.
Root cause and fixFix the defect in the chapter that owns it, using the rerun matrix of Chapter 15.
Rerun after a fixRerun Z-02 and every later card.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-03Timing on the frozen database
Question it answersDo the required views meet the project budget on the frozen database, with parasitics on every net?
StageBefore the save
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-02 is clean. The analysis views are active as in the baseline.
Legacy UI
check_timing -verbose
timeDesign -postRoute -outDir <dir> -prefix <prefix>
report_annotated_parasitics -list_not_annotated
timeDesign -postRoute -hold -outDir <dir> -prefix <prefix>
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
-verbose with check_timing, lists the warnings in detail, grouped by type. Without it only a count per type is printed.
-postRoute with timeDesign, runs native detailed extraction and timing analysis, and sets the analysis mode to -clkSrcPath true and -clockPropagation sdcControl.
-hold with timeDesign, reports hold violations only.
-outDir, -prefix name the report directory and the file prefix.
-list_not_annotated with report_annotated_parasitics, lists the nets that have no annotated parasitics.
Scope and viewEvery active view, setup and hold.
CosttimeDesign -postRoute runs extraction and analysis, so it is the slowest card of the chapter before the writes.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputTiming reports by view and path group, a DRV report, and the parasitic annotation summary.
Fields that matterWNS, TNS and violating paths per view and path group, for setup and for hold. Maximum transition, capacitance and fanout violations. The not-annotated nets.
HealthySetup and hold meet budget in every required view, every net annotated.
WarningOptions or directory differ from the baseline run.
Hard stopA required view misses the project budget, or a net has no annotated parasitics.
Common misuseUsing the timing reports of Chapter 12 as final. They describe the database of that stage, not this one.
Root cause and fixFix the cause in Chapter 12 or Chapter 14, then rerun Z-02 and Z-03.
Rerun after a fixRerun Z-03 in every view.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-04Save and restore proof
Question it answersDoes the saved database restore to the same design that was frozen?
StageSave
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-01 to Z-03 are clean. Nothing has changed the database since Z-02 started. The restore runs in a new session, and Z-05 to Z-08 are written in the frozen session.
Legacy UI
saveDesign <final>.enc -tcon -rc
restoreDesign <final>.enc.dat <top>
Common UI
write_db <dir> Verified
write_db appears in the RAK lab in a synthesis flow only, as in Chapter 1. The lab does not show it for a routed design, and its equivalence to saveDesign is not verified.
Mappingdifferent command name, equivalence of saved content not verified
Options used
-tcon with saveDesign, copies every SDC file into the saved directory, even an unmodified one.
-rc with saveDesign, saves the RC extraction data. Nothing is saved if the design is not extracted or the preRoute engine was used.
Scope and viewThe whole database. The saved directory is read as a whole.
What the proof coversThe summary shows status and counts only, not constraints, routing or parasitics. Compare report_command_mode -non_default from Z-01, and the settings record of Chapter 14 (X-07), in the restored session, and rely on Z-06 for routing. saveDesign -tgz and -libs make portable copies, and the manifest says which was used.
Effect on sessionupdates the design database; writes files
OutputA restore file, a .dat directory, and in the new session a restored design and a second summary written with the Z-01 command.
Fields that matterRestore messages, and the Design Status and counts of the summary of the restored design, which you compare with the summary of Z-01.
HealthyNo restore error, and the summary equals the frozen one.
WarningThe restore needed a file from outside the saved directory.
Hard stopThe restore errors, or the summaries differ.
Common misuseSaving over an earlier handoff save, or editing the saved directory afterwards. The reference says a save in an existing location overwrites it, and a modified directory can corrupt later restores.
Root cause and fixSave to a new name, never edit the directory, and repeat the restore test.
Rerun after a fixRerun Z-04, then the write cards.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-05Netlist export
Question it answersIs the exported netlist the logic of the frozen design, in the form the consumer needs?
StageWrite
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-04 is done, the frozen session is still open, and nothing has changed the database since.
Legacy UI
check_design -type assign_statements -out_file <f>
getExportMode
saveNetlist <final>.v
saveNetlist <final_pg>.v -includePowerGround
Common UI
write_netlist <file> Verified
write_netlist appears in the RAK lab in a synthesis flow only. The lab does not show it for a routed design, and its option equivalence is not verified.
Mappingdifferent command name, option equivalence not verified
Options used
-type assign_statements with check_design, checks the netlist for assign statements before it is exported.
-out_file with check_design, writes the full list of findings.
-includePowerGround with saveNetlist, adds physical-only PG nets and PG ports. The reference notes that some LVS flows prefer them explicit.
Scope and viewWhole design.
Logical or physicalBy default the netlist is logical, and hierarchical only if the loaded netlist was. Filler and other physical instances appear only when asked for with -includePhysicalInst. By default constants on assign nets and ports are written as 1'b0 and 1'b1, which tools outside Innovus may not handle; -replaceTieConnection writes undriven nets instead. The consumer decides which form it needs, and the manifest records it.
Effect on sessionwrites files. Some commands in this card only read or report.
OutputA findings file, a settings listing and one or two Verilog files.
Fields that matterThe assign statement findings, the export settings and their source, and the size and time of each file.
HealthyNo assign statement, settings recorded, file after the save.
WarningA setting differs from default without a reason.
Hard stopcheck_design reports an error, or a needed PG port is missing.
Common misuseReading a netlist written with physical cells back into Innovus. The reference says the -includePhysicalCell form should not be read back.
Root cause and fixFix the netlist cause in the chapter that owns it, rewrite after a new freeze.
Rerun after a fixRerun Z-05.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-06DEF export and comparison
Question it answersDoes the DEF file carry the placement and the routing of the frozen design, and does it agree with the database?
StageWrite
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-04 is done, in the frozen session. The DEF version globals are set and recorded.
Legacy UI
defOut -routing <final>.def
defComp <final>.def -reportFile <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-routing with defOut, adds the routing to the NETS section. It implies -netlist, and without it no vias are written.
-reportFile with defComp, names the comparison report. The default is defPhyDiff.rpt.
Scope and viewWhole design.
Version and viasThe lefDefOutVersion global selects the DEF version. LEF vias and nondefault rules are written only when defOutLefVia and defOutLefNDR are 1. Record all three values. By default defComp does not compare placement blockages or halos; -placeBlockage adds them.
Effect on sessionwrites files
OutputA DEF file and a comparison report.
Fields that matterADDINST, DELINST, CHANGECELL and MOVEINST lines, ADDNET and DELNET lines, CHANGEROUTE and POWERROUTE blocks, and the CHANGEAREA box.
HealthyNo differences, so the file and the database agree here.
WarningA few differences, each in the manifest.
Hard stopAdded, deleted or moved instances, or changed routes.
Common misuseWriting the DEF without -routing and treating it as the routed design. The vias are missing from such a file. Or reading a clean defComp as proof that a consumer can load the file.
Root cause and fixRewrite with the settings the consumer needs, and compare again.
Rerun after a fixRerun Z-06.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-07Stream file
Question it answersIs the stream file written from the frozen database with the approved map, units and macro files, and with its log read?
StageWrite
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-04 is done, in the frozen session. The map file and the stream files to merge, for standard cells, I/O cells and macros, are the approved versions.
Legacy UI
setStreamOutMode -check_map_file true
streamOut <final>.gds -mapFile <map> -units <n> -merge {<gds_files>} -reportFile <f>
getStreamOutMode
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
-check_map_file true with setStreamOutMode, prints the design objects that the map file does not map in the log. Only the main objects are checked.
-mapFile names the layer map. Layers absent from the file are not written.
-units sets the resolution of values in the file. The library name defaults to DesignLib, and -libName changes it.
-reportFile writes the cells whose names were changed. It is not a general run report.
-merge merges external stream files and warns when a cell name changes.
Scope and viewWhole database. No area options are used.
Relation to Chapter 13Chapter 13 qualified the map file, the fill layers and the log of a stream written after fill. This card repeats the write on the frozen database and records what was written. The tool has no read-back for the stream file, so only the signoff tools verify it.
Effect on sessionchanges analysis configuration; writes files. Some commands in this card only read or report.
OutputA stream file, and a list of the changed cell names.
Fields that matterThe settings listing, log messages about unmapped objects, the cell names changed during the merge, and the size and time of the file.
HealthyNo unmapped object or unexplained rename, file after the save.
WarningA merged cell name changed and the manifest does not say so.
Hard stopRequired layers unmapped, or the merge failed.
Common misuseLetting the tool create a generic map file. The reference says such a file must be customised, and layers it does not list are not written.
Root cause and fixCorrect the map or the merge list, and write again.
Rerun after a fixRerun Z-07.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Z-08Parasitics, delay and constraint files
Question it answersIs there one SPEF per required RC corner, one SDF per required pair of views and one constraints file per view, written from the frozen database?
StageWrite
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateZ-03 shows complete annotation. Extraction ran on the frozen database with the engine the project requires, and Z-04 is done. The files are written in the frozen session.
Legacy UI
rcOut -spef <final>.spef -rc_corner <rc>
write_sdf <final>.sdf -recompute_delay_calc -min_view <v1> -max_view <v2>
writeTimingCon <view>.sdc -view <view>
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
-spef, -rc_corner with rcOut, name the output file and the RC corner. Name the file by corner, because -view picks the corner of a view and two views can share one.
-view with writeTimingCon, names the view whose constraints are written.
-recompute_delay_calc with write_sdf, recomputes the data needed for a complete SDF. Without it only delays already computed for timing are written.
-min_view, -max_view with write_sdf, fill the min and max slots from the early and late delays of the named views.
Scope and viewOne run per corner, view pair or view.
What the file does not sayA SPEF read-back, with spefIn and an annotation check, is defined in Chapter 14, cards X-04 and X-03. A SPEF holds parasitics, not slack. Whether the corner meets timing was decided in Z-03, and the signoff tool decides it again from the SPEF. write_sdf writes delays scaled by set_timing_derate unless -no_derate is given, so record that choice.
Effect on sessionwrites files; runs an expensive analysis
OutputSPEF, SDF and constraints files.
Fields that matterThe file names, the corner or view each one used, and the size and time of each file.
HealthyA SPEF per corner, an SDF per view pair, a constraints file per view, all after the last change.
WarningAn SDF written without recomputed delays holds only cached delays.
Hard stopA corner has no file, or a file or its extraction predates the last change.
Common misuseWriting one SPEF and using it for every corner, or taking an old file because its name matches.
Root cause and fixRun the missing corner or pair, and put the corner in the file name.
Rerun after a fixRerun Z-08 for every corner after any database change.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

16.5 Required reports, artefacts and how to read them

Report or artefactFields that support qualificationEvidence class
Identity listing, summary and gate count (Z-01)release, log path, message lists, Design Status, counts, gate countimplementation
Closure reports (Z-02)Unplaced count, DRC, opens and shorts, antennaimplementation
Timing and annotation (Z-03)WNS and TNS per view and group, DRVs, not-annotated netsimplementation
Restore summary (Z-04)Design Status and counts after the restoreimplementation
Netlist, DEF, stream, SPEF, SDF (Z-05 to Z-08)name, size, write time, source session, settingsimplementation
Signoff reports on those filesowned by the signoff toolssignoff

The manifest is the report of this chapter. Its job is to show that every file is newer than the last change to the database, and that SPEF, SDF and timing files come from an extraction made after it. The example below is SYNTHETIC and partial: it shows one SPEF and no SDF or constraints line. The times, sizes and names are invented, and the format is only a suggestion. Record a checksum with each size.

Reading a handoff manifestSynthetic report, not tool output
HANDOFF MANIFEST            ## illustrative excerpt
run id               blk_r07
last database change 13:58   ecoAddRepeater on net n_ctl_47
saved database       14:02   blk_final.enc.dat

file               written  size     corner/view   check
closure reports    13:44    -        all           Z-02 clean
timing reports     13:41    -        3 views       Z-03 clean
blk_final.spef     13:52    41 MB    rcworst       rcOut finished
blk_final.v        14:05    3 MB     -             assign check clean
blk_final.def      14:07    48 MB    -             defComp: no differences
blk_final.gds      14:31    210 MB   -             2 cell names changed in merge

Let us read it with one rule: a file is current only if it was written after the last change to the database. The last change is the buffer at 13:58. The netlist, the DEF file and the stream file were written after it, so they describe the final database. The closure reports, the timing reports and the SPEF were written before it, so they describe a database that no longer exists. The two merged cell names in the stream file are not an error, but they must be named in the manifest. The manifest is therefore not ready: three rows are stale, and the ECO that made them stale was not requalified.

The open-issues log is the second record. Every deviation that you accept goes into it, with an owner and an end condition. The tool never grants a waiver. A person does, and the log is where that person is named. The rows below are SYNTHETIC and only show the shape.

IDCardFindingClassDecisionOwner and end condition
OI-01Z-02DRC markers on a power via array, none on signal routingimplementationDefer to signoffRouting lead. Closed by the signoff DRC result.
OI-02Z-03Hold slack in one corner below budget by a small marginimplementationFixTiming lead. Closed by an ECO and its Chapter 15 reruns.
OI-03Z-07Two merged cell names changedimplementationAcceptRelease owner. Names listed in the manifest.

16.6 Healthy, suspicious and hard-stop examples

FindingStatusWhy
Every file is newer than the last database change, and each has a check recordedPASSThe files describe one database, and the manifest proves it.
A restored session gives the same summary as the frozen sessionPASSThe saved database is a usable record of the design.
A merge renamed a cell and the manifest does not say soWARN / REVIEWThe rename is probably harmless, but the consumer must know.
An SDF written without recomputed delaysWARN / REVIEWIt holds only cached delays, which may not suit general use.
A closure or timing report older than the last ECOHARD STOPThe result describes a database that no longer exists.
A required corner has no SPEFHARD STOPSignoff timing cannot run for that corner.
Open issue with no owner or end conditionHARD STOPAn unowned deviation is not accepted, only forgotten.
Block LEF abstract for a top-level blockNOT APPLICABLENo parent design uses the block.
Power-intent files in a single-supply blockNOT APPLICABLENo power domains exist.

16.7 Debugging, corrective action and reruns

A failed handoff check has one of two causes. Either the database has a defect, or the files do not match the database. The first goes back to the chapter that owns the defect. The second is repaired by writing the file again. Both end in the same step, which is to start again from Z-01, because the handoff is only as good as its newest change.

SymptomLikely causeAction
Restore summary differs from the frozen summaryThe database changed after the summary, or the saved directory was editedSave to a new name from the frozen session and repeat Z-04.
A file is older than the saveIt was written in an earlier session or before the last changeRewrite it in the frozen session.
defComp lists differencesThe DEF was written before a change, or with different optionsRewrite the DEF with the recorded settings and compare again.
Stream log lists unmapped layersThe map file does not cover a layer of the designCorrect the map file, as in Chapter 13, and write again.
check_design reports assign statementsThe netlist has assign statements that the consumer cannot readRemove them in the netlist source, or with remove_assigns where it can. That changes the database, so start a new freeze.
A file has the right name but the wrong cornerOne run was reused for several cornersPut the corner in the file name and write one file per corner.

16.7.1 Worked example: files written around a late buffer

Take the manifest of Section 16.5. A hold buffer was added to net n_ctl_47 at 13:58, after the closure reports and the SPEF. The buffer is row B of the rerun matrix in Chapter 15, so it is a new freeze. The row asks for the detailed-route checks, the post-route timing and the extraction again, which are the three stale rows of the manifest.

The decision is HARD STOP for the closure reports, the timing reports and the SPEF. The netlist, the DEF file and the stream file were written after the change, from the database saved at 14:02, so they stay only if the reruns find nothing and the restore proof of Z-04 is repeated. Run Z-01 to Z-04 again, then write the SPEF with Z-08. The times and names here are invented. The rule is general: a deliverable is valid only for the database state it was written from.

16.8 Exit criteria and master checklist

The table is the one-page master checklist. A row is complete only when its evidence is stored with the manifest. PRE is preliminary evidence and IMPL is implementation evidence. No row is complete signoff evidence: the signoff-class items of Chapter 14 are comparisons, and the project decides how to count them.

ChStageQuestion that must be answered yesEvidence heldClassDone
1Tool and session
S-01 to S-06
Do release, UI, settings, resources, licences and the one-restore provenance match the project baseline?Version string, log path, message lists, mode listing, resource and licence recordsIMPL
2Design import
I-01 to I-06
Is every instance bound, no net multiply driven, and the inventory as expected?check_design, checkDesign and checkUnique reports, PG identity, inventory snapshotPRE + IMPL
3SDC and MMMC
T-01 to T-07
Do views, clocks, modes, exceptions and coverage equal the methodology?check_timing output, view list, coverage, baseline slack and DRVsPRE + IMPL
4Floorplan
F-01 to F-07
Does the geometry match the specification, and does the floorplan leave routing room?checkFPlan, checkPlace, pin check, TU and EU, early congestion, special-net baselinePRE + IMPL
5Power planning
P-01 to P-08
Is the grid connected, via-complete and inside the track budget?PG connectivity, power via and special-route reports, track tablePRE + IMPL
6Pre-placement readiness
R-01 to R-09
Were the placement prerequisites met before placement started?Prerequisite check output, the settings that applied, saved checkpointPRE + IMPL
7Placement
L-01 to L-10
Is placement legal and uncongested, with pre-CTS timing reviewed?checkPlace, density, congestion, pre-CTS timingPRE + IMPL
8CTS readiness
K-01 to K-10
Is the clock specification complete and checked before CTS?Clock specification, prerequisite check outputIMPL
9CTS
C-01 to C-09
Do the trees meet skew, DRV and timing budgets in every corner reported?Clock tree reports, clock routes, post-CTS timingPRE + IMPL
10Global and early routing
G-01 to G-09
Is routing resource sufficient before detailed routing starts?Congestion and overflow reports, route setup and readiness recordsPRE + IMPL
11Detailed routing
D-01 to D-10
Is routing complete, DRC clean and antenna clean, with a post-route baseline?DRC, connectivity and antenna reports, timing baselinePRE + IMPL
12Post-route optimisation
O-01 to O-09
Does timing meet the budget in every view without new violations?timeDesign reports per view, DRC rerun, area and powerPRE + IMPL
13Chip finishing
H-01 to H-10
Are filler, metal fill and density qualified, and the stream reviewed?Filler, fill, density and antenna reports, post-fill timing, stream logIMPL, PRE if fill assumed
14Extraction and correlation
X-01 to X-08
Is every net annotated, and does extraction correlate within the budget?Annotation report, SPEF per corner, factors, settings parity, correlation tablePRE + IMPL, SIGNOFF compared
15ECO
E-01 to E-08
Was every change since qualification requalified by the rerun matrix?Manifest, defComp report, reruns namedIMPL
16Handoff
Z-01 to Z-08
Do all files come from one frozen database, with manifest and open issues?Cards Z-01 to Z-08, manifest, open-issues logIMPL

Handoff is ready when every row is complete, every file is newer than the last database change, and the open-issues log has an owner for every item. It is not signed off. Signoff starts on the far side of the boundary in Section 16.3.1, with tools and rule decks that are outside this book.

CHAPTER 16 SANITY CHECKS

16.9 Sanity check cheat sheet: Final handoff

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
Z-01Run identity and final summary
Freeze
getVersion
report_message -errors -count
report_message -suppressed
Release as approved, no error ID, Routed, expected counts.A new warning ID, or a count change only partly explained.An error ID, a new suppressed ID, or not Routed.
Z-02Physical closure on the frozen database
Before the save
checkPlace <report_file>
checkFiller -file <f>
verify_drc -limit 0 -report <f>
Nothing unplaced, no DRC, open, short, antenna or unapproved filler gap.A cap or option hides a category.Any such violation without an owner and a decision.
Z-03Timing on the frozen database
Before the save
check_timing -verbose
timeDesign -postRoute -outDir <dir> -prefix <prefix>
report_annotated_parasitics -list_not_annotated
Setup and hold meet budget in every required view, every net annotated.Options or directory differ from the baseline run.A required view misses the project budget, or a net has no annotated parasitics.
Z-04Save and restore proof
Save
saveDesign <final>.enc -tcon -rc
restoreDesign <final>.enc.dat <top>
No restore error, and the summary equals the frozen one.The restore needed a file from outside the saved directory.The restore errors, or the summaries differ.
Z-05Netlist export
Write
check_design -type assign_statements -out_file <f>
getExportMode
saveNetlist <final>.v
No assign statement, settings recorded, file after the save.A setting differs from default without a reason.check_design reports an error, or a needed PG port is missing.
Z-06DEF export and comparison
Write
defOut -routing <final>.def
defComp <final>.def -reportFile <f>
No differences, so the file and the database agree here.A few differences, each in the manifest.Added, deleted or moved instances, or changed routes.
Z-07Stream file
Write
setStreamOutMode -check_map_file true
streamOut <final>.gds -mapFile <map> -units <n> -merge {<gds_files>} -reportFile <f>
getStreamOutMode
No unmapped object or unexplained rename, file after the save.A merged cell name changed and the manifest does not say so.Required layers unmapped, or the merge failed.
Z-08Parasitics, delay and constraint files
Write
rcOut -spef <final>.spef -rc_corner <rc>
write_sdf <final>.sdf -recompute_delay_calc -min_view <v1> -max_view <v2>
writeTimingCon <view>.sdc -view <view>
A SPEF per corner, an SDF per view pair, a constraints file per view, all after the last change.An SDF written without recomputed delays holds only cached delays.A corner has no file, or a file or its extraction predates the last change.
CHAPTER 16 CHEAT SHEET

16.10 Command cheat sheet: Final handoff

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

CommandWhat it produces
Run identity and messages
getVersionThe full release and build string. Record it in the handoff manifest.
getLogFileName -fullPathThe absolute path of the current log file, for the manifest.
report_message -errors -countA Tcl list of {ID count} pairs for every error ID issued. An empty list means no errors were issued.
report_message -warnings -countA Tcl list of {ID count} pairs for every warning ID issued, to compare with the baseline.
report_message -suppressedThe message IDs suppressed in this session. Suppressed IDs hide evidence, so compare the list with the baseline.
report_command_mode -non_defaultEvery *Mode option whose value differs from the default, for the manifest.
getLicenseStatusA summary of every licence the session has checked out.
report_resource -peakThe peak memory used by the session so far.
Inventory and summaries
summaryReport -noHtml -outfile <f>A text summary with Design Status, instance counts, and macro and standard-cell tables. Writes a file.
reportGateCount -stdCellOnly -outfile <f>The gate count of standard cells only, written to a file whose default extension is .gateCount.
report_area -out_file <f>The combined standard-cell area of each hierarchical module and of the top-level design. Writes a file.
report_area -summaryThe area summary of the design as a whole. The reference calls it equivalent to -depth 0.
Closure checks rerun on the final database
checkPlace <report_file>Placed, fixed and unplaced counts and placement violations by category. Adds markers and writes a file.
verify_drc -limit 0 -report <f>DRC violations on placed instances with markers. The default cap is 1000 errors, and 0 removes the cap. Adds markers and writes a file.
verify_drc -check_only special -report <f>DRC on special wiring only, for the power grid. Adds markers and writes a file.
verifyConnectivity -type regular -report <f>Opens, unconnected wires and pins, loops and unrouted nets on regular nets. Adds markers and writes a file.
verifyConnectivity -type special -report <f>The same check on special nets. Unconnected terminals are still reported unless -noUnConnPin is given.
verify_antenna -report <f>Process antenna violations on routed nets. Default report name is <design>.antenna.rpt. Writes a file.
verify_antenna -detailed -report <f>The antenna value of every layer of every net, including nets with no violation. Writes a file.
check_design -type assign_statements -out_file <f>A check of the netlist for assign statements, meant to run before a netlist is exported for signoff. Writes a file.
Timing rerun on the final database
check_timing -verboseConstraint consistency and completeness warnings, with detail.
timeDesign -postRoute -outDir <dir> -prefix <prefix>Post-route extraction and setup timing reports in the output directory. Changes the analysis mode and the database. Runs long and writes files.
timeDesign -postRoute -hold -outDir <dir> -prefix <prefix>The same for hold. Runs long and writes files.
timeDesign -postRoute -expandedViews -outDir <dir>A separate report directory for every active view in a multi-mode multi-corner session. Runs long and writes files.
report_annotated_parasitics -list_not_annotatedThe annotated parasitics summary by net type, and the nets that have no annotation.
Save and restore
saveDesign <final>.encA restore file and the .dat database directory. Saving to an existing location overwrites it. Writes files.
saveDesign <final>.enc -tcon -rcThe same, with every SDC file copied into the directory and RC extraction data saved. Writes files.
saveDesign <final>.enc -tgzA single gzipped tar file, with library, SDC and other external files copied inside. Writes a file.
saveDesign <final>.enc -no_wait <out_file>A save in a separate process while the session continues. Read the out file to see whether it completed.
restoreDesign <final>.enc.dat <top>The saved design in memory. Do not edit the saved directory, because a modified one can corrupt the restore.
Netlist
getExportModeEvery setExportMode parameter with its value and whether the user set it.
setExportMode -fullPinout trueMakes saveNetlist write every pin of every instance, connected or not. Changes the session.
saveNetlist <final>.vThe logical Verilog netlist. Hierarchical only if the netlist loaded was hierarchical. Writes a file.
saveNetlist <final_pg>.v -includePowerGroundThe netlist with physical-only PG nets and PG ports added, which some LVS flows prefer. Writes a file.
saveNetlist <final>.v -replaceTieConnection1'b0 and 1'b1 constants replaced by undriven nets, for consumers that cannot read the constants. Writes a file.
saveNetlist <final_phys>.v -includePhysicalCell {<cells>}The netlist with physical instances of the named cells. The reference says such a netlist should not be read back into Innovus. Writes a file.
DEF and floorplan files
defOut -routing <final>.defA DEF file with floorplan, placed and unplaced standard cells and routing. Writes a file.
defOut -floorplan -unplaced <final_fp>.defA DEF file with the floorplan and placed standard cells, and the unplaced standard cells. Writes a file.
defOut -scanChain <final>.defA DEF file that also carries scan chain information, needed to keep the chain ends when the DEF is reloaded. Writes a file.
defComp <final>.def -reportFile <f>The differences between a DEF file and the physical data in the database. Default report name is defPhyDiff.rpt.
saveFPlan <final>.fpThe floorplan information, including the placed, fixed and covered blocks, saved to a file. Writes a file.
saveIoFile <final>.ioThe current I/O information saved to a file. Writes a file.
Stream files
getStreamOutModeThe current setStreamOutMode settings.
setStreamOutMode -check_map_file trueMakes streamOut check the map file: design objects that the map file does not map are listed in the log. Changes the session.
streamOut <final>.gds -mapFile <map> -libName <lib> -units <n> -reportFile <f>A GDSII file of the whole database with all mapped layers. The report file receives the cell names that were changed. Writes files.
streamOut <final>.gds -mapFile <map> -merge {<gds_files>}A GDSII file with the cell and macro stream files merged in, and a warning for every cell name that changed. Writes a file.
streamOut <final>.oas -mapFile <map> -format oasisAn OASIS file in place of GDSII. Writes a file.
Parasitics and delays
rcOut -spef <final>.spef -rc_corner <corner>SPEF for the named RC corner. Writes a file.
rcOut -spef <final>.spef -view <view>SPEF for the RC corner of the view. Views that share a corner give the same SPEF. Writes a file.
writeTimingCon <final_view>.sdc -view <view>The timing constraints of the named view written in Design Compiler format. Writes a file.
write_sdf <final>.sdf -recompute_delay_calc -min_view <view> -max_view <view>An SDF file with delays recomputed so that it is complete for general use, with min and max slots from the two views. Runs long and writes a file.
Block abstracts (only if the block is used inside a parent design)
write_lef_abstract <block>.lef -noCutObs -stripePin -PGPinLayers <n> -specifyTopLayer <n>A LEF abstract of a routed block with one OBS per routing layer and PG pins on the top layer stripes. Writes a file.
write_lef_library <lib>.lefThe LEF library data present in the database, technology and macros. Writes a file.
saveModel -dir <dir>Block-level LEF, DEF and database for top-level implementation. Timing library generation needs another command. Writes files.