ExpertQuestion 127 of 141Source: Synopsys PrimeTime User Guide: ECO Flow (Freeze Silicon ECO Flow); Synopsys ICC2 Implementation User Guide: ECO Flow

Take a metal-only ECO from PrimeTime to a mapped layout.

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

In a freeze silicon ECO only metal and via layers may change, so every new cell must land on a spare cell that is already on the silicon. PrimeTime generates fixes restricted to spare cells with -physical_mode freeze_silicon, and ICC2 implements them in freeze silicon mode, checks feasibility, maps each ECO cell to a spare cell and reroutes only what changed. Then you extract and sign off again.

Technical Reference DiagramTake a metal-only ECO from PrimeTime to a mapped layout.
Two swim lanes, PrimeTime and ICC2: PrimeTime fixes with freeze_silicon mode and writes an icctcl change list; ICC2 sources it in freeze silicon mode, checks, places and maps ECO cells onto spare cells, then runs ECO routing; an inset shows a programmable spare cell being replaced by a buffer and backfilled.

Technical Explanation

  • In PrimeTime, set_eco_options -programmable_spare_cell_names (PT) names the spare cells, together with the LEF/DEF or ICC2 database paths and the spacing rule file exported from ICC2. Physically aware fixing needs a PrimeTime-ADV license (PT UG, ECO Flow).
  • Fixing uses fix_eco_timing -type hold -physical_mode freeze_silicon (PT) or fix_eco_drc -physical_mode freeze_silicon (PT). New cells are placed only on spare cells, so the silicon layers are preserved.
  • write_changes -format icctcl (PT) writes the change list. For freeze silicon, each buffer insertion in the change list carries the new location and the name of the spare cell it replaces, and a map_freeze_silicon (ICC2) command ties the ECO cell to that spare.
  • In ICC2, set design.eco_freeze_silicon_mode (ICC2) to true before sourcing the change list and set it back afterwards. In this mode, size_cell (ICC2) checks for a compatible spare within five times the unit site height and does not size the cell if none is found. That check is ICC2 behaviour; size_cell (PT) has no such check.
  • Run check_freeze_silicon (ICC2) before mapping. It reports ECO cells against available spare cells per library cell, and per voltage area and PSC type for programmable spare cells, so mapping failures show up before they happen.
  • place_freeze_silicon (ICC2) places each ECO cell and maps it to the nearest matching spare. Cells deleted by the ECO are not removed; they become spare cells. map_freeze_silicon -eco_cell ECO1 -spare_cell spare_1 (ICC2) maps one cell by hand.
  • The PrimeTime UG flow then runs connect_pg_net -automatic (ICC2), turns off timing-driven global, track and detail routing, runs check_routes (ICC2), and finishes with route_eco -reroute modified_nets_only -open_net_driven true (ICC2). StarRC extraction and a full PrimeTime run close the loop.

What To Check

  • Spare cell names in PT match the spare cells actually in the DEF or ICC2 block.
  • check_freeze_silicon shows every ECO cell with a feasible spare.
  • No ECO cell left unmapped after place_freeze_silicon.
  • Base layers unchanged: only metal and via differences in the layout comparison.
  • Opens and shorts after route_eco, then post-ECO timing in every scenario.

Command Checks & Actions

PrimeTime (pt_shell)set_eco_options -programmable_spare_cell_names {PSC1 PSC2}

Tells PrimeTime which spare cells it may use.

PrimeTime (pt_shell)fix_eco_timing -type hold -physical_mode freeze_silicon

Generates fixes that only use spare cells.

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

Writes the change list with locations and spare mapping.

ICC2 (icc2_shell)set_app_options -name design.eco_freeze_silicon_mode -value true

Puts ICC2 into freeze silicon mode before sourcing the changes.

ICC2 (icc2_shell)check_freeze_silicon

Feasibility of ECO-cell-to-spare-cell mapping.

ICC2 (icc2_shell)place_freeze_silicon

Places and maps all ECO cells onto spare cells.

ICC2 (icc2_shell)check_routes

Checks routing before and after ECO routing.

ICC2 (icc2_shell)route_eco -reroute modified_nets_only -open_net_driven true

Reroutes only the nets the ECO touched.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): All 48 ECO cells mapped, zero opens and shorts after route_eco, and only metal and via layers differ.
  • Suspicious (illustrative): A few ECO cells mapped to spares far from their driver, adding long routes and new timing risk.
  • Hard stop: Any ECO cell unmapped, or a base-layer difference in the layout. The ECO is no longer metal-only.

Common Mistake

The Trap: Sourcing the PrimeTime change list in ICC2 without setting design.eco_freeze_silicon_mode (ICC2) first. The ECO cells are then treated as ordinary new cells, placed and legalized into free sites instead of onto spares. The layout looks clean, but the change now needs new base-layer masks, which is exactly what the flow was meant to avoid.

What The Interviewer Is Testing

  • Can you name the hand-off between PT and ICC2 and which settings each side needs?
  • Knowing what check_freeze_silicon, place_freeze_silicon and map_freeze_silicon each do.
  • Understanding why routing is run with timing-driven options off and only on modified nets.

Follow-up Question & Model Response

"Why run route_eco on modified nets only in a freeze silicon ECO?"

Candidate Model Response: Every rerouted net is a metal change and a new risk to timing, crosstalk and DRC on a design that is otherwise signed off. Restricting rerouting to the nets the ECO touched keeps the metal change as small as possible. It also keeps the post-ECO signoff focused: the untouched nets keep their extracted behaviour, and the new ones are the ones to watch in PrimeTime.

Practical Example

Tapeout Scenario: A hold ECO on a taped-out block needs 48 buffers (illustrative). PrimeTime with -physical_mode freeze_silicon places all 48 on PSCs and writes the change list. In ICC2, check_freeze_silicon (ICC2) reports 48 ECO cells against 310 available spares, all feasible. place_freeze_silicon (ICC2) maps them; two PSCs are only partly used and are backfilled with smaller spares. route_eco (ICC2) reroutes 96 nets, two per inserted buffer, check_routes (ICC2) is clean, and the post-ECO PrimeTime run clears all 48 hold violations with setup still positive.

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