IntermediateQuestion 188 of 192Source: Synopsys ICC2 Implementation User Guide: ECO Flow; Synopsys Formality User Guide

Walk through a functional ECO from RTL fix to implemented layout.

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Fix the RTL, produce a golden ECO netlist, and prove it matches the new RTL in Formality. In ICC2, eco_netlist -by_verilog_file (ICC2) compares that netlist with the layout netlist and writes the edits as Tcl, which you source, place with place_eco_cells -eco_changed_cells (ICC2) and route with route_eco (ICC2). Then prove the layout netlist again in Formality and close timing in PrimeTime.

Technical Reference DiagramWalk through a functional ECO from RTL fix to implemented layout.
Three lanes for synthesis and Formality, ICC2 and PrimeTime, showing the RTL fix, ECO netlist and Formality check, then eco_netlist, place_eco_cells and route_eco, then a second Formality check, extraction and PrimeTime timing.

Technical Explanation

  • Step 1, RTL and ECO netlist: the designer fixes the RTL and a minimal-change netlist is produced. Keep the change small so unrelated logic is not resynthesized.
  • Step 2, first check: Formality compares the new RTL (reference) with the ECO netlist (implementation) using match (FM) and verify (FM). A failure here means the netlist does not implement the fix.
  • Step 3, apply: eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tcl (ICC2) compares the working design with the golden netlist and writes netlist editing commands. By default it ignores physical-only cells, timing ECO changes such as resized cells and added repeaters, and power and ground differences, so earlier timing fixes survive.
  • Step 4, place: source the change file, then place_eco_cells -eco_changed_cells (ICC2) places the cells whose eco_change_status marks them as changed and legalizes them to the closest free site.
  • Step 5, route: add fillers back where needed, then route_eco (ICC2) runs global routing, track assignment and detail routing on open nets. By default it is timing and crosstalk driven, so it extracts and updates timing first.
  • Step 6, second check: write the layout netlist and run Formality again against the fixed RTL or the golden ECO netlist. This catches a wrong edit or a timing ECO that broke logic.
  • Step 7, timing: extract, run PrimeTime, and fix any new violations with a timing ECO. Physical checks for DRC and LVS follow before signoff.

What To Check

  • Formality passes on the ECO netlist before anything touches the layout.
  • The change file size and contents match the intended fix.
  • Every changed cell placed and legal, and no open nets after route_eco (ICC2).
  • Formality passes on the layout netlist.
  • PrimeTime clean in all signoff scenarios.

Command Checks & Actions

Formality (fm_shell)read_verilog -r top.v

Reads the fixed RTL as the reference design.

Formality (fm_shell)set_top r:/WORK/top

Sets and links the reference top; this must come before the implementation is read.

Formality (fm_shell)read_verilog -i eco.v

Reads the ECO or layout netlist as the implementation.

Formality (fm_shell)set_top i:/WORK/top

Sets and links the implementation top.

Formality (fm_shell)match

Matches compare points between reference and implementation.

Formality (fm_shell)verify

Proves equivalence.

ICC2 (icc2_shell)eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tcl

Writes the netlist edits needed to match the golden netlist.

ICC2 (icc2_shell)place_eco_cells -eco_changed_cells

Places and legalizes only the changed cells.

ICC2 (icc2_shell)route_eco

Reconnects the routing for changed nets.

PrimeTime (pt_shell)report_timing -delay_type max -max_paths 20

Checks timing on the implemented ECO after extraction.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Formality passes both times, 40 cells changed, all placed within 2 um, no opens, timing clean.
  • Suspicious (illustrative): The change file edits far more cells than the RTL fix explains.
  • Hard stop: Formality fails on the layout netlist, or the change file removes timing buffers because the timing option was turned on.

Common Mistake

The Trap: Skipping the Formality run on the ECO netlist and going straight to eco_netlist (ICC2). If the synthesized fix is wrong, the layout faithfully implements the wrong logic. It is found only at the final equivalence check, after placement, routing and timing work have all been spent on it.

What The Interviewer Is Testing

  • Can list the stages in order with the tool for each.
  • Knows eco_netlist (ICC2) ignores timing ECO changes by default and why.
  • Checks equivalence twice, before and after implementation.

Follow-up Question & Model Response

"When would you use -extract_timing_eco_changes with eco_netlist?"

Candidate Model Response: Only when the golden netlist already contains the timing changes you want, for example a netlist written out after timing fixes were made elsewhere. Then the option makes eco_netlist (ICC2) apply resized cells and added or removed repeaters as well as the functional edits. If the golden netlist came fresh from synthesis, it has none of the layout's timing buffers, and turning the option on would try to remove them. That undoes closure work, so the default ignores them.

Practical Example

Tapeout Scenario: A state machine needs one extra transition (illustrative). The ECO netlist adds 14 gates and changes 3 nets, and Formality passes with 18,400 compare points. eco_netlist (ICC2) writes 31 edits, place_eco_cells (ICC2) places 14 cells with maximum displacement 1.6 um, and route_eco (ICC2) finishes with no opens. The second Formality run passes. PrimeTime shows one new hold violation of -4 ps, fixed with a load cell in one more ECO round.

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