Skip to content
Ch 13 / 16 Chapter 13: Chip finishing and post-fill qualification
CHAPTER 13

Chip finishing and post-fill qualification

After routing and post-route optimisation, the design still has to be finished: filler, tap, end-cap and decap cells are added, and dummy metal is inserted to even out density. None of this is logic, yet all of it changes the layout and the parasitics. This chapter checks that the finished layout is complete, legal, connected, dense enough and still meets timing.

13.1 Stage purpose

Finishing adds four groups of objects. Filler cells fill the gaps between standard cells so that the power rails and the n-wells run without a break. End-cap and well-tap cells close the ends of the rows and tie the wells to the supply at a set distance. Decap cells add decoupling capacitance. Metal fill is a set of dummy metal shapes, and via fill the equivalent for cut layers. Both exist to make the density of each layer more even, which helps manufacturing.

Metal fill is useful and not free. The added metal increases the coupling capacitance to neighbouring signal wires, so each window of the layout trades a better density for a little more delay. Figure 18 shows this on one small region: before fill, the four windows hold between 8 and 14 percent metal; after fill they are closer together, and the ledger lists what that cost in shapes and in added capacitance. The numbers are illustrative.

W1 5 shapes 14 > 17%W2 11 shapes 9 > 17%W3 12 shapes 8 > 16%W4 12 shapes 9 > 17%M2 horizontal tracks, one region, four density windowsPn1clk_atrim halosignal wirefill shapefill removed by trimwindow edgetrack guide, pitch Pwindow label: shapes added, density before > after (metal area / window area)Cost ledger, illustrativewinshapesdensity %+C fFW1514 > 170.70W2119 > 171.00W3128 > 160.56W4129 > 172.08all404.34Trim near clk_a, W4 onlyW489 > 151.124 shapes removed, C 2.08 > 1.12dC = facing length x 0.004 fF per unit,wires two tracks apart. Not tool data.
Figure 18. Metal fill and density windows on one M2 region, with the cost ledger
Read it. The wide blue bars are signal wires on tracks, spaced one track pitch P apart. The pale dashed bars are fill shapes: they sit on free tracks and stay one active spacing away from every signal. The dashed lines cut the region into windows W1 to W4, and each window label gives its fill shapes and its density before and after fill. The amber box is the trim halo around the critical net clk_a. The four red dashed bars inside it are fill that the trim removed. The ledger on the right adds up shapes and coupling capacitance for each window, and the last two rows show the trimmed window. All values are illustrative.

Three different densities appear in the reports of this stage, and they are easy to confuse. Placement density is the share of row sites occupied by cells, and checkPlace and reportDensityMap report it. Metal density is the share of a window covered by metal on one routing layer, and verifyMetalDensity reports it. Cut density is the same idea for via layers, and verifyCutDensity reports it. A clean result for one says nothing about the others.

The order of the steps matters, and Figure 19 gives the sequence this chapter follows. A later step can invalidate an earlier check, which is why the loop on the right returns to the density and timing checks. The last card, H-10, covers the export of the finished database to stream, OASIS, DEF and a physical netlist, which happens after the loop has settled. Antenna repair is not a step in the figure. It reroutes metal, so close it before filler and fill where you can, and see card H-08 for the reruns if it happens late.

1 Route closedecoRoutelast ECO2 Filler and decapaddFiller3 Patch filler DRCecoRoute-fix_filler_drc_with_patch_only4 Cell checkscheckFillerverifyWellTapcheckPlace5 Metal filladd_metal_fill_signoff-fill6 Density checksverifyMetalDensityverifyCutDensity7 Extract, timeextractRCtimeDesign -postRoute8 Trim and verifytrimMetalFillNearNetverify_drcrerun steps 6 to 8 after every fill changeamber: changes the database or the RC dataslate: reads or reports only
Figure 19. Chip-finishing order and the loop that fill changes force
Read it. Read the boxes from the top left, then along the lower row from right to left. Amber boxes change the database or the RC data, slate boxes only read it. The dashed loop from step 8 returns to step 6, because trimming or adding fill changes both density and parasitics, so steps 6 to 8 run again.

This chapter keeps four things apart. Tool completion means a command ran. Analysis coverage means the check looked at every layer, window and cell it needed to. Stage qualification means the evidence supports leaving chip finishing. Signoff is the final verification in the project signoff tools, which this chapter does not replace. An empty report is not a pass, and a fill run that finishes does not show that any density rule is met.

13.2 Entry prerequisites

Must already be trueWhy
Chapters 1 to 12 passed, with detailed routing complete and post-route timing closedFill and filler are added to final metal. Any later routing change invalidates them.
The last ECO has been made, and its route is DRC clean before filler is addedA clean baseline lets you attribute later violations to filler or fill.
Global net connection rules exist for the supply pins of the filler cellsThe reference states that the built-in DRC checks of addFiller are not accurate without them.
The filler, end-cap, well-tap and decap cell lists and rules come from the library documentationThis book does not name cells or distances.
Density rules are available, either in the LEF or in a project rule fileWithout them the density check uses internal default values, which are not your rules.
The signoff fill engine and its licence are available if signoff fill is usedadd_metal_fill_signoff runs through an external fill engine.
A pre-fill timing baseline from timeDesign -postRoute is storedThe cost of fill is the difference between two runs, so one of them must exist first.

13.3 Relevant files and analysis context

The inputs are the filler list, the tap and end-cap rules, the density rules, and the layer map that connects Innovus layer names to stream layer numbers for the fill data. The outputs are the filler and tap instances in the database, the fill data, and the report files that each card names.

Three settings are stored with the design and therefore change what a later run does: setFillerMode, set_metal_fill_signoff_mode and set_verify_drc_mode. The reference states that parameters given directly to addFiller apply to that run only and supersede setFillerMode. Thus, record the stored values with each report, because two runs with different stored values check different things.

Signoff fill is kept as a hierarchical fill database. The reference lists -auto_load_fills, -view_fills and -flatten for bringing it into the session, and describes flattening as the editable mode for DRC, density and timing. Confirm that the fill is loaded or attached before you read a density, DRC or trim result as complete. Whether each check sees fill that is not loaded is not verified here.

The timing views for the post-fill comparison are the same views used for post-route signoff preparation in Chapter 12. Use the same views, the same analysis mode and the same constraint set before and after fill, or the difference you measure is not the effect of fill.

13.4 Checks and command cards

13.4.1 Pre-stage checks

Before any filler is added, store four baselines. Each one makes a later number meaningful.

BaselineWhere it comes fromUsed later for
DRC and connectivity result of the routed designCard H-07 before fillerDeciding whether a violation is caused by filler or fill
Placed instance count, and any FIXED count your checkPlace summary prints (the reference documents no FIXED count: not verified)Card H-04 before fillerDetecting cells that moved or were lost
Setup and hold summary of the routed designCard H-09 before fillPricing the timing cost of fill
Stored filler, fill and DRC settingsgetFillerMode, get_metal_fill_signoff_mode, get_verify_drc_modeExplaining differences between runs

13.4.2 Post-stage checks

H-01Filler settings
Question it answersWhich filler list and settings fill the rows, and was the insertion DRC aware?
StageAfter last ECO
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateRouting complete and final ECOs done. Global net connection rules set for the filler supply pins. Filler cell list taken from the library documentation.
Legacy UI
getFillerMode
addFiller -cell {<filler cells>} -prefix FILLER
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
-cell names the filler cells. Take the list from the library documentation, not from this book.
-prefix sets the instance prefix, FILLER by default. Later delete and check steps depend on it.
-markFixed places the new fillers in FIXED status. Use it only if your project wants them locked.
-check_signal_drc checks fillers against existing routing after routing. The reference gives true as the default.
-fixDRC replaces fillers that cause DRC violations marked by verify_drc, and leaves a gap if no replacement is legal.
Scope and viewWhole core, or boxes given with -area. A power domain is selected with -powerDomain only if the block uses UPF.
Chip-finish orderThe reference recommends ecoRoute for the last ECO, then addFiller with the full set of filler cells including decap cells, then ecoRoute -fix_filler_drc_with_patch_only. The reference also describes inserting filler before detailed routing in most flows. This card follows the post-route sequence.
Effect on sessionupdates the design database. Some commands in this card only read or report.
OutputConsole messages with the filler summary and the final number of filler gaps. Filler instances in the database.
Fields that matterThe gap count printed at the end of the run. Any DRC message between a filler and a wire. The getFillerMode values, which must match the project filler list.
HealthyFiller list matches the project; zero gaps.
WarningFillers inserted with DRC markers, or a few explained gaps.
Hard stopWrong filler list, or filler DRC left.
Common misuseRunning addFiller before the global net connection rules exist, so its built-in checks are inaccurate. A later ECO that moves cells over existing fillers.
Root cause and fixSet the list with setFillerMode, remove the old fillers with deleteFiller and the same prefix (it removes every instance whose name starts with the prefix), and insert again.
Rerun after a fixRerun H-02, H-03 and H-04, then the density and timing cards.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-02Filler gaps
Question it answersDoes every site that needs a filler have one?
StageAfter filler insertion
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateFiller inserted. For the stack length checks, the limits are set with setFillerMode.
Legacy UI
checkFiller -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
-file writes the console output of the check to a file.
-horizontal_max_length checks the horizontal stack length against its limit. The setFillerMode defaults are 100 um horizontal and 50 um vertical, so record the limits in force.
-vertical_stack_max_length checks the vertical stack length against its limit.
Scope and viewWhole core unless -area limits the box.
Effect on sessionwrites files
OutputA count of the sites that are missing filler cells, and a file if requested.
Fields that matterThe total number of gaps found. The width of any gap, which -reportGap can isolate. Stack length violations.
HealthyZero gaps, no stack violation.
WarningA few gaps beside halos, each listed and approved.
Hard stopGaps between standard cells.
Common misuseReading a result from a run limited with -area as a whole-core result.
Root cause and fixAdd a filler that fits the narrowest gap to the list, then run addFiller again. Gaps next to blockages need a project decision.
Rerun after a fixRerun H-02 and H-04.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-03Tap, end-cap, decap
Question it answersAre well taps, end caps and decap cells present as the project specified?
StageAfter filler and decap
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateEnd caps and well taps inserted at the floorplan stage. Decap cells inserted if the power plan calls for them.
Legacy UI
verifyWellTap -rule <um> -report <f>
reportDeCap -area <llx> <lly> <urx> <ury>
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
-rule sets the well-tap distance rule. The reference says the spacing between two taps should be twice the -rule value and the distance from a tap to the row end equal to it. Derive the value from your technology rule and do not copy the addWellTap -cellInterval value.
-report names the report file.
-area limits reportDeCap to a box.
getEndCapMode is a read-only query of the end-cap settings. It is in the cheat sheet.
Scope and viewverifyWellTap checks the whole design but skips row areas under blocks, halos and placement blockages. reportDeCap reports one box.
What has no commandThe reference documents no dedicated end-cap verification command. Compare the end-cap instance count with the count your floorplan specification implies, and use H-04 for the rest. The reference describes check_design -type place as a check run before placement, so it does not confirm the finished database.
Effect on sessionadds GUI violation markers; writes files. Some commands in this card only read or report.
OutputMarkers and a report for taps, the end-cap settings as a value list, and a list of the decap cells in the box.
Fields that matterMissing taps. Tap pairs further apart than the rule. The areas the check skips. The decap cell count against the power plan.
HealthyNo missing taps, and end caps and decap match the plan.
WarningRows under halos or blockages are skipped.
Hard stopMissing taps, or taps further apart than the rule.
Common misuseTreating getEndCapMode as a completeness check. It shows what would be inserted, not what is in the database.
Root cause and fixMissing taps or end caps usually send you back to the floorplan stage, because the reference places addEndCap after floorplan and before addWellTap. After any change, rerun the check and compare against H-04.
Rerun after a fixRerun H-03 and H-04.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-04Placement with fill
Question it answersAre all cells still legal, and has the set of placed instances changed unexpectedly?
StageAfter filler and decap
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateFiller, tap, end-cap and decap cells inserted. The pre-filler baseline from the pre-stage checks stored.
Legacy UI
checkPlace <report_file>
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
-honorPrerouteForFiller also checks physical cells placed under preroutes. By default filler under preroutes is not reported.
-ignoreFillerInUtil leaves filler cells out of the utilisation figure.
Scope and viewWhole design. Preplaced instances and macros count as FIXED, and the reference says fixed macros are not checked.
Objects that must not moveAfter fill, any command that moves cells changes the metal that the fill was computed against. Section 13.7.1 lists the commands.
Effect on sessionadds GUI violation markers; writes files
OutputA violation report with markers, the number of placed instances, the number of unplaced macros and the placement density lines.
Fields that matterViolation counts by type. The placed count against the baseline. Placement density with and without filler. Any FIXED count the summary prints (not verified).
HealthyNo violations, and the counts equal the baseline plus the cells you added.
WarningViolations unchanged from the baseline.
Hard stopOverlaps, cells off row or core, or a placed count below the baseline.
Common misuseComparing the utilisation printed by checkPlace with the density printed by timeDesign. The reference notes that only checkPlace counts cell padding.
Root cause and fixRemove the cause: re-insert the physical cells, or declare an ECO and repeat the finishing sequence.
Rerun after a fixRerun H-01 to H-04, then the density and timing cards.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-05Metal fill record
Question it answersWhich layers received fill, how much, and with which settings?
StageAfter metal fill
ProductInnovus Implementation. The signoff fill run calls the Pegasus or PVS application, so that product and its licence must be available for add_metal_fill_signoff. The report commands read the result.
Required stateDetailed routing complete. add_metal_fill_signoff -fill has completed. The rule file and window settings are recorded.
Legacy UI
get_metal_fill_signoff_mode
report_metal_fill -fill_area -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
-fill_area reports the area of the fill shapes for each layer.
-fill_length is the companion option that reports the length of the fill shapes for each layer.
-file names the report file.
Scope and viewWhole design, per layer and per net class (floating or connected).
Via filladd_metal_fill_signoff generates via fill by default and -no_via_fills turns it off. The reference sample of the summary lists metal layers only, so check via fill with the cut density check in H-06.
Effect on sessionwrites files. Some commands in this card only read or report.
OutputA Metal Fill Summary table by layer, with the number of shapes and their area, and the stored fill options as a value list.
Fields that matterShapes and area per layer. The floating share per layer. The stored window size, window step, minimum density and rule file.
HealthyEvery required layer has fill, with the recorded settings.
WarningA required layer has few shapes, or the floating share changed.
Hard stopNo report, empty summary, or the wrong rule file.
Common misuseTreating a report that lists shapes as proof that the density rules are met. Shape counts are not densities.
Root cause and fixCorrect the stored settings or the rule file, delete the fill, and run add_metal_fill_signoff -fill again.
Rerun after a fixRerun H-05, H-06, H-07 and H-09.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-06Metal and cut density
Question it answersIs metal density and via density within the window rules on every layer?
StageAfter metal fill and after any trim
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateFill added, loaded into the session where the check needs it (see 13.3), and, if used, trimmed. Density values available from the LEF or from the project rule file.
Legacy UI
verifyMetalDensity -report <f>
verifyCutDensity -layer {<cut layers>} -report <f>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-report names the report file. The default is a design-name file.
-layer limits the check to named layers. Name every layer in the fill rule.
-detailed writes a more detailed report.
-ignoreLEFDensity ignores the LEF macro density table. Use it only if your project says so.
Scope and viewEvery routing layer and macro for verifyMetalDensity. The named cut layers for verifyCutDensity.
Effect on sessionadds GUI violation markers; writes files
OutputReport files that list violating windows with their layer, window and density, and markers in the design window.
Fields that matterLayer, window coordinates and density value of each violation. Whether the limits came from the LEF or from internal defaults.
HealthyNo density violation against LEF or project values.
WarningClean only against internal defaults.
Hard stopViolating windows, or fill-rule layers never checked.
Common misuseConfusing metal density with placement density, or checking only a few layers and reading the result as complete.
Root cause and fixAdd fill in the failing windows, or reduce trimming there. Rerun both density checks after any trim.
Rerun after a fixRerun H-05, H-06, H-07 and H-09.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-07DRC and connectivity after fill
Question it answersDoes the finished layout, fill and filler included, pass DRC and connectivity checks in the database?
StageAfter fill and trim
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateFiller and fill present. The baseline from the pre-stage checks stored.
Legacy UI
verify_drc -limit 0 -report <f>
verifyConnectivity -type all -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
-limit sets the maximum number of reported errors. The reference gives 1000 as the default, and 0 removes the limit.
-report names the report file.
-ignore_fill_wire makes verify_drc ignore fill wires. Run once with and once without it to separate fill effects.
-noFill makes verifyConnectivity ignore metal fill. Record which setting you used.
Scope and viewWhole design. verify_drc checks placed instances only.
Evidence classBoth checks are implementation evidence. The final DRC verdict comes from the project signoff verification flow.
Effect on sessionadds GUI violation markers; writes files
OutputMarkers in the design window and report files with violations by type.
Fields that matterViolation count by type, and whether the count equals the limit. Opens, shorts, unrouted nets and unconnected pins.
HealthyZero DRC with no limit, and no opens or unrouted nets.
WarningFloating-metal entries with a recorded reason.
Hard stopAny DRC on fill or filler, any open or short, or a count at the limit.
Common misuseReading a report that stops at the default limit as complete. Reading verifyConnectivity antenna entries as process antenna results.
Root cause and fixFiller violations: addFiller -fixDRC, then ecoRoute -fix_filler_drc_with_patch_only. Net violations: reroute, because addFiller cannot repair them. Fill violations: trim or delete that fill.
Rerun after a fixRerun H-07, and the density and timing cards if fill changed.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-08Antenna status
Question it answersDo the routed nets satisfy the process antenna rules, and how were violations repaired?
StageAfter repair
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateSignal nets routed. The LEF contains process antenna or maximum floating area keywords. Repairs are best finished before filler and fill, because they reroute metal.
Legacy UI
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
-report names the report file. The default is a design-name file.
-detailed lists the antenna value of every layer of every net, including nets with no violation.
-use selects signal, power, clock or all nets.
Scope and viewAll nets by default, or the nets named with -nets.
Why filler is recheckedgetNanoRouteMode -route_antenna_diode_insertion returns whether the router inserts diodes. The reference states that the router can insert antenna diodes even when filler is already placed, and can swap filler for diode cells.
Effect on sessionadds GUI violation markers; writes files
OutputMarkers and a report file with the process antenna violations. With -detailed, a star marks the point of violation.
Fields that matterNet, layer and antenna value of each violation. Whether diode insertion is enabled and which diode cell is named.
HealthyNo antenna violation, and the LEF carries antenna rules.
WarningRepaired with diodes, placement to recheck.
Hard stopAntenna violations remain after repair.
Common misuseRunning the check on a LEF without antenna keywords, so that the clean report covers nothing. Using the verifyConnectivity antenna count, which reports dangling wires.
Root cause and fixEnable diode insertion and name the diode cell with setNanoRouteMode, then repair the routing. The reference states that layer changes are the default repair.
Rerun after a fixRerun H-08, then H-01 to H-07 and H-09, because repair reroutes metal and diodes can replace fillers.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-09Post-fill timing
Question it answersDid extraction see the fill, and how much did fill change the parasitics and the timing?
StageAfter fill and trim
ProductInnovus Implementation. Signoff Quantus extraction or Tempus timing are separate products if you use them.
Required stateFill present. The pre-fill timing baseline stored. The same analysis views and constraints as the baseline.
Legacy UI
timeDesign -postRoute -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
-assumeMetFill is a setExtractRCMode option, not a timeDesign option. Only effort level low supports it. At postRoute the value is ignored and native extraction uses the LEF fill active spacing, or 0.6 um if the LEF gives none.
-pvs_fill is also a setExtractRCMode option. It sends attached fill data to signoff Quantus extraction and has no effect on TQuantus or IQuantus inside Innovus. It needs a stream layer map.
-outDir names the report directory. The default is timingReports.
-prefix sets the report file prefix, so before and after runs do not overwrite each other.
Scope and viewAll active views. The reference says timeDesign -postRoute runs native detailed extraction by default, while its example says TQuantus by default. Read the engine with getExtractRCMode first.
How fill reaches extractiongetExtractRCMode shows the engine and fill settings in force, and extractRC, which is in the cheat sheet, rebuilds the RC database on its own. Four routes appear in the reference: an assumed fill with -assumeMetFill, imported fill wires with setNanoRouteMode -extract_keep_fill_wires true, attached signoff fill with setExtractRCMode -pvs_fill true for signoff Quantus, and the metal_fill setting of the Quantus extra command file for TQuantus and IQuantus. In that file TQuantus supports only advanced virtual metal fill, and IQuantus extracts floating fill by default.
Effect on sessionupdates the design database; writes files; runs an expensive analysis
OutputAn RC database and timing reports in the output directory, with a summary per run.
Fields that matterThe extraction settings in force. Setup and hold WNS, TNS and violating endpoints per view, before and after fill.
HealthySlack within budget, with fill-aware extraction.
WarningSlack worse but inside budget, or fill only assumed.
Hard stopFill unseen by extraction, or timing beyond budget.
Common misuseRunning timeDesign -postRoute -reportOnly after adding fill. It reuses the extraction already in memory.
Root cause and fixMake the fill visible to extraction. If timing is worse, trim fill near the failing nets, then rerun the density checks.
Rerun after a fixRerun H-06, H-07 and H-09 after every trim.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
H-10Streamout readiness
Question it answersIs the finished database ready to be written as GDS or OASIS and DEF, with the fill included in the stream and every layer mapped?
StageBefore hand-off
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateH-01 to H-09 passed on this database. The project layer map file, the macro stream files and, if signoff fill is used, the attached fill data are available.
Legacy UI
streamOut <name>.gds -mapFile <map>
defOut -floorplan -routing <name>.def
getStreamOutMode
setStreamOutMode -check_map_file true
streamOut <name>.gds -mapFile <map> -signoff_fill
streamOut <name>.oas -mapFile <map> -format oasis
saveNetlist <name>.v -includePhysicalInst -includePowerGround
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 prints the objects that exist in the database but are not mapped in the map file. Only the main objects are checked.
-mapFile names the layer map file. The reference calls it required for a successful stream out and states that layers it omits are not written.
-mode ALL writes every layer in the map file. FILLONLY writes only fill layers, NOFILL only non-fill layers, NOINSTANCES wiring without component instances.
-units sets the resolution of the stream file. The default is the unit in the LEF file.
-merge merges external GDS or OASIS files for macros and checks them for name collisions. Without -uniquifyCellNames the reference says duplicate cell names in the merge files are ignored, so check the names yourself.
-reportFile writes the cells whose names were changed. Add it to the streamOut line when you merge macro files, and use -units and -merge as the project requires.
-signoff_fill merges the attached signoff fill into the stream and places the signoff top fill cell at 0,0 R0. The fill format must be GDS, so how fill is carried into an OASIS tape-out is not verified here.
-format selects stream or oasis as the tape-out format.
-includePhysicalInst puts physical instances such as fillers into the saved netlist, which is a physical netlist for tools that need it.
Scope and viewThe whole current database. The area options of streamOut limit the output, and the cards use none of them.
Evidence limitThis card shows that the right database was written with the right map. The project signoff DRC and LVS runs on the written file are the signoff evidence, and they are outside this chapter. The reference does not state that defOut carries the fill: not verified.
Effect on sessionchanges analysis configuration; writes files. Some commands in this card only read or report.
OutputThe stream or OASIS file, a DEF file, a physical netlist, a name-change report and a log summary of errors and warnings.
Fields that matterErrors and warnings in the log. Objects reported as unmapped. Renamed cells. The units against the LEF. Whether the fill layers and the signoff top fill cell are present.
HealthyNo errors, every layer mapped, and no unexpected renames.
WarningRenamed merged cells, or fill written to a separate file.
Hard stopAn unmapped routing or fill layer, or a wrong unit.
Common misuseTreating a written file as a verified one. If no map file is given, the reference states that a generic map is created that you must customise.
Root cause and fixFix the map file, add the missing layers, then write the file again. Resolve cell-name collisions in the merge list.
Rerun after a fixRerun H-10 after any change to the database, and rerun H-06 and H-07 if the change touched fill.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

13.5 Required reports, artefacts and how to read them

ReportFields that support qualificationEvidence class
Filler settings and run log (H-01)stored settings; final gap count; filler DRC messagesimplementation
checkFiller output (H-02)total gaps; gap widths; stack violationsimplementation
Tap report and decap list (H-03)missing taps; distance violations; skipped areas; decap countimplementation
checkPlace report (H-04)violations; placed count; density linesimplementation
Metal fill report (H-05)shapes and area per layer; floating share; stored settingsimplementation
Density reports (H-06)violating windows per layer; source of the limitsimplementation
DRC and connectivity reports (H-07)violations by type; count against the limitimplementation
Antenna report (H-08)violating nets and layers; diode settingsimplementation
Before and after timing runs (H-09)WNS, TNS, violating endpoints per view; extraction settingsimplementation, or preliminary if fill is only assumed
Streamout log and name-change report (H-10)errors and warnings; unmapped objects; renamed cells; units; fill layers presentimplementation
Reading a filler and a fill reportSynthetic report, not tool output
checkFiller                                              ## illustrative excerpt
*INFO: Total number of gaps found: 0

report_metal_fill -fill_area -file fill_area.rpt
Metal Fill Summary
<numFillShapes>=<fillArea>squm(<percentTotal>)
|floating         |total
------------------------------------------------------
M2| 1820= 24960.40 (100.00%)  | 1820= 24960.40
M3| 1764= 24102.15 (100.00%)  | 1764= 24102.15
M4| 1530= 21876.80 (100.00%)  | 1530= 21876.80
M5| 1105= 15432.55 (100.00%)  | 1105= 15432.55
------------------------------------------------------
sum| 6219= 86371.90 (100.00%) | 6219= 86371.90

The filler check reports zero gaps, which answers one question only: no site is missing a filler. It says nothing about the DRC state of those fillers, and the plain form does not check stack length, which needs -horizontal_max_length and -vertical_stack_max_length. In the fill summary, the floating column and the total column agree on every layer, so all fill is floating and none is connected to a net. That may be exactly what your project wants, since the reference notes that floating fill adds less capacitance than connected fill. Check the choice against the project record.

Next, compare the layers listed with the layers in your fill rule. This sample shows no fill on M1 or M6, which is correct only if the rule excludes them. Finally, add up the shapes: the sum row of 6,219 shapes equals the total of the four layers, so the report is internally consistent. Consistency is not density. The density result comes from card H-06. All numbers here are illustrative and are not from a tool run.

13.6 Healthy, suspicious and hard-stop examples

FindingStatusWhy
Zero filler gaps and no filler DRCPASSRails and wells are continuous and the fillers are legal.
A few gaps beside a macro halo, listed and approvedWARN / REVIEWExplained and recorded, but not a clean count.
Gaps between standard cellsHARD STOPThe rail and n-well continuity is broken.
Tap check clean, but rows under halos are skippedWARN / REVIEWThe check did not look at those rows.
Density clean only against internal default valuesWARN / REVIEWNot a check against your rule values.
DRC violation on fill or fillerHARD STOPThe finished layout is not legal.
Antenna check on a LEF without antenna keywordsNOT EVALUATEDThe report covers nothing, so it is not evidence.
Post-fill WNS beyond the project budget of the baselineHARD STOPFill costs more timing than the project allows.
Fill or routing layer missing from the layer mapHARD STOPThe layer is not written, so signoff never sees it.
Stream file written but its log was not readWARN / REVIEWA written file is tool completion, not readiness.
-powerDomain options in a single-supply blockNOT APPLICABLENo power domains exist.

13.7 Debugging, corrective action and reruns

Fix finishing problems in the order of the chip-finish flow, because each later check depends on the earlier objects. A filler DRC violation comes first, since fill is computed around the filler. Next come density problems, then timing. A timing repair by trimming removes metal, so it can reopen a density problem, and the density check follows every trim.

13.7.1 What must not move after fill

Fill is generated against the metal that exists when it runs. After it, treat the following as frozen unless you declare an ECO and repeat the finishing sequence.

ObjectWhat the reference saysConsequence of moving it
Standard cells and macrosaddFillerGap moves cells and by default deletes routing. It is meant for use after placement and before routing.Metal moves, so filler, fill and routing are all invalid.
Filler cellsaddFiller -markFixed places them FIXED. deleteFiller removes physical cells including end-cap and well-tap cells, even when FIXED, unless -keepFixed is given.A broad deleteFiller can strip taps and end caps along with filler.
Decap cellsaddDeCap -addFixAttr places them FIXED.A later filler run can replace decap cells to satisfy stack rules.
ECO commandsFor the commands that resize or buffer instances, FIXED instances are left alone unless setEcoMode -honorFixedStatus false is set. Its default is true. Whether ecoRoute follows it is not verified.Keep the default, so fixed filler, taps and decap are not edited by those commands.
Metal fillsaveDesign -noFill omits fill shapes, for runs where the fill is regenerated.Saving without fill is correct only if you will regenerate it.

After a justified ECO, use addFiller -ecoMode true to remove fillers that overlap moved cells and refill the new gaps, and use add_metal_fill_signoff -incremental to update the fill. Then rerun every card in this chapter.

13.7.2 Worked example: fill that costs timing

Suppose the routed design had a setup WNS of +0.031 ns in the worst view before fill. After signoff fill, the same views give -0.012 ns. Every density and DRC card is clean, and H-09 is the first card to fail. Your project requires non-negative setup slack, so the status is HARD STOP. All values here are illustrative.

RunSetup WNS (ns)Violating endpointsFill shapes in the failing window
Before fill+0.03100
After fill-0.012312
After trim near the critical net+0.00408

The failing endpoints all sit behind the net clk_a of Figure 18. The cause is known: fill shapes within a few tracks of that net add coupling capacitance. The reference describes this exact usage model for trimMetalFillNearNet: time the design before fill, add fill, time it again, and then trim the fill that made timing worse. The command takes a slack threshold, spacings on the same layer, the layer above and the layer below, and a minimum density that stops the trimming. It does not check DRC rules, so run H-07 after every trim, and add -createFillBlockage so that a later fill run does not refill the trimmed area.

In the figure, the trim removes four fill shapes from window W4 (the figure assumes -remove, which deletes whole shapes instead of cutting them back to the halo edge). The added coupling for that window falls from 2.08 to 1.12 fF in the ledger, and the window density drops from 17 to 15 percent. That drop is why the sequence ends with the density checks. A window that loses metal can fall below its minimum, and the minimum-density argument of the trim command is there to prevent that. The decision after the trim is therefore two decisions: H-09 passes when the slack is back inside budget, and H-06 must still pass on the trimmed layout. Rerun H-06, H-07 and H-09.

13.8 Exit criteria and stage checklist

  • Filler. Settings recorded, zero gaps or approved gaps, and no filler DRC.
  • Physical cells. Well taps, end caps and decap match the specification, with the skipped areas listed.
  • Placement. checkPlace clean, and the placed count explained against the baseline.
  • Metal and via fill. Fill report present for every required layer, with settings equal to the project record.
  • Density. Metal and cut density clean against LEF or project rule values, not only internal defaults.
  • DRC and connectivity. Zero violations with the limit removed, and the fill treatment recorded.
  • Antenna. Process antenna check run on a LEF with antenna rules, with no violation left.
  • Timing. Extraction saw the fill, and post-fill slack is inside the project budget of the baseline.
  • Streamout. Map file reviewed, every layer and fill layer mapped, log read, and the written files handed to signoff DRC and LVS.

Thus, chip finishing is qualified when the finished layout is complete, legal, connected, dense enough and still on time, with evidence for each, and written out in the formats the signoff tools read. A finished fill run is only the start of that evidence. In the next chapter, Chapter 14 sets up RC extraction and compares the implementation timing with the signoff results.

CHAPTER 13 SANITY CHECKS

13.9 Sanity check cheat sheet: Chip finishing and post-fill

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
H-01Filler settings
After last ECO
getFillerMode
addFiller -cell {<filler cells>} -prefix FILLER
Filler list matches the project; zero gaps.Fillers inserted with DRC markers, or a few explained gaps.Wrong filler list, or filler DRC left.
H-02Filler gaps
After filler insertion
checkFiller -file <f>Zero gaps, no stack violation.A few gaps beside halos, each listed and approved.Gaps between standard cells.
H-03Tap, end-cap, decap
After filler and decap
verifyWellTap -rule <um> -report <f>
reportDeCap -area <llx> <lly> <urx> <ury>
No missing taps, and end caps and decap match the plan.Rows under halos or blockages are skipped.Missing taps, or taps further apart than the rule.
H-04Placement with fill
After filler and decap
checkPlace <report_file>No violations, and the counts equal the baseline plus the cells you added.Violations unchanged from the baseline.Overlaps, cells off row or core, or a placed count below the baseline.
H-05Metal fill record
After metal fill
get_metal_fill_signoff_mode
report_metal_fill -fill_area -file <f>
Every required layer has fill, with the recorded settings.A required layer has few shapes, or the floating share changed.No report, empty summary, or the wrong rule file.
H-06Metal and cut density
After metal fill and after any trim
verifyMetalDensity -report <f>
verifyCutDensity -layer {<cut layers>} -report <f>
No density violation against LEF or project values.Clean only against internal defaults.Violating windows, or fill-rule layers never checked.
H-07DRC and connectivity after fill
After fill and trim
verify_drc -limit 0 -report <f>
verifyConnectivity -type all -report <f>
Zero DRC with no limit, and no opens or unrouted nets.Floating-metal entries with a recorded reason.Any DRC on fill or filler, any open or short, or a count at the limit.
H-08Antenna status
After repair
verify_antenna -report <f>No antenna violation, and the LEF carries antenna rules.Repaired with diodes, placement to recheck.Antenna violations remain after repair.
H-09Post-fill timing
After fill and trim
timeDesign -postRoute -outDir <dir> -prefix <prefix>Slack within budget, with fill-aware extraction.Slack worse but inside budget, or fill only assumed.Fill unseen by extraction, or timing beyond budget.
H-10Streamout readiness
Before hand-off
streamOut <name>.gds -mapFile <map>
defOut -floorplan -routing <name>.def
getStreamOutMode
No errors, every layer mapped, and no unexpected renames.Renamed merged cells, or fill written to a separate file.An unmapped routing or fill layer, or a wrong unit.
CHAPTER 13 CHEAT SHEET

13.10 Command cheat sheet: Chip finishing and post-fill

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

CommandWhat it produces
Filler cells
getFillerModeThe current setFillerMode settings: filler list, prefix, gap fitting, DRC checking, stack limits. Record it with the filler run.
checkFillerThe total number of gaps found in the core, meaning sites that are missing filler cells.
checkFiller -horizontal_max_length -vertical_stack_max_lengthViolations of the horizontal and vertical stack length limits.
setFillerMode -core {{<filler cells>}} -corePrefix FILLERStores the filler list and prefix for later addFiller runs. Changes the session and is saved with the design.
addFiller -cell {<filler cells>} -prefix FILLERFiller instances in the gaps between standard cells, then a count of the gaps that remain. Changes the database.
addFiller -fixDRCReplaces fillers that cause DRC violations with adjacent cells found by verify_drc. It leaves a gap if no replacement is legal. Changes the database.
addFillerGap <um> -effort lowMoves placed cells to open gaps of at least the given size, and by default deletes routing. For use before routing only.
deleteFiller -prefix FILLERRemoves every physical instance whose name starts with the prefix, and by default also end-cap and well-tap cells. Changes the database.
Tap, end-cap and decap cells
verifyWellTap -rule <um> -report <f>Markers and a report for missing well taps and for taps that break the distance rule.
reportDeCap -area <llx> <lly> <urx> <ury>The decoupling capacitance cells placed in the area.
addEndCap -prefix ENDCAPEnd-cap instances at the ends of the site rows. Changes the database.
addWellTap -cell <tap cell> -cellInterval <um> -prefix WELLTAPWell-tap instances in every row at the given maximum interval. Changes the database.
addDeCap -totCap <fF> -cells <cell> -addFixAttrDecoupling cells totalling the requested capacitance, placed FIXED. The cells must first be defined with addDeCapCellCandidates. Changes the database.
Placement and density of cells
checkPlace <report_file>A violation report, markers, the number of placed instances and unplaced macros, and the placement density.
check_design -type place -out_file <f>Placement prerequisite findings, including misaligned well taps and missing termination cells. Documented as a check run before placement, so it does not verify the finished database.
Metal fill and via fill
get_metal_fill_signoff_modeThe stored signoff metal fill options. They are saved with the design.
report_metal_fill -fill_area -file <f>Per layer, the number and area of fill shapes, split into floating and total.
report_metal_fill -fill_length -file <f>Per layer, the number and length of fill shapes.
add_metal_fill_signoff -fillThe signoff metal fill database, through Pegasus or PVS. Needs routed metal and a rule file or technology setting. Load it with -auto_load_fills, -view_fills or -flatten before checks that need the shapes.
add_metal_fill_signoff -incrementalIncremental fill after an ECO.
trimMetalFillNearNet -slackThreshold <ns> -spacing <um> -spacingAbove <um> -spacingBelow <um>Trims fill to a halo around nets whose slack is below the threshold; -remove deletes whole shapes. The spacings default to 0. Does not check DRC. Changes the database. Run verifyMetalDensity afterwards.
streamOut <gds> -mapFile <map> -signoff_fillA GDS file that includes the signoff fill data attached to the database. Writes a file.
Density verification
verifyMetalDensity -report <f>A metal density report for every routing layer and macro, and markers for violations.
verifyCutDensity -layer {<cut layers>} -report <f>A density report for the listed cut layers.
DRC and connectivity after fill
verify_drc -limit 0 -report <f>Every DRC violation with no limit on the count, plus markers.
verifyConnectivity -type all -report <f>Opens, unconnected wires, unconnected pins, loops and unrouted nets, plus markers.
ecoRoute -fix_filler_drc_with_patch_onlyPatch metal that clears filler-related DRC without rerouting. Changes the database.
Antenna
verify_antenna -report <f>Process antenna violations, with markers and a report.
getNanoRouteMode -route_antenna_diode_insertionWhether the router inserts antenna diodes, and with which settings.
setNanoRouteMode -route_antenna_diode_insertion trueLets the router add antenna diodes, even where filler already sits. Changes the session.
Post-fill extraction and timing
getExtractRCMode -engine -effortLevel -assumeMetFill -pvs_fillThe extraction engine and fill settings in force.
setExtractRCMode -engine postRoute -effortLevel low -assumeMetFill 1Makes native extraction account for fill. At postRoute the value is ignored and the LEF fill active spacing is used (0.6 um if absent). Changes the session.
setNanoRouteMode -extract_keep_fill_wires trueImports fill wires so that extraction can see them. Changes the session.
setExtractRCMode -pvs_fill true -signoff_stream_layer_map <f>Sends the attached fill data to signoff Quantus extraction. Changes the session.
extractRCThe RC database for the current routing and fill. Changes the database.
timeDesign -postRoute -outDir <dir> -prefix <prefix>Extraction, timing analysis and reports saved to the directory. Run once before and once after fill.
Streamout and export readiness
getStreamOutModeThe current setStreamOutMode settings, such as cell naming, OASIS and via-cell options.
setStreamOutMode -check_map_file trueMakes the stream-out print objects that exist in the database but are not mapped in the map file. Changes the session.
streamOut <name>.gds -mapFile <map> -mode ALL -units <n> -merge {<macro gds files>} -reportFile <f>A GDSII file of the database, a log summary of errors and warnings, and a report of renamed cells. Writes files.
streamOut <name>.oas -mapFile <map> -format oasisThe same content in OASIS format. Writes a file.
defOut -floorplan -routing <name>.defA DEF file with floorplan, cells and routing in the NETS section. Writes a file.
saveNetlist <name>.v -includePhysicalInst -includePowerGroundA physical netlist including fillers and physical-only PG connections. Writes a file.