This stage checks the placement run and what comes after it: the run log and scan reordering, placement legality, preservation of fixed and dont_touch status, density and congestion, physical and tie-cell connections, timing and design-rule violations after placement, and pre-CTS optimisation.
Sanity check cheat sheet
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.
| 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 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 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. |
Command cheat sheet
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| 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 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. |
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. |