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 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, andeco_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 withdesign.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 throughset_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
set_app_var read_parasitics_load_locations trueReads parasitics with location data.
set_eco_options -physical_icc2_lib icc2_lib_path -physical_icc2_blocks icc2_blocks -log_file eco_phys.logReads physical data straight from the ICC2 library.
check_ecoChecks the physical data for missing or problem entries.
fix_eco_timing -type setup -physical_mode open_siteLate-stage setup fixing that uses only free sites.
fix_eco_drc -type max_transition -physical_mode occupied_siteEarlier DRC pass that may overlap existing cells.
write_changes -format icctcl -output eco_phys.tclWrites the changes with locations for ICC2.
place_eco_cells -eco_changed_cells -legalize_onlyLegalizes 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
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