How does size_cell behave in freeze-silicon mode?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
With design.eco_freeze_silicon_mode (ICC2) set to true, size_cell (ICC2) first looks for a compatible spare cell within five times the unit site height of the cell being sized, and if none exists it refuses to size. When it finds one, the original cell becomes a spare renamed with a _Spare suffix, and a new cell with the original name, connections and new library cell is placed over the matched spare. -max_distance_to_spare_cell changes the search radius and -not_spare_cell_aware switches the check off.
Technical Explanation
- Freeze silicon keeps the base layers and changes only metal and vias, so a resized cell must land on a spare that already exists in silicon.
- The default radius is five unit site heights. If no valid spare lies within it, the command reports an error and leaves the cell unchanged.
- On success the new cell overlaps the matched spare, both carry an fs_mapped_cell_name attribute recording the mapping, and the new cell has is_fs_eco_add set to true.
-max_distance_to_spare_cellsets a different radius and cannot be combined with-not_spare_cell_aware. A bigger radius finds more spares, but the reconnection wire gets longer and its delay can eat the gain from the stronger cell.-not_spare_cell_awaresizes without the check, which leaves mapping toplace_freeze_silicon(ICC2) ormap_freeze_silicon(ICC2) later;check_freeze_silicon(ICC2) shows whether that mapping is possible.- The new library cell must be functionally compatible, have the same pin count and directions, and differ from the current one. To undo a sizing,
revert_eco_changes(ICC2) restores the original reference, location and orientation;revert_cell_sizing(ICC2) is only for sizings that cause cell spacing rule violations. size_cell(PT) exists too but has no spare awareness. A PT freeze-silicon ECO comes fromfix_eco_timing -physical_mode freeze_silicon(PT), needing a PrimeTime-ADV license, and ICC2 sources the list with freeze-silicon mode on.
What To Check
- Compatible spares near each target, using
check_freeze_silicon(ICC2). - Error messages from sizings that were refused.
- Distance to the mapped spare and the new wire length.
- The mapping attributes on each ECO cell and spare.
Command Checks & Actions
set_app_options -name design.eco_freeze_silicon_mode -value trueEnables freeze-silicon behaviour for netlist edits.
size_cell U21 -lib_cell AND2X4Sizes only if a compatible spare lies within five site heights.
size_cell U21 -lib_cell AND2X4 -max_distance_to_spare_cell 6.0Widens the spare search radius to 6 um.
size_cell U21 -lib_cell AND2X4 -not_spare_cell_awareSkips the spare check and leaves mapping for later.
check_freeze_siliconAnalyzes how ECO cells map to spare cells.
route_ecoReconnects the mapped cells with metal-only routing.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Every sizing maps to a spare inside the default radius and
check_freeze_silicon(ICC2) shows no unmapped ECO cells. - Suspicious (illustrative): Many sizings need a radius above 20 site heights, so spare density there is too low and the extra wire will cost timing.
- Hard stop: A sizing made with
-not_spare_cell_awarethatplace_freeze_silicon(ICC2) cannot map. It cannot be built without new base layers.
Common Mistake
The Trap: Sourcing a PT change list full of size_cell commands in ICC2 without turning freeze-silicon mode on. ICC2 sizes the cells in place like a normal ECO, the base layers change, and the metal-only respin quietly needs a full mask set.
What The Interviewer Is Testing
- The five-site-height default and the refuse-if-none behaviour.
- Whether you know the rename and overlap mechanics.
- Separating ICC2
size_cell(ICC2) fromsize_cell(PT).
Follow-up Question & Model Response
"Why does ICC2 refuse to size rather than size now and map later?"
Candidate Model Response: In freeze-silicon mode a sizing is only buildable if a matching spare exists nearby. Refusing at the size_cell call catches an impossible change at once, instead of after the whole ECO is applied and mapping fails. It also keeps the new cell close to the original, so the reconnection routes stay short. If you want to defer mapping on purpose, -not_spare_cell_aware switches the check off.
Practical Example
Tapeout Scenario: Site height is 0.6 um, so the default radius is 3.0 um (illustrative). The PT change list has 14 size_cell commands. With freeze-silicon mode on, 11 find a compatible spare within 3.0 um and map at once. Two find one within 6 um, and rerunning them with -max_distance_to_spare_cell 6.0 maps them with 7 ps of extra wire delay, well inside the 20 ps the stronger cells gained. The last has no compatible spare within 30 um, so that path gets a different fix: a buffer on route mapped to a programmable spare cell.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising