Synopsys IC Compiler II (ICC2) · stage 7 of 16

Placement and post-placement

Sanity checks and commands for the place_opt run, legality, protected objects, congestion, tie and scan, and post-placement timing quality.

6 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

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.

CardCheck and whenCommandHealthyReviewHard stop
L-01 Placement run and log
After place_opt
place_opt
report_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_legality
legalize_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_touch
report_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_congestion
report_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_routability
check_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_cells
add_tie_cells
check_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_transition
report_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_dft
report_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_optionsLists 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 trueContinues placement through over-utilised regions. Changes the session; record it.
set_app_options -name place_opt.flow.trial_clock_tree -value trueBuilds a temporary clock tree and uses propagated clocks during place_opt. Changes the session; record it.
Placement stages
place_optCoarse placement, optimisation and legalisation through all five stages. Changes the session; record it.
place_opt -from initial_drcRestarts at the named stage, for example after fixing a floorplan issue.
place_opt -to final_placeStops after final_place, before the last optimisation stage.
create_placement -timing_drivenStandalone coarse placement driven by timing. Changes the session; record it.
refine_placementIncremental 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_legalityReports legality violations for the whole block.
legalize_placementLegalises the placement. Changes the session; record it.
legalize_placement -cells $cellsLegalises only the listed cells, in the standard legaliser only.
report_dont_touchLists dont_touch settings, to compare with the pre-placement baseline.
report_size_only -allLists size_only settings.
Congestion and routability
report_congestionCongestion from the stored map, with overflow per layer.
report_congestion -rerun_global_routerReruns global routing to refresh the map before reporting.
set_app_options -name route.global.export_soft_congestion_maps -value trueSaves soft congestion data too. Set before global routing. Changes the session; record it.
check_routabilityBlocked ports, out-of-boundary pins, grid and via definition checks, written to an error data file.
check_routability -check_routing_track_space trueAdds a check for staggered PG vias that block routing tracks.
Physical cells, tie and scan
check_boundary_cellsMissing or wrong boundary and corner cells.
add_tie_cellsInserts tie cells for tie pins.
check_mv_design -pg_pinPG pin connection violations against the power intent.
optimize_dftStandalone scan optimisation on a placed block. Changes the session; record it.
set_app_options -name opt.dft.optimize_scan_chain -value falseSwitches scan chain optimisation off. Record the reason.
Timing and design rules
report_timingTiming paths for the current scenario.
report_qor †Summary of timing and area quality of results.
report_constraints -max_transitionMax transition violations.
report_constraints -max_capacitanceMax capacitance violations.
set_auto_disable_drc_nets -noneEnables design rule checks on every net, including clock and constant nets. Changes the session; record it.