What breaks when an ECO adds cells across voltage areas, and how is it repaired?
From PDVerse PnR Interview Handbook, part of the 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.
Offline PDF Bundle
Want all 1109 questions offline?
Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

Continue practising