Placement and post-placement qualification
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.
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 true | Why |
|---|---|
| Chapters 1 to 6 passed | Placement 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 ideal | The 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 scan | The 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 placement | Card L-03 compares against that baseline. |
| Project budgets exist for density, congestion hotspot score, WNS, TNS and DRV counts | This book sets none of them. |
| A zero-wire-load timing baseline from before placement exists | It 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
| Question it answers | Did placement finish in the intended mode, and what did the log say about legalisation and scan reordering? |
|---|---|
| Stage | After place_design |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Chapters 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | Whole design. The scan checks apply only if the block has scan chains. |
| Scan reorder | By 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 session | updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | The placement log, and for report_scan_chain a scan chain report. |
| Fields that matter | Errors 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. |
| Healthy | The run finished without errors, legalisation moves are recorded and understood, and scan reordering ran if scan is defined. |
| Warning | A warning that scan reordering was skipped, or that placement ran non-timing-driven when constraints were expected. |
| Hard stop | The run ended with an error, or it used settings that differ from the recorded set. |
| Common misuse | Reading 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 fix | Correct the constraint, scan setup or setting that the log names, then rerun place_design with the recorded settings. |
| Rerun after a fix | Rerun L-01 to L-10, because every cell may have moved. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is every placed instance legal, and what do the placed, fixed and unplaced counts say? |
|---|---|
| Stage | After placement and after any later cell change |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement finished. |
| Legacy UI | checkPlace <report_file> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | violationReportFileName names the report file. Without it the command shows only a summary. The file lists every violating instance. |
| Scope and view | Placed 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 session | adds GUI violation markers; writes files |
| Output | A console summary, violation markers in the design window and a report file. |
| Fields that matter | Counts 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. |
| Healthy | No violations, Unplaced is zero, and the placed and fixed counts match the baseline and the log. |
| Warning | A few pin access or pre-route DRC findings that you can list, locate and explain. |
| Hard stop | Any overlap, out-of-core, off-grid, orientation, region or fence violation, or any unplaced instance. |
| Common misuse | Comparing 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 fix | Run refinePlace for instances that moved, or correct the blockage, region or fence that the report names. Rerun checkPlace after every change. |
| Rerun after a fix | Rerun L-02 first, then L-03 to L-10. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Are the macros and preplaced cells still FIXED, and are the objects you protected still protected? |
|---|---|
| Stage | After placement |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | The 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -p returns pointers to the matching objects instead of values.-dont_touch limits report_preserves to dont_touch settings. |
| Scope and view | Whole design. |
| Effect on session | reads or reports only |
| Output | Tcl lists of instance pointers, and a preserves report. |
| Fields that matter | The 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. |
| Healthy | FIXED count and macro list equal the baseline, and dont_touch differences are explained by the log. |
| Warning | The dont_touch count differs only by cells that the log explains, such as buffers removed. |
| Hard stop | A macro or preplaced cell is no longer FIXED, or a protected object lost its dont_touch setting. |
| Common misuse | Counting only macros. Preplaced taps and end caps are FIXED too. Also comparing with a baseline taken before the floorplan last changed. |
| Root cause and fix | Restore the status in the floorplan or the constraints, then rerun placement, because cells may have moved around the object. |
| Rerun after a fix | Rerun L-03, then L-02. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Where is placement dense, and are there bins above the density your project allows? |
|---|---|
| Stage | After placement |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement finished and L-02 is clean. |
| Legacy UI | reportDensityMap -gridInRow <n> -threshold <d> reportPinDensityMap |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | Whole core. The reference lists -ignoreBlock and -ignoreFiller to leave blocks or fillers out of the calculation. |
| Effect on session | reads or reports only |
| Output | A density map for the display and a text report. |
| Fields that matter | The 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. |
| Healthy | No bin above the project density limit, and the bin size used is stored with the report. |
| Warning | A few bins above the limit that are not in a macro channel and not over a congestion hotspot. |
| Hard stop | Bins above the project limit in a macro channel, or over a hotspot found in L-05. |
| Common misuse | Reading 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 fix | Add placement guidance such as soft blockage in narrow channels, raise congestion effort, or add module padding, then place again. |
| Rerun after a fix | Rerun L-02 and L-04 to L-10. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Does placement leave enough routing resource, and where are the hotspots? |
|---|---|
| Stage | After placement |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement is legal and an estimated route exists. |
| Legacy UI | earlyGlobalRoute reportCongestion -hotSpot -overflow |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | Whole design. |
| Cost and side effect | earlyGlobalRoute 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 session | updates the design database; runs an expensive analysis. Some commands in this card only read or report. |
| Output | A console summary with usage, overflow, the congestion distribution and a hotspot table with boxes and scores. |
| Fields that matter | Horizontal and vertical overflow. The maximum and total hotspot score. The bounding box and rank of each hotspot. |
| Healthy | The maximum hotspot score is within the project budget. The reference calls a score below 100 typically routable, as guidance only. |
| Warning | Overflow limited to one or two small hotspots away from macro channels, with mild density findings. |
| Hard stop | A hotspot score above the project budget, or a hotspot in a macro channel that placement settings cannot relieve. |
| Common misuse | Treating 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 fix | Relieve the hotspot with placement settings or a floorplan change, then place again. |
| Rerun after a fix | Rerun L-02, L-04 and L-05, then L-07 to L-10, because cells moved. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Are end caps and well taps present and correct, and are tie-high and tie-low pins connected? |
|---|---|
| Stage | After placement |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | End-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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | Whole design. verifyWellTap does not check row areas covered by blocks, their halos or placement blockages. verifyEndCap checks end cap location only with -wrongLocation. |
| Tie cells | addTieHiLo 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 session | adds GUI violation markers; writes files |
| Output | Violation markers and report files. |
| Fields that matter | Missing 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. |
| Healthy | No missing or wrong end caps or well taps, and no unconnected tie terminal. |
| Warning | Unconnected tie terminals reported before the flow has run addTieHiLo. Recheck after it. |
| Hard stop | A missing or wrong end cap, a missing well tap or a tap spacing violation in a row where cells are placed. |
| Common misuse | Verifying taps with a rule that differs from the one used to insert them. |
| Root cause and fix | Insert the cells again with the project rule, add tie cells with addTieHiLo after placement, then recheck. |
| Rerun after a fix | Rerun L-06 and L-02, because added cells must be legal too. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | What do setup WNS, TNS, the path groups and the DRV summary look like on estimated routes with ideal clocks? |
|---|---|
| Stage | After placement, before optimisation |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement is legal. Constraints are loaded in every active view. Extraction settings are recorded. |
| Legacy UI | timeDesign -preCTS -outDir <dir> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | All active views. Setup only by default. |
| Clock model | timeDesign -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 session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis |
| Output | Path 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 matter | WNS, 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. |
| Healthy | Setup WNS and TNS meet the project target for this stage in every required view, and the views listed match the plan. |
| Warning | Negative slack that the project expects optDesign -preCTS to recover, with the failing paths listed and owned. |
| Hard stop | Negative slack has no owner and no optimisation plan. |
| Common misuse | Adding 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 fix | Correct the constraints or views, or the placement, and run again. |
| Rerun after a fix | Rerun L-07 to L-09 after any placement change. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Which timing checks did the analysis cover, and which are untested? |
|---|---|
| Stage | After timeDesign |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | timeDesign finished in the same session. |
| Legacy UI | report_analysis_coverage -verbose {violated untested} |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -verbose limits the detail table to the listed statuses: met, violated or untested. |
| Scope and view | All views, or one view if -view is given. |
| Effect on session | reads or reports only |
| Output | A summary table by check type and a detail table. |
| Fields that matter | For 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. |
| Healthy | Untested is zero, or every untested check has a reason you accept, such as a constant or a false path. |
| Warning | Untested checks whose reason is a known constant, disabled arc or false path, each with an owner. |
| Hard stop | Untested checks with no endpoint clock or no data signal on flops that should be timed. |
| Common misuse | Reading a clean WNS as full coverage. An untested check has no slack, so it cannot appear in WNS or TNS. |
| Root cause and fix | Add 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 fix | Rerun L-07 and L-08. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Are there maximum transition, capacitance or fanout violations, and which nets are they on? |
|---|---|
| Stage | Before and after optimisation |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | timeDesign 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | Whole design, all active views. |
| High-fanout nets | The 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 session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | The transition, capacitance and fanout files in the output directory, a fanout report file, and a constraint report on the console. |
| Fields that matter | The 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. |
| Healthy | Counts are within the project budget, and every violating net is listed in the type files. |
| Warning | Maximum fanout violations are present. optDesign does not repair them unless setOptMode -opt_fix_fanout_load is set. |
| Hard stop | Maximum transition or capacitance violations remain after optDesign -preCTS, or counts exceed the project budget. |
| Common misuse | Reading the counts in the timing summary and never opening the file for each type, which lists the nets. |
| Root cause and fix | Set 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 fix | Rerun L-09 and L-10. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Did optDesign -preCTS improve setup timing and clear DRVs without breaking legality? |
|---|---|
| Stage | After L-07 to L-09 |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Placement 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 UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -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 view | All analysis views together. The reference states that optDesign optimises all views concurrently in multi-mode multi-corner mode. |
| Effect on the design | optDesign 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 session | changes analysis configuration; updates the design database; writes files; runs an expensive analysis. Some commands in this card only read or report. |
| Output | A log summary, reports in timingReports, and a changed netlist and placement. |
| Fields that matter | WNS, 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. |
| Healthy | WNS and TNS improve or meet the target, DRVs are cleared, density stays within the project budget, and the L-02 recheck is clean. |
| Warning | Some slack stays negative, with the cause listed and a plan for the next stage. |
| Hard stop | WNS or TNS is worse than before the run, new DRVs or placement violations appeared, or the run was interrupted. |
| Common misuse | Running 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 fix | Fix the loops, constraints or congestion first. Then run optDesign -preCTS -incr, which needs an earlier optDesign run on all path groups. |
| Rerun after a fix | Rerun L-02 to L-10. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
7.5 Required reports, artefacts and how to read them
| Report | Fields that support qualification | Evidence class |
|---|---|---|
| Placement log (L-01) | errors; legalisation summary; scan reorder messages | implementation |
| checkPlace report (L-02) | violation counts; placed, fixed, unplaced; density | implementation |
| Fixed and dont_touch lists (L-03) | counts against the baseline | implementation |
| Density map report (L-04) | bins over the threshold; bin size; density ranges | preliminary |
| Congestion summary (L-05) | overflow; hotspot score and boxes | preliminary |
| End-cap, well-tap and tie reports (L-06) | missing or wrong cells; distance rule; unconnected tie pins | implementation |
| timeDesign summary and DRV files (L-07, L-09) | WNS and TNS by group; views; DRV counts; density | preliminary |
| Coverage report (L-08) | met, violated and untested checks by type | preliminary |
| optDesign summary (L-10) | WNS, TNS and DRV counts before and after | preliminary |
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.
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
| Finding | Status | Why |
|---|---|---|
| checkPlace clean and Unplaced is zero | PASS | No violation was found among the instances checkPlace examines. |
| Overlap, out-of-core, off-site or orientation violation | HARD STOP | Illegal cells cannot be routed or signed off. |
| FIXED count or macro list differs from the baseline | HARD STOP | A macro or preplaced cell may have moved or lost protection. |
| Some bins above the density limit, hotspot score within budget | WARN / REVIEW | Little growth room for optimisation. Recheck after L-10. |
| Hotspot score above the project budget | HARD STOP | The router will meet the same hotspot, so relieve it by placement now. |
| Negative setup slack before optimisation, with an owner | WARN / REVIEW | Expected at this stage. optDesign -preCTS is the repair. |
| A required view is missing from the timing summary | NOT EVALUATED | The summary does not cover that view. |
| WNS or TNS worse after optDesign -preCTS | HARD STOP | Optimisation made timing worse. Find the cause first. |
| Power-domain density rows in a single-supply block | NOT APPLICABLE | No 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.
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.
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.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| L-01 | Placement run and log After place_design | place_designreport_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-02 | Placement 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-03 | Fixed and dont_touch status preserved After placement | dbGet -p top.insts.pStatus fixeddbGet top.insts.isDontTouch 1 -preport_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-04 | Density 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-05 | Congestion after placement After placement | earlyGlobalRoutereportCongestion -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-06 | Physical 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-07 | Timing 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-08 | Timing 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-09 | DRVs 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-10 | Pre-CTS optimisation After L-07 to L-09 | check_timing -type loopssetOptMode -opt_fix_fanout_load trueoptDesign -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. |
7.10 Command cheat sheet: Placement and post-placement
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| Command | What it produces |
|---|
| Placement settings and run record | |
|---|---|
getPlaceMode | The current value of every placement mode option. Use it to record the settings behind a placement run. |
getPlaceMode -place_global_cong_effort | The current global placement congestion effort only. |
getOptMode -opt_fix_fanout_load | The current setting that decides whether optDesign repairs fanout violations. |
report_command_mode -non_default | Every 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} -user | Only the placement mode options you set by hand. |
setPlaceMode -place_global_cong_effort high | Raises the congestion effort of global placement for the next run. Changes a mode setting. |
setPlaceMode -place_global_auto_blockage_in_channel soft | Selects how global placement treats automatic blockages in narrow channels. Changes a mode setting. |
setPlaceMode -reset | Returns the placement mode options to their defaults. Changes a mode setting. |
place_design | Global 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 -noPrePlaceOpt | Placement without the pre-placement optimisation step that removes buffer trees. Changes the database. |
place_design -incremental | Re-places an already placed design after small changes. It does not remove buffer trees. Changes the database. |
place_opt_design | Placement 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 -clearMarker | Removes 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 fixed | The instances whose placement status is fixed. Use it to confirm macros and preplaced cells did not move. |
dbGet top.insts.isDontTouch 1 -p | The instances carrying the dont-touch attribute. |
report_preserves -dont_touch | The dont-touch settings that affect optimisation. |
report_preserves -dont_use | The dont-use settings that affect optimisation. |
| Density and congestion | |
|---|---|
reportDensityMap | A 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 true | The density report with bins measured in microns and filler cells left out. |
reportPinDensityMap | A 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. |
earlyGlobalRoute | A quick global route that estimates congestion and parasitics. It is not DRC clean and not for signal integrity analysis. Changes the database. |
reportCongestion -hotSpot -overflow | Average 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 -nonDefault | The 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 -verbose | The 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 loops | Reports 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 slack | The 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_violators | Every 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 true | Allows 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 -preCTS | Pre-CTS timing optimisation on all views, ending with a summary of setup, DRV and density figures. Changes the database. |
optDesign -preCTS -drv | Optimisation limited to design rule violations. Changes the database. |
optDesign -preCTS -incr | An 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. |