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

Pre-placement readiness

Sanity checks and commands for legality, dont-touch scope, blockages, tie cells, scan data and congestion before placement starts.

6 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

This stage covers the gate before placement: legality of preplaced cells, dont-touch and cell-purpose scope, blockage and keepout review, tie and scan data readiness, and a congestion and timing check before the first placement run.

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
R-01 Legality and cell inventory
Before pre-placement setup
check_legality
report_cells
Macros and preplaced physical cells match the floorplan record, and the legality check is clean on them. Standard cells already placed, or fixed cells that no floorplan note explains. A macro, end cap or tap that is unplaced or illegal.
R-02 Dont-touch and cell purpose
After library and constraint setup
report_dont_touch
get_lib_cells -filter valid_purposes=~*cts*
report_target_library_subset
Every restricted object is one you listed, and cells that later steps need keep the right purpose. Entries nobody listed, or a subset restriction that overrides a design-wide setting. A cell that CTS or hold fixing needs is excluded with no recorded reason.
R-03 Blockages and keepout margins
After floorplan, before placement
get_placement_blockages Each blockage has a purpose, a type and a name, and region utilisation warnings in the log are understood. Soft or partial blockages nobody recorded, which quietly remove open sites. Utilisation above the project budget, or a hard blockage over an area the plan needs for cells.
R-04 Tie connections
After physical cells, before placement
connect_pg_net -tie
add_tie_cells
Tie pins are connected or deliberately left for the tie-cell step, and the plan says which. Unconnected tie pins while tie insertion is planned after placement, which is expected but must be recorded. Tie pins on a net that differs from the PG net of their cell.
R-05 Scan data
After floorplan, before placement
read_def <scandef>
report_app_options
SCANDEF is read for every scan block, and scan optimisation settings match the plan. Scan optimisation switched off on purpose, or the missing-SCANDEF continue option set. A scan block with no scan chain information, or scan settings that differ from the plan.
R-06 Placement and layer settings
Before placement
report_app_options
report_ignored_layers
Every non-default placement and optimisation option is in the pre-placement script with a stated reason. An option set interactively that the script does not hold. Congestion or scan settings that differ from the plan, or layer limits that differ from the routing plan.
R-07 Constraints and timing readiness
Before placement
check_timing †
report_timing
Constraint warnings are reviewed and the unplaced baseline slack is stored with its scenario list. Negative slack before any wire exists, so placement starts with a deficit that needs an owner. Constraint errors, or no constraints loaded, so placement would run without timing.
R-08 Congestion risk
Before placement
report_congestion
report_ignored_layers
Congestion on the floorplan alone is within the project budget, and narrow macro channels are recorded. A hotspot in a macro channel, or a narrow channel with no plan for it. A hotspot above the project budget that the floorplan, not placement, has to fix.
R-09 Ready-for-placement gate
Last step before placement
check_design †
check_legality
check_boundary_cells
The design check reports no errors, and legality and boundary checks are clean on fixed objects. Warnings that point to settings you made on purpose, each with a recorded reason. Any design check error, or any violation on a macro or preplaced cell.

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.

Legality and cell inventory
check_legalityReports legality violations for the placed and fixed cells in the block.
check_legality -cells $cellsThe same check limited to a collection of cells.
report_cellsLists cells, to compare macro and physical-only cell counts with the floorplan record.
check_boundary_cellsReports missing or wrong boundary cells before placement starts.
Dont-touch, size-only and cell purpose
report_dont_touchLists the dont_touch settings on modules, cells and nets.
set_dont_touch [get_cells <inst>] trueExcludes the cell from optimisation. Changes the session; record it.
remove_attributes [get_cells <inst>] dont_touchRemoves the setting again. Changes the session; record it.
report_size_only -allLists objects restricted to sizing only.
set_lib_cell_purpose -exclude cts <lib_cells>Keeps the cells out of clock tree use. Persists in the block. Changes the session; record it.
set_lib_cell_purpose -include cts <lib_cells>Allows the cells for CTS. A cell with dont_use is excluded from every purpose.
get_lib_cells -filter valid_purposes=~*cts*The cells currently valid for CTS.
report_target_library_subsetThe library subset restrictions now in force.
Blockages and keepout margins
create_placement_blockage -boundary {{<x1> <y1>} {<x2> <y2>}} -type hardA hard blockage for cells and macros in the box. One call makes one blockage. Changes the session; record it.
create_placement_blockage -boundary {{<x1> <y1>} {<x2> <y2>}} -type partial -blocked_percentage <pct>A density limit used in coarse placement only. Changes the session; record it.
get_placement_blockagesThe blockages in the block, to compare with the floorplan record.
remove_placement_blockages -allRemoves every blockage. Changes the session; record it.
create_keepout_margin -outer {<l> <b> <r> <t>} <macro>A hard keepout margin around the macro, in microns. Changes the session; record it.
Tie cells, scan and spares
connect_pg_net -tieConnects tie-off pins only, without touching PG pins.
add_tie_cellsInserts tie cells for tie pins. Run it once cells are placed and the plan allows it.
read_def <scandef>Annotates scan chains from SCANDEF so placement can optimise them.
set_app_options -name place.coarse.continue_on_missing_scandef -value trueLets placement continue for a block with no SCANDEF. Changes the session; record it.
add_spare_cells -cell_name spare -lib_cell {<cell1> <cell2>} -num_instances <n>Adds the same count of each spare cell type, spread by cell density.
Settings and congestion
report_app_optionsLists application options, to record the settings behind the run.
set_app_options -name place.coarse.handle_early_data -value trueLets placement continue when a region is over-utilised, for early floorplans. Changes the session; record it.
report_congestionCongestion from the stored map, or from a map-only global route if none exists.
report_ignored_layersPrints the layer limits used for estimation and congestion.
Readiness gate
check_timing †Constraint consistency and completeness warnings.
report_timingTiming paths before placement, as the baseline for the first placement run.
check_design †The design prerequisite check before the placement stage.
save_block -as <block>/<label>A labelled checkpoint to return to if placement is repeated. Writes to the library.