Skip to content
Ch 07 / 16 Chapter 7: Placement and post-placement qualification
CHAPTER 7

Placement and post-placement qualification

Placement gives every cell a location, and every later stage inherits those locations. This chapter checks that the placement is legal, that it leaves room to route, that fixed and protected objects survived it, and that timing with ideal clocks is healthy enough to start clock tree work.

7.1 Stage purpose

Placement gives each movable standard cell a location. Global placement spreads the cells to shorten wires and, when timing constraints are loaded, to help timing and relieve congestion. Legalisation then moves every cell onto a row and onto the site grid, in a legal orientation and clear of its neighbours. The distance a cell moves in that step is its displacement. A site is the smallest unit of a row, and a row is a strip of sites with one cell height. Figure 10 shows both steps on a small window.

Placement density is the share of available sites that cells occupy, measured in a bin, which is a rectangular window of the core. A nearly full bin leaves little room for the buffers and resized gates that optimisation adds later.

After global placementr0r1r2After legalisationr0r1r2bin Abin Bbin A 0.92bin B 0.2512 sites12 sites12 sites12 sitesLegendmovable cellfixed tap celloverlap markerbin edge1 site = 0.20 umrow height = 6 sitesvalues areillustrativeCost ledgerBin A, 12 sites by 3 rowsmovable 32 + fixed 1 = 33 of 36 sites used, density 0.92Display threshold 0.750.75 x 36 = 27 sites, so bin A is over by 6 sitesBin B, same size9 of 36 sites used, density 0.25, 27 sites freeOverlapping pairs8 after global placement, 0 after legalisationDisplacement, moved cells10 of 16 moved, mean 1.3 sites (0.26 um), max 2.7 sites (0.54 um)Fixed cells moved0 of 1, the tap is at the same site in both panelsRelief for bin Amove 6 sites of cells (2 to 3 cells) into bin B: A 0.75, B 0.42
Figure 10. Legalisation and a dense bin, counted in cells and sites
Read it. Both panels show the same 16 movable cells and one fixed well-tap cell in three rows. On the left, global placement leaves eight overlapping pairs, marked in magenta, and cells that sit between sites. On the right, legalisation has moved ten cells, by 1.3 sites on average and at most 2.7 sites, and removed every overlap, and the tap has not moved. The placement is legal, yet bin A is still at 0.92 against a display threshold of 0.75. The ledger shows that six sites of cells would have to move into bin B to bring bin A to 0.75.

Legal and healthy are different things. The right panel of Figure 10 passes every legality check and still has a dense bin. The 0.75 in the ledger is the default display threshold of the density report, not a limit. Your project budget sets the limit.

This chapter keeps four ideas apart. Tool completion means a command ended. Analysis coverage means a report examined what you needed it to examine, and an empty report is not a pass. Stage qualification means the evidence meets your project budgets. Signoff is a later stage and is not claimed here. Legality checks give implementation evidence. Congestion and timing numbers come from estimated routes and ideal clocks, so they are preliminary evidence.

7.2 Entry prerequisites

Must already be trueWhy
Chapters 1 to 6 passedPlacement reads the floorplan, the power structure and the pre-place setup, so their faults surface here.
Timing constraints are loaded in every active view and the clocks are still idealThe reference states that place_design is timing-driven only when constraints exist, and otherwise assumes non-timing-driven mode.
Scan chains are specified, or a scan DEF is imported, if the block has scanThe reference states that without scan information the software warns and skips scan reordering.
The number of FIXED instances and the dont_touch objects are recorded before placementCard L-03 compares against that baseline.
Project budgets exist for density, congestion hotspot score, WNS, TNS and DRV countsThis book sets none of them.
A zero-wire-load timing baseline from before placement existsIt shows how much slack loss comes from placement. The reference describes timeDesign -prePlace for this.

7.3 Relevant files and analysis context

The checks read the database in memory, so the settings that were active when placement ran matter. The reference lists setOptMode and setRouteMode as fully honoured by place_design, and setPlaceMode, setAnalysisMode and setExtractRCMode as honoured with exceptions. For example, hold analysis is not honoured, and clocks are treated as ideal even if setAnalysisMode asks for sdcControl. Record the non-default settings with report_command_mode -non_default and the placement settings with getPlaceMode before the run, and store them next to the reports.

Reports from timeDesign and optDesign go to the timingReports directory unless -outDir names another. Their file names carry the top cell name and the stage. Use one directory per run, so that the reports of two runs are never mixed in one comparison.

Two defaults change what you should expect. Pre-placement optimisation removes buffer trees unless -noPrePlaceOpt is given, so the instance count after placement is not expected to equal the count before it. Cell padding set with specifyCellPad reserves space around cells during placement, and checkPlace counts it in utilisation. Instance padding is a hard rule only when setPlaceMode -place_detail_honor_inst_pad is true. Record whether either kind of padding is in use.

Many flows run place_opt_design instead of place_design followed by optDesign -preCTS. The tool documentation says it can replace that pair, so there is then no point between placement and optimisation, and the L-07 baseline cannot be taken. In the place_opt_design V2 flow, the later clock_opt_design legalises first to remove overlaps left by optimisation, so an overlap found by L-02 at that point is expected. With setDesignMode -earlyClockFlow true, CCOpt builds a clock tree inside place_opt_design, so the CTS configuration of Chapter 8 is set before placement. Each card says which command wrote the report it reads.

Hold is not a qualification item at this stage. place_design does not honour hold analysis, and optDesign -preCTS cannot be combined with -hold. Ideal-clock numbers contain only the skew and uncertainty that the constraints state, so record those values with the run.

7.4 Checks and command cards

7.4.1 Pre-stage checks

Placement is the first stage that moves cells, so repeat three checks from earlier chapters before you run it. Record the FIXED instance count with dbGet -p top.insts.pStatus fixed and keep it as the baseline for card L-03. Confirm that the constraints are loaded, because without them place_design assumes non-timing-driven placement. If the block has scan chains, confirm that the scan information is loaded. The reference describes check_design -type place as the check to run before placement.

7.4.2 Post-stage checks

L-01Placement run and log
Question it answersDid placement finish in the intended mode, and what did the log say about legalisation and scan reordering?
StageAfter place_design
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateChapters 1 to 6 passed. Constraints loaded. Scan information loaded if the block has scan. Modes recorded.
Legacy UI
place_design
report_scan_chain -out_file <f>
scanTrace -verbose
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-out_file writes the scan chain information to a file. Without it the reference says the information goes to scanChain.rpt.
-verbose prints the starting and ending scan points and the instances that scanTrace finds in the chain. Use it when scan tracing fails.
Scope and viewWhole design. The scan checks apply only if the block has scan chains.
Scan reorderBy default place_design reorders scan cells, and setPlaceMode -place_global_reorder_scan false turns that off. The reference documents a refinePlace summary of instances moved, mean displacement and maximum displacement. If the log shows it, record it. Not verified: that place_design prints this summary.
Effect on sessionupdates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputThe placement log, and for report_scan_chain a scan chain report.
Fields that matterErrors and warnings in the placement section. The legalisation summary of moved instances and mean and maximum displacement. The scan reorder messages. For report_scan_chain: scan bits, floating wire length, ordered wire length and total wire length.
HealthyThe run finished without errors, legalisation moves are recorded and understood, and scan reordering ran if scan is defined.
WarningA warning that scan reordering was skipped, or that placement ran non-timing-driven when constraints were expected.
Hard stopThe run ended with an error, or it used settings that differ from the recorded set.
Common misuseReading a finished run as a pass. Tool completion says the command ended, not that the result is legal. Also expecting equal instance counts, because pre-placement optimisation removes buffer trees by default.
Root cause and fixCorrect the constraint, scan setup or setting that the log names, then rerun place_design with the recorded settings.
Rerun after a fixRerun L-01 to L-10, because every cell may have moved.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-02Placement legality
Question it answersIs every placed instance legal, and what do the placed, fixed and unplaced counts say?
StageAfter placement and after any later cell change
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement finished.
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
violationReportFileName names the report file. Without it the command shows only a summary. The file lists every violating instance.
Scope and viewPlaced instances and fixed standard cells. Preplaced instances and macros count as FIXED, but the reference states that the command does not check fixed macros.
Effect on sessionadds GUI violation markers; writes files
OutputA console summary, violation markers in the design window and a report file.
Fields that matterCounts by violation type: overlap, out of core, off the placement grid, row or cell orientation, tech site, blockage, region and fence, pin access and pre-route DRC. The Placed, Fixed and Unplaced counts. Placement density as used sites over available sites.
HealthyNo violations, Unplaced is zero, and the placed and fixed counts match the baseline and the log.
WarningA few pin access or pre-route DRC findings that you can list, locate and explain.
Hard stopAny overlap, out-of-core, off-grid, orientation, region or fence violation, or any unplaced instance.
Common misuseComparing the utilisation printed by checkPlace with the density printed by timeDesign. The reference notes they can differ because checkPlace counts cell padding and timeDesign does not. Also treating cleared markers as fixed violations: -clearMarker removes markers, not the cause.
Root cause and fixRun refinePlace for instances that moved, or correct the blockage, region or fence that the report names. Rerun checkPlace after every change.
Rerun after a fixRerun L-02 first, then L-03 to L-10.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-03Fixed and dont_touch status preserved
Question it answersAre the macros and preplaced cells still FIXED, and are the objects you protected still protected?
StageAfter placement
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateThe FIXED count and the dont_touch list were recorded before placement.
Legacy UI
dbGet -p top.insts.pStatus fixed
dbGet top.insts.isDontTouch 1 -p
report_preserves -dont_touch
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
-p returns pointers to the matching objects instead of values.
-dont_touch limits report_preserves to dont_touch settings.
Scope and viewWhole design.
Effect on sessionreads or reports only
OutputTcl lists of instance pointers, and a preserves report.
Fields that matterThe number of fixed instances against the baseline and the macro list. The number of dont_touch instances against the baseline. Any entry that is new or missing.
HealthyFIXED count and macro list equal the baseline, and dont_touch differences are explained by the log.
WarningThe dont_touch count differs only by cells that the log explains, such as buffers removed.
Hard stopA macro or preplaced cell is no longer FIXED, or a protected object lost its dont_touch setting.
Common misuseCounting only macros. Preplaced taps and end caps are FIXED too. Also comparing with a baseline taken before the floorplan last changed.
Root cause and fixRestore the status in the floorplan or the constraints, then rerun placement, because cells may have moved around the object.
Rerun after a fixRerun L-03, then L-02.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-04Density and pin density
Question it answersWhere is placement dense, and are there bins above the density your project allows?
StageAfter placement
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement finished and L-02 is clean.
Legacy UI
reportDensityMap -gridInRow <n> -threshold <d>
reportPinDensityMap
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
-gridInRow sets the bin size in row heights, in both directions. The default is 10.
-threshold sets the density under which a bin is not reported. The default is 0.75 for the placement map and 0.5 for the pin density map.
Scope and viewWhole core. The reference lists -ignoreBlock and -ignoreFiller to leave blocks or fillers out of the calculation.
Effect on sessionreads or reports only
OutputA density map for the display and a text report.
Fields that matterThe share and count of bins above the threshold. The bin size in sites by rows. The count per density range. The same quantities for pin density.
HealthyNo bin above the project density limit, and the bin size used is stored with the report.
WarningA few bins above the limit that are not in a macro channel and not over a congestion hotspot.
Hard stopBins above the project limit in a macro channel, or over a hotspot found in L-05.
Common misuseReading the display threshold as the pass mark, or comparing two runs that used different bin sizes. The bin in the figure is 12 sites by 3 rows for illustration, and the default bin is 10 rows by 10 rows.
Root cause and fixAdd placement guidance such as soft blockage in narrow channels, raise congestion effort, or add module padding, then place again.
Rerun after a fixRerun L-02 and L-04 to L-10.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-05Congestion after placement
Question it answersDoes placement leave enough routing resource, and where are the hotspots?
StageAfter placement
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement is legal and an estimated route exists.
Legacy UI
earlyGlobalRoute
reportCongestion -hotSpot -overflow
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
-hotSpot reports the local hotspot score: the largest and the total contiguous area of gcells with routing overflow.
-overflow reports horizontal and vertical overflow.
Scope and viewWhole design.
Cost and side effectearlyGlobalRoute writes estimated routes into the database and takes runtime. The reference says place_design and timeDesign also run early global route as part of their work, so a route may already exist.
Effect on sessionupdates the design database; runs an expensive analysis. Some commands in this card only read or report.
OutputA console summary with usage, overflow, the congestion distribution and a hotspot table with boxes and scores.
Fields that matterHorizontal and vertical overflow. The maximum and total hotspot score. The bounding box and rank of each hotspot.
HealthyThe maximum hotspot score is within the project budget. The reference calls a score below 100 typically routable, as guidance only.
WarningOverflow limited to one or two small hotspots away from macro channels, with mild density findings.
Hard stopA hotspot score above the project budget, or a hotspot in a macro channel that placement settings cannot relieve.
Common misuseTreating early global route as a real route. The reference states that it is not DRC clean and must not be used for signal integrity analysis. Also running reportCongestion before any route exists.
Root cause and fixRelieve the hotspot with placement settings or a floorplan change, then place again.
Rerun after a fixRerun L-02, L-04 and L-05, then L-07 to L-10, because cells moved.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-06Physical cells and tie connections
Question it answersAre end caps and well taps present and correct, and are tie-high and tie-low pins connected?
StageAfter placement
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateEnd-cap and well-tap cells inserted. Tie cells added after placement if the flow uses them.
Legacy UI
verifyEndCap -report <f>
verifyWellTap -report <f>
checkDesign -tieHiLo -noHtml -outfile <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 verification report file.
-tieHiLo reports unconnected tie-high or tie-low terminals, and tie pins or P/G pins connected to different nets.
-noHtml writes text instead of HTML.
-outfile names the text report.
Scope and viewWhole design. verifyWellTap does not check row areas covered by blocks, their halos or placement blockages. verifyEndCap checks end cap location only with -wrongLocation.
Tie cellsaddTieHiLo adds tie cells after placement, and setTieHiLoMode -maxFanout and -maxDistance limit how many pins a tie net drives and how far a tie cell may sit from its pins. Adding tie cells changes the database, so run checkPlace afterwards.
Effect on sessionadds GUI violation markers; writes files
OutputViolation markers and report files.
Fields that matterMissing end caps and end caps of the wrong type. Missing well taps, and taps that break the distance rule, with the actual and rule distance. Unconnected tie terminals and tie pins on different nets.
HealthyNo missing or wrong end caps or well taps, and no unconnected tie terminal.
WarningUnconnected tie terminals reported before the flow has run addTieHiLo. Recheck after it.
Hard stopA missing or wrong end cap, a missing well tap or a tap spacing violation in a row where cells are placed.
Common misuseVerifying taps with a rule that differs from the one used to insert them.
Root cause and fixInsert the cells again with the project rule, add tie cells with addTieHiLo after placement, then recheck.
Rerun after a fixRerun L-06 and L-02, because added cells must be legal too.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-07Timing after placement
Question it answersWhat do setup WNS, TNS, the path groups and the DRV summary look like on estimated routes with ideal clocks?
StageAfter placement, before optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement is legal. Constraints are loaded in every active view. Extraction settings are recorded.
Legacy UI
timeDesign -preCTS -outDir <dir>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-preCTS selects the stage before the clock tree is built: early global route, extraction and timing analysis with ideal clocks.
-outDir names the report directory. The default is timingReports.
Scope and viewAll active views. Setup only by default.
Clock modeltimeDesign -preCTS sets -clkSrcPath false and -clockPropagation forcedIdeal, so the numbers carry no clock tree skew. Treat them as preliminary evidence. A view missing from the list may only have been pruned: timeDesign -expandedViews restores pruned views.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis
OutputPath group reports, a summary, and files for maximum transition, capacitance and fanout in the output directory. The summary also prints on the console.
Fields that matterWNS, TNS and the violating and total paths for the all, reg2reg, reg2cgate and default groups. The views included. The DRV counts. Density and routing overflow.
HealthySetup WNS and TNS meet the project target for this stage in every required view, and the views listed match the plan.
WarningNegative slack that the project expects optDesign -preCTS to recover, with the failing paths listed and owned.
Hard stopNegative slack has no owner and no optimisation plan.
Common misuseAdding the TNS of the path groups to get the total. The reference explains that TNS is endpoint based and, in multi-view runs, takes the worst slack per endpoint across views. Also treating this result as a post-CTS result.
Root cause and fixCorrect the constraints or views, or the placement, and run again.
Rerun after a fixRerun L-07 to L-09 after any placement change.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-08Timing analysis coverage
Question it answersWhich timing checks did the analysis cover, and which are untested?
StageAfter timeDesign
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statetimeDesign finished in the same session.
Legacy UI
report_analysis_coverage -verbose {violated untested}
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 limits the detail table to the listed statuses: met, violated or untested.
Scope and viewAll views, or one view if -view is given.
Effect on sessionreads or reports only
OutputA summary table by check type and a detail table.
Fields that matterFor each check type: the number of checks, and how many are met, violated and untested. For each untested check: the pin, the reference pin and the reason, such as no endpoint clock or no data signal.
HealthyUntested is zero, or every untested check has a reason you accept, such as a constant or a false path.
WarningUntested checks whose reason is a known constant, disabled arc or false path, each with an owner.
Hard stopUntested checks with no endpoint clock or no data signal on flops that should be timed.
Common misuseReading a clean WNS as full coverage. An untested check has no slack, so it cannot appear in WNS or TNS.
Root cause and fixAdd or correct the clocks and constraints, then rerun timeDesign and this card. The reference points to check_timing for finding missing constraints.
Rerun after a fixRerun L-07 and L-08.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-09DRVs and high-fanout nets
Question it answersAre there maximum transition, capacitance or fanout violations, and which nets are they on?
StageBefore and after optimisation
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statetimeDesign or optDesign finished.
Legacy UI
timeDesign -preCTS -drvReports -outDir <dir>
reportFanoutViolation -outfile <f>
report_constraint -drv_violation_type {max_transition max_capacitance max_fanout} -all_violators
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
-drvReports generates the DRV reports only.
-outfile names the fanout report file.
-drv_violation_type selects which DRV checks report_constraint lists.
-all_violators lists all violating objects for the selected types.
Scope and viewWhole design, all active views.
High-fanout netsThe tool documentation says high-fanout nets are temporarily ideal in pre-placement timing, and that the first pre-CTS optimisation phase buffers them. With setDelayCalMode -enable_high_fanout true, nets above a fanout limit get a default net delay. The reference gives a limit of 1000 fanouts and a default delay of 1 ns for it. Record whether it is on.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputThe transition, capacitance and fanout files in the output directory, a fanout report file, and a constraint report on the console.
Fields that matterThe counts of nets and terminals with max_cap, max_tran, max_fanout and max_length violations, and the worst violation. The limits come from the constraints or the library.
HealthyCounts are within the project budget, and every violating net is listed in the type files.
WarningMaximum fanout violations are present. optDesign does not repair them unless setOptMode -opt_fix_fanout_load is set.
Hard stopMaximum transition or capacitance violations remain after optDesign -preCTS, or counts exceed the project budget.
Common misuseReading the counts in the timing summary and never opening the file for each type, which lists the nets.
Root cause and fixSet setOptMode -opt_fix_fanout_load true where fanout must be repaired and run optDesign -preCTS -drv, or correct a wrong limit in the constraints.
Rerun after a fixRerun L-09 and L-10.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
L-10Pre-CTS optimisation
Question it answersDid optDesign -preCTS improve setup timing and clear DRVs without breaking legality?
StageAfter L-07 to L-09
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required statePlacement is legal. Timing loops are broken. The fanout setting is recorded. Extraction scale factors (generateRCFactor) exist. The L-07 baseline is stored.
Legacy UI
check_timing -type loops
setOptMode -opt_fix_fanout_load true
optDesign -preCTS
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot established in the provided documentation
Options used
-type loops limits check_timing to timing loops.
-preCTS optimises the placed design before the clock tree is built. By default it repairs DRVs and setup violations.
Scope and viewAll analysis views together. The reference states that optDesign optimises all views concurrently in multi-mode multi-corner mode.
Effect on the designoptDesign adds buffers, resizes gates and can add and remove instances, and by default it reclaims area. It sets the analysis, route, optimisation and extraction modes for the stage. The pre-CTS stage forces ideal clocks and you cannot override that.
Effect on sessionchanges analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report.
OutputA log summary, reports in timingReports, and a changed netlist and placement.
Fields that matterWNS, TNS and failing paths, overall and by path group, before and after. The max_tran, max_cap and max_fanout counts. Density. The margin and target slack values that the log prints.
HealthyWNS and TNS improve or meet the target, DRVs are cleared, density stays within the project budget, and the L-02 recheck is clean.
WarningSome slack stays negative, with the cause listed and a plan for the next stage.
Hard stopWNS or TNS is worse than before the run, new DRVs or placement violations appeared, or the run was interrupted.
Common misuseRunning with timing loops unbroken, which the reference says makes WNS comparisons between runs invalid. Also saving a design after interrupting the run: the reference says its state is useful only for debugging.
Root cause and fixFix the loops, constraints or congestion first. Then run optDesign -preCTS -incr, which needs an earlier optDesign run on all path groups.
Rerun after a fixRerun L-02 to L-10.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

7.5 Required reports, artefacts and how to read them

ReportFields that support qualificationEvidence class
Placement log (L-01)errors; legalisation summary; scan reorder messagesimplementation
checkPlace report (L-02)violation counts; placed, fixed, unplaced; densityimplementation
Fixed and dont_touch lists (L-03)counts against the baselineimplementation
Density map report (L-04)bins over the threshold; bin size; density rangespreliminary
Congestion summary (L-05)overflow; hotspot score and boxespreliminary
End-cap, well-tap and tie reports (L-06)missing or wrong cells; distance rule; unconnected tie pinsimplementation
timeDesign summary and DRV files (L-07, L-09)WNS and TNS by group; views; DRV counts; densitypreliminary
Coverage report (L-08)met, violated and untested checks by typepreliminary
optDesign summary (L-10)WNS, TNS and DRV counts before and afterpreliminary
Reading a legality and density reportSynthetic report, not tool output
checkPlace placement.rpt                              ## illustrative excerpt
Begin checking placement ...
Pre-route DRC Violation:              0
Pin Access Violation:                 3
*info: Placed = 41820           (Fixed = 214)
*info: Unplaced = 0
Placement Density:58.20%(23120/39724)
Placement Density (including fixed std cells):59.10%(23480/39724)

reportDensityMap -gridInRow 10 -threshold 0.75
powerDomain TOP: bins with density > 0.75 = 0.617 % ( 6 / 972 )
bin size: 59 sites by 10 row(s). total 972 bins ( 36 by 27 )
density range #bins %
0.75 - 0.8 4 0.4115
0.8 - 0.85 2 0.2058
total 6 0.617

Suppose the recorded baseline is 214 FIXED instances. The synthetic report shows Fixed = 214 and Unplaced = 0, which is consistent with no object losing its status, because equal counts do not prove it: compare the instance lists of L-03. The three pin access violations are not a stop by themselves, but each needs a location and an owner. The numbers in this excerpt are illustrative.

The density report counts six of 972 bins above 0.75, and none above 0.85. The excerpt gives counts, not locations, so open the density map to see where the six bins are. Then compare their location with the congestion hotspots from L-05. Six bins in a macro channel is a different finding from six bins spread across the core.

Reading a pre-CTS timing summarySynthetic report, not tool output
timeDesign -preCTS -outDir run1_reports               ## illustrative excerpt
timeDesign Summary
Setup views included:
 setup_func_max
+--------------------+---------+---------+---------+---------+
| Setup mode         |   all   | reg2reg |reg2cgate| default |
| WNS (ns):          |  -0.142 |  -0.142 |   0.031 |   0.208 |
| TNS (ns):          |   -21.4 |   -21.4 |   0.000 |   0.000 |
| Violating Paths:   |     212 |     212 |       0 |       0 |
| All Paths:         |   20050 |   17980 |     440 |    1630 |
+--------------------+---------+---------+---------+---------+
| DRVs      | Nr nets(terms) | Worst Vio |
| max_cap   | 0 (0)          | 0.000     |
| max_tran  | 3 (3)          | 0.084     |
| max_fanout| 5 (5)          | 12        |
Density: 59.100%
Routing Overflow: 0.21% H and 0.14% V

Setup is negative only in the reg2reg group, at -0.142 ns, and the clock-gating and default groups are positive. The 212 violating paths are endpoint counts, as the reference explains, so the group figures are read separately. Because the clocks are ideal, this is preliminary evidence and says nothing about skew.

Two DRV lines need a decision. Optimisation is expected to repair the three transition violations, so you recheck them after L-10. The five fanout violations stay unless setOptMode -opt_fix_fanout_load is set before the run, which is why L-09 flags them as a warning. The summary also lists one setup view. If the plan needs two, this card is NOT EVALUATED for the other.

7.6 Healthy, suspicious and hard-stop examples

FindingStatusWhy
checkPlace clean and Unplaced is zeroPASSNo violation was found among the instances checkPlace examines.
Overlap, out-of-core, off-site or orientation violationHARD STOPIllegal cells cannot be routed or signed off.
FIXED count or macro list differs from the baselineHARD STOPA macro or preplaced cell may have moved or lost protection.
Some bins above the density limit, hotspot score within budgetWARN / REVIEWLittle growth room for optimisation. Recheck after L-10.
Hotspot score above the project budgetHARD STOPThe router will meet the same hotspot, so relieve it by placement now.
Negative setup slack before optimisation, with an ownerWARN / REVIEWExpected at this stage. optDesign -preCTS is the repair.
A required view is missing from the timing summaryNOT EVALUATEDThe summary does not cover that view.
WNS or TNS worse after optDesign -preCTSHARD STOPOptimisation made timing worse. Find the cause first.
Power-domain density rows in a single-supply blockNOT APPLICABLENo power domains exist.

7.7 Debugging, corrective action and reruns

Repair in a fixed order: legality first (L-02), then routing resource (L-04 and L-05), then timing (L-07 to L-10). Optimisation on an illegal or congested placement is wasted work, because the next placement moves the cells again. Any change that moves cells makes every earlier result stale, so rerun the whole chapter and not only the card that found the problem.

7.7.1 Worked example: a legal placement with a dense channel

Suppose L-02 is clean, with Unplaced at zero. L-04 reports six bins above the project density limit in the channel beside macro RAM0, and L-05 shows a maximum hotspot score above the project budget in the same box. Legality passes, so the finding is about resource. Figure 10 shows the same mechanism in miniature. Bin A uses 33 of 36 sites against a display threshold of 27, so it is over by six sites, while bin B uses nine.

The decision for L-05 is HARD STOP. The reference offers two placement settings for this case. One raises the congestion effort. The other adds soft blockages in narrow channels between macros, which the placer honours and optimisation does not.

Relieving a dense channel and placing againIllustrative values
setPlaceMode -place_global_cong_effort high           ## illustrative sequence
setPlaceMode -place_global_auto_blockage_in_channel soft
place_design

After the new run, repeat the chapter from L-01. Expect the channel density to fall. Also check displacement and WNS, because spreading cells can lengthen some nets. Your project budgets, not the example numbers, decide when the channel is acceptable.

7.8 Exit criteria and stage checklist

  • Run record. The placement log has no errors, and the modes and settings are stored with the reports.
  • Legality. checkPlace is clean and Unplaced is zero.
  • Protected objects. FIXED and dont_touch counts equal the baseline.
  • Density. No bin above the project limit in a macro channel.
  • Congestion. The hotspot score is within the project budget.
  • Physical cells. End caps, well taps and tie connections are verified.
  • Timing. The pre-CTS summary covers every required view, coverage is reviewed, and optDesign -preCTS improved timing.
  • DRVs. Transition and capacitance violations are cleared, and fanout violations are fixed or explained.
  • Evidence. Reports are stored per run, with the evidence class noted.

Thus, placement is qualified when it is legal, protects what must stay fixed, leaves room to route, and gives healthy timing under ideal clocks. It is not a clock tree result, and the numbers here will move once clocks are propagated. Chapter 8 checks that the design, the clocks and the settings are ready for clock tree synthesis.

CHAPTER 7 SANITY CHECKS

7.9 Sanity check cheat sheet: Placement

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
L-01Placement run and log
After place_design
place_design
report_scan_chain -out_file <f>
scanTrace -verbose
The run finished without errors, legalisation moves are recorded and understood, and scan reordering ran if scan is defined.A warning that scan reordering was skipped, or that placement ran non-timing-driven when constraints were expected.The run ended with an error, or it used settings that differ from the recorded set.
L-02Placement legality
After placement and after any later cell change
checkPlace <report_file>No violations, Unplaced is zero, and the placed and fixed counts match the baseline and the log.A few pin access or pre-route DRC findings that you can list, locate and explain.Any overlap, out-of-core, off-grid, orientation, region or fence violation, or any unplaced instance.
L-03Fixed and dont_touch status preserved
After placement
dbGet -p top.insts.pStatus fixed
dbGet top.insts.isDontTouch 1 -p
report_preserves -dont_touch
FIXED count and macro list equal the baseline, and dont_touch differences are explained by the log.The dont_touch count differs only by cells that the log explains, such as buffers removed.A macro or preplaced cell is no longer FIXED, or a protected object lost its dont_touch setting.
L-04Density and pin density
After placement
reportDensityMap -gridInRow <n> -threshold <d>
reportPinDensityMap
No bin above the project density limit, and the bin size used is stored with the report.A few bins above the limit that are not in a macro channel and not over a congestion hotspot.Bins above the project limit in a macro channel, or over a hotspot found in L-05.
L-05Congestion after placement
After placement
earlyGlobalRoute
reportCongestion -hotSpot -overflow
The maximum hotspot score is within the project budget. The reference calls a score below 100 typically routable, as guidance only.Overflow limited to one or two small hotspots away from macro channels, with mild density findings.A hotspot score above the project budget, or a hotspot in a macro channel that placement settings cannot relieve.
L-06Physical cells and tie connections
After placement
verifyEndCap -report <f>
verifyWellTap -report <f>
checkDesign -tieHiLo -noHtml -outfile <f>
No missing or wrong end caps or well taps, and no unconnected tie terminal.Unconnected tie terminals reported before the flow has run addTieHiLo. Recheck after it.A missing or wrong end cap, a missing well tap or a tap spacing violation in a row where cells are placed.
L-07Timing after placement
After placement, before optimisation
timeDesign -preCTS -outDir <dir>Setup WNS and TNS meet the project target for this stage in every required view, and the views listed match the plan.Negative slack that the project expects optDesign -preCTS to recover, with the failing paths listed and owned.Negative slack has no owner and no optimisation plan.
L-08Timing analysis coverage
After timeDesign
report_analysis_coverage -verbose {violated untested}Untested is zero, or every untested check has a reason you accept, such as a constant or a false path.Untested checks whose reason is a known constant, disabled arc or false path, each with an owner.Untested checks with no endpoint clock or no data signal on flops that should be timed.
L-09DRVs and high-fanout nets
Before and after optimisation
timeDesign -preCTS -drvReports -outDir <dir>
reportFanoutViolation -outfile <f>
report_constraint -drv_violation_type {max_transition max_capacitance max_fanout} -all_violators
Counts are within the project budget, and every violating net is listed in the type files.Maximum fanout violations are present. optDesign does not repair them unless setOptMode -opt_fix_fanout_load is set.Maximum transition or capacitance violations remain after optDesign -preCTS, or counts exceed the project budget.
L-10Pre-CTS optimisation
After L-07 to L-09
check_timing -type loops
setOptMode -opt_fix_fanout_load true
optDesign -preCTS
WNS and TNS improve or meet the target, DRVs are cleared, density stays within the project budget, and the L-02 recheck is clean.Some slack stays negative, with the cause listed and a plan for the next stage.WNS or TNS is worse than before the run, new DRVs or placement violations appeared, or the run was interrupted.
CHAPTER 7 CHEAT SHEET

7.10 Command cheat sheet: Placement and post-placement

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

CommandWhat it produces
Placement settings and run record
getPlaceModeThe current value of every placement mode option. Use it to record the settings behind a placement run.
getPlaceMode -place_global_cong_effortThe current global placement congestion effort only.
getOptMode -opt_fix_fanout_loadThe current setting that decides whether optDesign repairs fanout violations.
report_command_mode -non_defaultEvery mode option that differs from its default. A compact record of what the placement and optimisation modes were set to.
report_command_mode -filter {setPlaceMode} -userOnly the placement mode options you set by hand.
setPlaceMode -place_global_cong_effort highRaises the congestion effort of global placement for the next run. Changes a mode setting.
setPlaceMode -place_global_auto_blockage_in_channel softSelects how global placement treats automatic blockages in narrow channels. Changes a mode setting.
setPlaceMode -resetReturns the placement mode options to their defaults. Changes a mode setting.
place_designGlobal placement, legalisation and pre-placement optimisation. Timing-driven when constraints are loaded, and scan reorder when scan information is loaded. Changes the database.
place_design -noPrePlaceOptPlacement without the pre-placement optimisation step that removes buffer trees. Changes the database.
place_design -incrementalRe-places an already placed design after small changes. It does not remove buffer trees. Changes the database.
place_opt_designPlacement and pre-CTS optimisation in one command. An alternative to running place_design and then optDesign -preCTS. Changes the database.
Legality and fixed objects
checkPlace <report_file>Checks placed and fixed cells for overlap, off-grid, orientation, site, blockage, region and fence violations, prints placed, fixed and unplaced counts and writes a violation report. Adds markers and writes a file.
checkPlace -noPreplaced <report_file>The same check without checking the fixed instances themselves, which are treated as placement blockages. Adds markers and writes a file.
checkPlace -clearMarkerRemoves the violation markers left by an earlier check. Changes only the GUI markers.
check_design -type place -out_file <f>Checks run before placement, such as rail alignment, pin access and missing termination cells. Writes a file.
checkDesign -place -noHtml -outfile <f>A text report of placement problems: instances with placement violations, outside the core, or overlapping other instances or placement blockages. Writes a file.
dbGet -p top.insts.pStatus fixedThe instances whose placement status is fixed. Use it to confirm macros and preplaced cells did not move.
dbGet top.insts.isDontTouch 1 -pThe instances carrying the dont-touch attribute.
report_preserves -dont_touchThe dont-touch settings that affect optimisation.
report_preserves -dont_useThe dont-use settings that affect optimisation.
Density and congestion
reportDensityMapA placement density map and report, with the default threshold and a bin size of ten rows.
reportDensityMap -gridInRow <n> -threshold <d>The density report with your own bin size in rows and your own display threshold.
reportDensityMap -gridInMicron <microns> -ignoreFiller trueThe density report with bins measured in microns and filler cells left out.
reportPinDensityMapA pin density map and report, using the default pin density threshold.
reportPinDensityMap -gridInRow <n> -threshold <d>The pin density report with your own bin size and threshold.
earlyGlobalRouteA quick global route that estimates congestion and parasitics. It is not DRC clean and not for signal integrity analysis. Changes the database.
reportCongestion -hotSpot -overflowAverage congestion, overflow and the local hotspot score. Needs a route to exist first.
reportCongestion -hotSpot -num_hotspot <n>The hotspot score for the worst n hotspots.
Physical and tie cells, scan
verifyEndCap -report <f>Checks that pre and post end cap cells match the end cap mode settings and lists missing or wrong cells. Adds markers and writes a file.
verifyWellTap -report <f>Checks well-tap spacing and missing well-tap cells. Areas under blocks, halos and blockages are skipped. Adds markers and writes a file.
checkDesign -tieHiLo -noHtml -outfile <f>A text report of unconnected tie pins and tie pins connected to different nets. Writes a file.
getTieHiLoMode -nonDefaultThe tie cell settings that are not at their default value.
setTieHiLoMode -maxFanout <n> -maxDistance <d>Limits how many pins one tie cell drives and how far it may sit from them. Changes a mode setting.
addTieHiLo -cell <tieHi tieLo>Adds the two tie cells named in quotation marks and connects tie pins. Changes the database.
scanTrace -verboseThe number of scan elements and the start and end scan points, recorded in the log.
report_scan_chain -out_file <f>Scan chain information: bit count, order and wire length of each chain segment. Writes a file.
Timing and coverage after placement
check_timing -type loopsReports combinational timing loops. Break them with set_disable_timing before optimising.
report_analysis_coverage -verbose {violated untested}Counts of checks that are met, violated and untested, with the untested reason for each listed check.
report_analysis_coverage -check_type <check_type_list> -sort slackThe coverage report limited to chosen check types and sorted by slack.
timeDesign -preCTS -expandedViews -outDir <dir>Adds view-specific reports and restores views pruned by auto view pruning. Changes the database and the analysis settings, and writes files.
timeDesign -preCTS -outDir <dir>Early global route, extraction and timing with ideal clocks, plus summary reports. Changes the database and the analysis settings, and writes files.
timeDesign -preCTS -reportOnly -outDir <dir>Timing reports from extraction and timing data already in memory, without a new extraction. Writes files.
timeDesign -preCTS -hold -outDir <dir>The same flow for hold checks, which on ideal clocks is not a qualification result. Changes the database and the analysis settings, and writes files.
timeDesign -preCTS -numPaths <n> -outDir <dir>Timing with more paths per group in the reports. Changes the database and the analysis settings, and writes files.
DRVs, fanout and pre-CTS optimisation
timeDesign -preCTS -drvReports -outDir <dir>Timing plus transition, capacitance and fanout reports. Changes the database and the analysis settings, and writes files.
report_constraint -drv_violation_type {max_transition max_capacitance max_fanout} -all_violatorsEvery net or pin that violates the chosen design rule constraints.
reportFanoutViolation -outfile <f>The pins that exceed the fanout constraints, after timing analysis. Writes a file.
setOptMode -opt_fix_fanout_load trueAllows optDesign to repair fanout violations. Changes a mode setting.
setDelayCalMode -enable_high_fanout <true|false>Controls the special delay treatment of very high fanout nets. Changes a mode setting.
optDesign -preCTSPre-CTS timing optimisation on all views, ending with a summary of setup, DRV and density figures. Changes the database.
optDesign -preCTS -drvOptimisation limited to design rule violations. Changes the database.
optDesign -preCTS -incrAn incremental setup-only pass that needs an earlier optDesign run and cannot be combined with -drv. Changes the database.
optDesign -preCTS -outDir <dir> -prefix <name>Pre-CTS optimisation with its reports saved under your own directory and file name prefix. Changes the database and writes files.