IntermediateQuestion 180 of 192Source: Synopsys ICC2 Implementation User Guide: ECO Flow, Placing ECO Cells

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 Reference DiagramWhen would you use legalize_eco_cells instead of hand-tuning place_eco_cells?
Two placement views of the same ECO cells legalized with low and high displacement tolerance, showing low keeping ECO cells near their PrimeTime locations while existing cells may shift, and high leaving existing cells in place while ECO cells drift further, with the equivalent place_eco_cells settings listed beside them.

Technical Explanation

  • The guide gives the equivalence directly. legalize_eco_cells -cells ecoCells -displacement_tolerance_level low (ICC2) equals setting eco.placement.optimized_legalization (ICC2) to true and running place_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_impact first 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_distance on place_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_threshold are 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_threshold stay unlegalized in epl_max_displacement_cells, which a script can reject. -remove_filler_references controls 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

ICC2 (icc2_shell)legalize_eco_cells -cells $ecoCells -displacement_tolerance_level low

Keeps ECO cells near their given locations, pushing existing cells if needed.

ICC2 (icc2_shell)legalize_eco_cells -cells $ecoCells -displacement_tolerance_level high

Keeps existing cells in place and lets ECO cells move further instead.

ICC2 (icc2_shell)set_app_options -name eco.placement.optimized_legalization -value true

Enables optimized legalization for a hand-tuned run.

ICC2 (icc2_shell)place_eco_cells -cells $ecoCells -legalize_mode minimum_physical_impact -legalize_only -moveable_distance 10

Hand-tuned alternative that limits movement to cells within 10 um of the ECO cells.

ICC2 (icc2_shell)check_legality

Confirms the placement is legal after legalization.

ICC2 (icc2_shell)report_eco_physical_changes -type cell_displacement

Lists 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

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.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →