IntermediateQuestion 181 of 192Source: Synopsys ICC2 Implementation User Guide: ECO Flow, Reporting Available Sites

How do you check there's physical room for ECO cells before fixing?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Run report_cell_feasible_space (ICC2) on the region around your violations before PrimeTime adds any buffers. It reports free placeable sites, grouped by width, after subtracting existing cells, placement blockages and macros. If there are no gaps wide enough for the cells you plan to add, fix with sizing, use PrimeTime's open-site mode, or make room first.

Technical Reference DiagramHow do you check there's physical room for ECO cells before fixing?
A dense standard cell row region with the few free sites highlighted and grouped by width, the slivers narrower than the smallest cell greyed out, and a boundary box marking the violation region being reported.

Technical Explanation

  • Feasible space is placeable site area minus occupied area. Occupied means existing cells (ECO cells excluded), placement blockages and macros.
  • By default the whole block is reported. -voltage_areas restricts it to named voltage areas and -boundary to one rectangle or rectilinear polygon; the two options are mutually exclusive. With -boundary, only space inside voltage areas within the boundary counts.
  • Spaces are grouped by width, and anything narrower than the smallest existing cell is reported as less than minimum width. Designs with several site definitions get a separate breakdown for each.
  • The report assumes every non-ECO cell is legal. Non-ECO cells off the site grid are treated as free space, collected in $ecoNonLegalCellsForSpaceCheck and flagged with a warning. ECO cells are ignored unless their eco_change_status is eco_legalized.
  • Fillers occupy sites. -ignore_filler_references treats unfixed fillers of the listed references as free; fixed fillers always count as occupied.
  • Why it matters: the default place_eco_cells (ICC2) mode uses free sites only, and a cell with no free site nearby can be displaced a long way. Knowing the space first lets you choose sizing over buffering, or fix_eco_timing -physical_mode open_site (PT), which only makes changes where room already exists. Physically aware modes need a PrimeTime-ADV license (PT UG, ECO chapter).
  • A buffer must sit in the voltage area of its net's power domain, so free space in a neighbouring voltage area does not help.

What To Check

  • Free space by width inside the violation region, not only the whole-block total.
  • The widest gaps against the width of the buffers or delay cells you intend to use.
  • Whether fillers were counted as occupied or ignored.
  • Any warning about non-legal cells, which makes the numbers unreliable.
  • The voltage area the fixes must go into.

Command Checks & Actions

ICC2 (icc2_shell)report_cell_feasible_space

Reports free sites, grouped by width, for the whole block.

ICC2 (icc2_shell)report_cell_feasible_space -boundary {{300 200} {360 260}}

Reports free sites only in the region around the violations.

ICC2 (icc2_shell)report_cell_feasible_space -voltage_areas {pd2}

Reports free sites in the voltage area where the fixes must go.

ICC2 (icc2_shell)report_cell_feasible_space -ignore_filler_references $references

Counts unfixed fillers of the listed references as free space.

PrimeTime (pt_shell)fix_eco_timing -type hold -physical_mode open_site

Restricts hold fixing to changes that fit where there is room already.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): The violation region has 120 gaps of four sites or wider, enough for the planned 30 buffers.
  • Suspicious (illustrative): Most free space is in slivers below minimum width, or appears only when fillers are ignored.
  • Hard stop: No gap in the region is wide enough for the smallest delay cell, or the non-legal-cell warning fires and the report cannot be trusted.

Common Mistake

The Trap: Reporting the whole block, seeing 2.1% free space and calling it enough. The violations sit in a 60 um by 60 um corner beside a macro that has almost no free space. The legalizer pushes the new buffers 40 um away, the fixes stop working and the next round has to revert them.

What The Interviewer Is Testing

  • Checks space in the region and voltage area that matter, not the global number.
  • Knows what the report counts as occupied, including fillers and ECO cells.
  • Can say how the answer changes the fixing method.

Follow-up Question & Model Response

"Why does the report ignore ECO cells unless they are eco_legalized?"

Candidate Model Response: ECO cells that are not yet legalized only have tentative locations, and many may overlap existing cells or each other. Counting them would mark sites as taken that may end up free, or miss the sites they will really take. Once legalized, their locations are final and they are counted like any other cell. So run the report after legalizing one batch to see what room is left for the next.

Practical Example

Tapeout Scenario: Forty hold violations sit in a region of about 60 um by 60 um (illustrative). report_cell_feasible_space -boundary (ICC2) shows 18 gaps of four sites or wider and 140 slivers below minimum width. The plan needs 30 delay cells four sites wide, so only 18 can go in place. The team fixes 22 endpoints with sizing and the other 18 with open-site hold fixing in PrimeTime, which uses the gaps that exist. After legalization, maximum displacement is 1.5 um.

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. →