IntermediateQuestion 169 of 192Source: Synopsys PrimeTime User Guide U-2022.12-SP2: ECO Flow (Physically Aware ECO, Freeze Silicon ECO Flow)

What's the difference between occupied_site, open_site and freeze_silicon physical ECO modes?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

The -physical_mode setting decides where PrimeTime may put a new or resized cell. occupied_site places or resizes even with no free site, so it fixes more but leaves ICC2 legalization to push neighbours; open_site uses only free sites, so it fixes less but moves almost nothing; freeze_silicon places new cells only on spare cells so the silicon layers stay the same. All three belong to the physically aware ECO flow, which requires a PrimeTime-ADV license.

Technical Reference DiagramWhat's the difference between occupied_site, open_site and freeze_silicon physical ECO modes?
Three panels on the same row grid: occupied_site places a new buffer overlapping existing cells that legalization must push aside, open_site places it only in a free gap, and freeze_silicon maps it onto an existing spare cell.

Technical Explanation

  • Logic-only ECO sees just the netlist and parasitics. Physically aware ECO also reads placement, so it writes locations for changed cells, avoids large displacement, considers density and wire delay for buffers, and can buffer on an existing route.
  • occupied_site suits early ECOs and highly utilized blocks. It fixes more because placement is aggressive, but every overlap becomes displacement in ICC2.
  • open_site suits late ECOs and lower utilization. eco_allow_filler_cells_as_open_sites (PT) lets filler count as free space, and eco_insert_buffer_search_distance_in_site_rows (PT), default 8 rows, bounds the search.
  • freeze_silicon places new cells only on spare cells. Programmable spare cells are named with set_eco_options -programmable_spare_cell_names (PT), and ICC2 implements the list with design.eco_freeze_silicon_mode (ICC2) set to true.
  • PT needs parasitics with locations, set by read_parasitics_load_locations (PT), and physical data from LEF/DEF or directly from ICC2 through set_eco_options -physical_icc2_lib (PT).
  • check_eco (PT) reports missing or bad physical data; fix and rerun it before fixing. The layout must also be legal and free of shorts and opens, or ICC2 fixes them later and the starting state changes.
  • write_changes -format icctcl (PT) writes each change with its location, which ICC2 sources and legalizes.

What To Check

  • A clean check_eco (PT) result before any fixing.
  • Local utilization around the violations, since open_site fix rates depend on free sites.
  • Cell displacement reported by ICC2 after legalization.
  • Fix rate and unfixable reasons per mode.

Command Checks & Actions

PrimeTime (pt_shell)set_app_var read_parasitics_load_locations true

Reads parasitics with location data.

PrimeTime (pt_shell)set_eco_options -physical_icc2_lib icc2_lib_path -physical_icc2_blocks icc2_blocks -log_file eco_phys.log

Reads physical data straight from the ICC2 library.

PrimeTime (pt_shell)check_eco

Checks the physical data for missing or problem entries.

PrimeTime (pt_shell)fix_eco_timing -type setup -physical_mode open_site

Late-stage setup fixing that uses only free sites.

PrimeTime (pt_shell)fix_eco_drc -type max_transition -physical_mode occupied_site

Earlier DRC pass that may overlap existing cells.

PrimeTime (pt_shell)write_changes -format icctcl -output eco_phys.tcl

Writes the changes with locations for ICC2.

ICC2 (icc2_shell)place_eco_cells -eco_changed_cells -legalize_only

Legalizes the changed cells at their PrimeTime locations after sourcing the list, without re-placing them.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): open_site fixes 90% of late violations and ICC2 legalization moves no existing cell more than two sites.
  • Suspicious (illustrative): open_site fixes under half the violations in a region at 85% utilization, where occupied_site may be worth its displacement.
  • Hard stop: Unresolved check_eco (PT) errors, meaning the placement PT used does not match the layout and the written locations are wrong.

Common Mistake

The Trap: Using occupied_site for a last-week ECO on a 90% utilized block. The fix rate looks excellent in PrimeTime, but ICC2 legalization moves 400 neighbouring cells, dozens of routes detour, and the next extraction shows setup and SI violations that were not there before.

What The Interviewer Is Testing

  • Matching the mode to design stage and utilization.
  • Knowing the license and the physical inputs PT needs.
  • How freeze_silicon links to spare cells and ICC2 freeze-silicon mode.

Follow-up Question & Model Response

"Why does PT need parasitics with locations for physically aware ECO?"

Candidate Model Response: To buffer on an existing route, PrimeTime must know where each piece of the net runs and estimate the wire delay on both sides of the cut. The PT UG requires SPEF or GPD with location information, read with read_parasitics_load_locations (PT) set to true. The parasitics must also match the netlist and layout it reads, so all three are written from the same saved block.

Practical Example

Tapeout Scenario: Two weeks before tapeout, a block at 72% utilization has 64 setup and 30 hold violations (illustrative). fix_eco_timing -type setup -physical_mode open_site (PT) fixes 58 setup violations and the hold pass fixes all 30. The 6 left sit in an 88% dense region with no open site near the path. A targeted occupied_site run on those paths fixes 5, and ICC2 legalization moves 23 cells by at most 2 sites. The last path goes back to the designer as a placement change.

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