This stage covers running and checking placement: the place_opt stages and run settings, legality and protected-object preservation, congestion and routability after placement, physical and tie cell completeness, and timing and design rule results.
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_opt |
place_optreport_app_options |
The run finished without errors, every stage ran, and the options used equal the recorded set. | A warning that DFT optimisation was skipped, or that placement ran with over-utilised regions. | The run ended with an error, or used settings that differ from the recorded set. |
| L-02 | Placement legality After placement and any later cell change |
check_legalitylegalize_placement |
The legality check reports no violations, and fixed objects are unchanged. | A few pin access findings that you can list, locate and explain. | Any overlap, off-site, orientation, region or fence violation, or any unplaced instance. |
| L-03 | Protected objects preserved After placement |
report_dont_touchreport_size_only -all |
The dont_touch and size_only lists equal the baseline apart from changes the log explains. | Differences limited to buffers the flow removed or added on purpose. | A macro or protected cell lost its setting, or a protected object was modified. |
| L-04 | Congestion after placement After placement |
report_congestionreport_congestion -rerun_global_router |
Overflow is within the project budget, with soft congestion data included if the rules need it. | Overflow limited to a few small spots away from macro channels. | Overflow above the project budget, or a hotspot in a macro channel that settings cannot relieve. |
| L-05 | Routability After placement, before detail routing |
check_routabilitycheck_routability -check_pg_blocked_ports true |
No blocked standard-cell or macro ports, no pins out of boundary, no via definition errors. | Blocked-port findings on a few nets that you can list and have an owner for. | Blocked ports in a congested region, or any incorrect via definition. |
| L-06 | Physical and tie cells After placement |
check_boundary_cellsadd_tie_cellscheck_mv_design -pg_pin |
Boundary cells are complete, tie pins are connected, and the PG pin check is clean. | Tie pins reported before the tie step has run. Recheck after it. | Missing or wrong boundary cells, or tie or PG pins on the wrong net. |
| L-07 | Timing after placement After placement, before more optimisation |
report_qor †report_timing |
Setup WNS and TNS meet the project target for this stage in every required scenario. | Negative slack the project expects later stages to recover, with failing paths listed and owned. | Negative slack with no owner and no plan, or a scenario missing from the report. |
| L-08 | Design rule violations Before and after optimisation |
report_constraints -max_transitionreport_constraints -max_capacitance |
Counts are within the project budget and every violating net is listed. | Violations on nets with auto-disabled DRC, such as clock or constant nets. | Violations left after optimisation, or counts above the project budget. |
| L-09 | Scan reordering outcome After placement, if scan is defined |
optimize_dftreport_app_options |
Scan optimisation ran, its settings match the plan, and legality is rechecked afterwards. | Scan reordering switched off on purpose, with the reason recorded. | A scan block with no SCANDEF, or reordering that left hold-sensitive paths unreviewed. |
Command cheat sheet
ICC2 commands. Angle brackets are placeholders, and values shown are examples, not project limits. A dagger (†) marks a command the notes behind this book do not fully cover; it is shown without options, so confirm it with man or help in your release.
| Settings and run record | |
|---|---|
report_app_options | Lists application options, to record the settings behind a placement run. |
set_app_options -name place.coarse.max_density -value <v> | Caps placement density in non-congestion-driven placement. Changes the session; record it. |
set_app_options -name place.coarse.handle_early_data -value true | Continues placement through over-utilised regions. Changes the session; record it. |
set_app_options -name place_opt.flow.trial_clock_tree -value true | Builds a temporary clock tree and uses propagated clocks during place_opt. Changes the session; record it. |
| Placement stages | |
place_opt | Coarse placement, optimisation and legalisation through all five stages. Changes the session; record it. |
place_opt -from initial_drc | Restarts at the named stage, for example after fixing a floorplan issue. |
place_opt -to final_place | Stops after final_place, before the last optimisation stage. |
create_placement -timing_driven | Standalone coarse placement driven by timing. Changes the session; record it. |
refine_placement | Incremental placement to reduce congestion. Changes the session; record it. |
save_block -as <block>/<label> | A labelled checkpoint after placement. Writes to the library. |
| Legality and protected objects | |
check_legality | Reports legality violations for the whole block. |
legalize_placement | Legalises the placement. Changes the session; record it. |
legalize_placement -cells $cells | Legalises only the listed cells, in the standard legaliser only. |
report_dont_touch | Lists dont_touch settings, to compare with the pre-placement baseline. |
report_size_only -all | Lists size_only settings. |
| Congestion and routability | |
report_congestion | Congestion from the stored map, with overflow per layer. |
report_congestion -rerun_global_router | Reruns global routing to refresh the map before reporting. |
set_app_options -name route.global.export_soft_congestion_maps -value true | Saves soft congestion data too. Set before global routing. Changes the session; record it. |
check_routability | Blocked ports, out-of-boundary pins, grid and via definition checks, written to an error data file. |
check_routability -check_routing_track_space true | Adds a check for staggered PG vias that block routing tracks. |
| Physical cells, tie and scan | |
check_boundary_cells | Missing or wrong boundary and corner cells. |
add_tie_cells | Inserts tie cells for tie pins. |
check_mv_design -pg_pin | PG pin connection violations against the power intent. |
optimize_dft | Standalone scan optimisation on a placed block. Changes the session; record it. |
set_app_options -name opt.dft.optimize_scan_chain -value false | Switches scan chain optimisation off. Record the reason. |
| Timing and design rules | |
report_timing | Timing paths for the current scenario. |
report_qor † | Summary of timing and area quality of results. |
report_constraints -max_transition | Max transition violations. |
report_constraints -max_capacitance | Max capacitance violations. |
set_auto_disable_drc_nets -none | Enables design rule checks on every net, including clock and constant nets. Changes the session; record it. |