ExpertQuestion 128 of 141Source: Synopsys ICC2 Implementation User Guide: ECO Flow (Mapping ECO Cells to Logically Equivalent Spare Cells)

A freeze-silicon ECO needs a cell type with no matching spare. What now?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

By default ICC2 maps an ECO cell only to a spare with the same library cell name, so a type with no matching spare stays unmapped. Find those cells with check_freeze_silicon (ICC2), then let create_freeze_silicon_leq_change_list (ICC2) write a script that replaces each one with a logically equivalent spare or a combination of up to two spares. Review the script, source it, and map again.

Technical Reference DiagramA freeze-silicon ECO needs a cell type with no matching spare. What now?
A schematic of one ECO cell with no matching spare replaced by two logically equivalent spare cells wired together to give the same function.

Technical Explanation

  • The mapping rule is strict. When the tool maps an ECO cell, it looks for a spare cell with the same library cell name; if there is none, the ECO cell remains unmapped. A NAND2 of the right function but a different drive strength name does not count.
  • check_freeze_silicon (ICC2) is the feasibility report. It lists ECO cells and spare cells per library cell, so you see the unmapped types before place_freeze_silicon (ICC2) fails on them.
  • create_freeze_silicon_leq_change_list -cells $unmapped -output leq.tcl (ICC2) writes a Tcl script of netlist edits. Each ECO cell is replaced by one spare with the same logical function and a different library cell name, or by a combination of up to two spare cells that together give the same function.
  • The output is a proposal, not a done deal. The ICC2 UG says to view the file, edit it if needed, and then source it. Check that the replacement is timing-safe, because a two-cell version of a gate is slower than the original.
  • Programmable spare cells avoid much of this problem. A PSC can be wired to perform different functions, and part of a PSC left unused is backfilled with smaller spares for later ECOs.
  • Prevent it upstream. PrimeTime fixing in freeze silicon mode only uses spare cells for new cells, so keep the -buffer_list for fixing to the buffer types that exist as spares.
  • For sizing, size_cell (ICC2) in freeze silicon mode looks for a compatible spare within five times the unit site height and skips the change if none is found. -max_distance_to_spare_cell widens that search, at the cost of longer routes.

What To Check

  • Unmapped ECO cells and their library cell types in check_freeze_silicon.
  • Each LEQ replacement in the generated script, including two-cell combinations.
  • Timing of paths through replaced cells after sourcing the script.
  • Remaining spare count per type after mapping, for the next ECO.

Command Checks & Actions

ICC2 (icc2_shell)check_freeze_silicon

Identifies ECO cells with no matching spare.

ICC2 (icc2_shell)create_freeze_silicon_leq_change_list -cells $unmapped -output leq.tcl

Writes a script replacing each unmapped cell with LEQ spares.

ICC2 (icc2_shell)source leq.tcl

Applies the reviewed replacements.

ICC2 (icc2_shell)place_freeze_silicon

Maps the replaced cells onto spare cells.

PrimeTime (pt_shell)report_timing -pba_mode exhaustive

Re-checks the paths through replaced cells after extraction.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Three unmapped cells, each replaced by one same-function spare, and timing on those paths still positive after extraction.
  • Suspicious (illustrative): An XOR built from two spares on a path with only 12 ps of setup slack left.
  • Hard stop: An ECO cell with no single or two-cell equivalent among the spares. The ECO needs a different fix or a base-layer change.

Common Mistake

The Trap: Hand-editing the netlist to swap the missing cell for "something close", such as a different-function cell plus an inverter picked by eye, without running equivalence checking. The mapping passes, but the logic is wrong on one input combination, and the metal fix ships a functional bug that Formality would have caught in minutes.

What The Interviewer Is Testing

  • Knowing the default same-name mapping rule.
  • Can you use the LEQ flow and describe its one-cell and two-cell outputs?
  • Checking timing and equivalence after a replacement, not only mapping.

Follow-up Question & Model Response

"What checks do you run after sourcing the LEQ change list?"

Candidate Model Response: I rerun check_freeze_silicon (ICC2) to confirm every ECO cell now has a feasible spare, then map with place_freeze_silicon (ICC2). After routing and extraction I run PrimeTime on the affected paths in all scenarios, since a two-cell replacement adds a stage. I also run Formality between the pre-ECO reference with the intended change and the post-ECO netlist, because the replacement is a netlist edit and has to be proven equivalent.

Practical Example

Tapeout Scenario: A functional ECO needs 11 new cells (illustrative). check_freeze_silicon (ICC2) shows 8 mappable and 3 unmapped: two AO21 and one XNOR2, with no spare of those names. create_freeze_silicon_leq_change_list (ICC2) maps each AO21 to one spare of the same function under a different name, and the XNOR2 to an XOR2 spare plus an inverter spare. After sourcing and mapping, extraction shows the XNOR2 path at +18 ps setup in the worst scenario, and Formality reports the design equivalent.

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