What breaks when an ECO adds cells across voltage areas, and how is it repaired?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
An ECO buffer on a net that crosses domains can land in a voltage area whose power domain does not match, get the wrong supply, sit on the wrong side of an isolation cell, or use a single-rail cell where a dual-rail cell is needed. Repair it with fix_mv_design -buffer (ICC2) for buffer trees and fix_mv_design -diode (ICC2) for diodes, and connect the supplies of new ECO cells with eco_update_supply_net (ICC2). Then check again, since the fixes are not guaranteed placement or timing legal.
Technical Explanation
- What breaks: an ECO buffer's power domain may not match the voltage area it sits in, it may be a single-rail cell where the net needs a dual-rail one, it can create an isolation violation in a buffer tree, or its supply pins may never be connected.
eco_update_supply_net(ICC2) connects supply nets for cells added bysize_cell(ICC2) in freeze-silicon mode,add_buffer(ICC2),add_eco_repeater(ICC2),split_fanout(ICC2) andadd_buffer_on_route(ICC2).-cellsrestricts it to the named cells and the ECO buffer trees they belong to.fix_mv_design -buffer(ICC2) fixes isolation violations and illegal library cells in buffer trees. It can swap single-rail and dual-rail cells, change backup supplies, change level-shifter input or output supplies (only with-level_shifter, since buffer trees stop at level shifters by default), and fix a domain and voltage area mismatch with a physical or logical feedthrough.fix_mv_design -diode(ICC2) fixes power domain and voltage area mismatches for diodes by assigning a matching power domain. Only-report_onlyand-verbosego with it.- Limits:
fix_mv_design(ICC2) does not insert isolation or level-shifter cells, and its changes do not create new isolation or voltage violations. It commits the UPF first if needed, keeps original placement unless-move_within_xor-move_within_yis given, and uses only supplies available in the voltage area. When it swaps a library cell it removes that cell's PG connections, so reconnect them withconnect_pg_net(ICC2). - Its changes are not guaranteed placement or timing legal, so check legality and timing after it.
-report_onlyshows proposed changes without making them. - Prevent it at the source: give PrimeTime the voltage areas through physical data so fixes land in the right area, and keep buffer lists to cells legal in each domain.
What To Check
check_mv_design(ICC2) after the ECO is applied.- Supply pin connections on every new ECO cell.
- Domain against voltage area for every ECO buffer and diode.
- Legality and timing after
fix_mv_design(ICC2).
Command Checks & Actions
check_mv_designReports multivoltage violations after the ECO.
fix_mv_design -buffer -report_onlyLists buffer tree fixes without changing the netlist.
fix_mv_design -bufferFixes isolation violations and illegal cells in buffer trees.
fix_mv_design -diodeFixes domain and voltage area mismatches on diodes.
eco_update_supply_net -cells [get_cells eco_cell*]Connects supply nets for the listed ECO cells.
check_legalityConfirms placement is still legal after the fixes.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative):
check_mv_design(ICC2) clean after the ECO, with every new cell's supply pins connected. - Suspicious (illustrative): A few ECO buffers flagged for domain mismatch, all fixable by a cell swap.
- Hard stop: Isolation violations the command cannot fix, because it does not insert isolation cells; the netlist or UPF must change.
Common Mistake
The Trap: Applying a PrimeTime change list, routing it, and moving on without eco_update_supply_net (ICC2) or check_mv_design (ICC2). New buffers inside a switched domain have unconnected supplies, and LVS catches it days later. Every ECO cell must then be revisited, and routing redone around the supply fixes.
What The Interviewer Is Testing
- Can name the multivoltage failures an ECO buffer causes.
- Knows what the -buffer and -diode modes of
fix_mv_design(ICC2) fix and what the command will not do. - Checks placement and timing after the repair.
Follow-up Question & Model Response
"Why can fix_mv_design fix a mismatch with a feedthrough instead of moving the cell?"
Candidate Model Response: By default the command keeps the original placement of buffers and inverters. A physical or logical feedthrough lets the buffer belong to a power domain that matches the voltage area it sits in, which fixes the mismatch without disturbing placement. Moving is possible only if you ask for it with -move_within_x or -move_within_y, which shift a buffer into a nearby voltage area so it can stay single-rail, and the target voltage area must allow feedthroughs. If the result is still wrong for timing, re-plan the ECO and run the check again.
Practical Example
Tapeout Scenario: A PrimeTime hold ECO adds 22 buffers, 5 of them on nets crossing from an always-on domain into a switchable voltage area (illustrative). check_mv_design (ICC2) flags the 5 as domain and voltage area mismatches, and 2 as single-rail cells needing dual-rail. fix_mv_design -buffer (ICC2) swaps 2 cells to dual-rail and fixes the other 3 with feedthroughs, and eco_update_supply_net (ICC2) connects all 22. check_legality (ICC2) is clean, and hold slack on the 5 paths changes by under 2 ps.
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