When would you use legalize_eco_cells instead of hand-tuning place_eco_cells?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
legalize_eco_cells (ICC2) is a short form of careful minimum-impact legalization: you give it the ECO cells and a tolerance level, low or high, instead of exact displacement numbers. Use it when the ECO cells already have good locations and you only need them made legal with as little disturbance as possible. Hand-tuned place_eco_cells (ICC2) is still the tool when you need control over placement itself, exact rejection thresholds or filler removal.
Technical Explanation
- The guide gives the equivalence directly.
legalize_eco_cells -cells ecoCells -displacement_tolerance_level low(ICC2) equals settingeco.placement.optimized_legalization(ICC2) to true and runningplace_eco_cells -cells ecoCells -legalize_mode minimum_physical_impact -legalize_only -displacement_tolerance_level low(ICC2). - So it legalizes only. It does not work out where cells should go. The cells need sensible locations first, for example from a physically aware PrimeTime change list, which writes a location for each change, or from an earlier
place_eco_cells -no_legalize(ICC2) run. - The tolerance level has two values, and it trades ECO cell movement against existing cell movement. Low, the default, keeps ECO cells closest to their given locations and tolerates more movement of existing cells; high lets ECO cells move further and keeps existing cell movement to a minimum.
minimum_physical_impactfirst puts each ECO cell on a nearby free site without moving anything. Only cells with no free site nearby are legalized by moving preexisting cells.eco.placement.optimized_legalization(ICC2) defaults to false. Turned on, it keeps movement of existing cells small, and-moveable_distanceonplace_eco_cells(ICC2) limits which existing cells may move at all.- Hand-tuning gives exact numbers instead of levels. In free_site_only mode, cells beyond
-displacement_thresholdare left unlegalized in epl_legalizer_rejected_cells; in minimum_physical_impact mode they are legalized by moving existing cells instead. In both modes, cells beyond-max_displacement_thresholdstay unlegalized in epl_max_displacement_cells, which a script can reject.-remove_filler_referencescontrols which fillers may be removed. - The page on legalize modes explains what each mode does. The choice here is simpler: one knob when you trust the locations, full options when you need to reject or audit specific cells.
What To Check
- All target cells already have locations before a legalize-only run.
- The legalization displacement summary: average, maximum and standard deviation.
check_legality(ICC2) clean after the run.report_eco_physical_changes(ICC2) for cells that ended up outside their connection box.
Command Checks & Actions
legalize_eco_cells -cells $ecoCells -displacement_tolerance_level lowKeeps ECO cells near their given locations, pushing existing cells if needed.
legalize_eco_cells -cells $ecoCells -displacement_tolerance_level highKeeps existing cells in place and lets ECO cells move further instead.
set_app_options -name eco.placement.optimized_legalization -value trueEnables optimized legalization for a hand-tuned run.
place_eco_cells -cells $ecoCells -legalize_mode minimum_physical_impact -legalize_only -moveable_distance 10Hand-tuned alternative that limits movement to cells within 10 um of the ECO cells.
check_legalityConfirms the placement is legal after legalization.
report_eco_physical_changes -type cell_displacementLists how far each ECO cell moved.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Maximum displacement under one row height,
check_legality(ICC2) clean, timing on touched paths within 2 ps of the PrimeTime prediction. - Suspicious (illustrative): With low tolerance, several cells move three rows or more, a sign that the area is close to full.
- Hard stop:
check_legality(ICC2) reports overlaps, or the low level pushes existing cells on critical paths into new violations.
Common Mistake
The Trap: Jumping straight to the high tolerance level so existing cells barely move. High lets the ECO cells drift away from the locations PrimeTime timed, and in a crowded region hold buffers slide several microns into whatever space is free. The extra wire changes the delay they were chosen for, a path PrimeTime fixed to +3 ps comes back at -4 ps, and the ECO round has to be repeated.
What The Interviewer Is Testing
- Knows
legalize_eco_cells(ICC2) is legalize-only with minimum physical impact. - Can name the options that give exact thresholds when a script must reject cells.
- Understands where ECO cell locations come from before legalization.
Follow-up Question & Model Response
"When would you prefer the full place_eco_cells options even though legalize_eco_cells is simpler?"
Candidate Model Response: When a signoff script must reject ECO cells that would move beyond a fixed distance, you need -max_displacement_threshold and the epl_max_displacement_cells collection it creates. When fillers are already in, you need -remove_filler_references to say which fillers may give up their sites. When cells have no location yet, you need the placement step itself, not a legalize-only run. The tolerance levels are convenient, but they do not produce the named collections you can audit.
Practical Example
Tapeout Scenario: A physically aware PrimeTime ECO writes 64 buffers and 30 resized cells, each with a location, into a region at 78% utilization (illustrative). legalize_eco_cells (ICC2) at low tolerance gives maximum displacement 1.8 um and average 0.4 um, and 12 existing cells move within 10 um. Timing on the touched paths is within 2 ps of PrimeTime's prediction. An earlier trial at high tolerance had left existing cells alone but let 9 buffers slide up to 6 um from their PrimeTime locations, taking a +3 ps path to -4 ps, so the low result is kept.
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