An always-on buffer ended up powered from the switched rail. How do you find it and fix it?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
Power-aware simulation shows an always-on signal going to X when the domain shuts down, and check_mv_design (ICC2) reports an isolation violation on its buffer tree, because the buffer supply is less always-on than its loads. fix_mv_design -buffer (ICC2) repairs it, either by swapping to a dual-rail buffer whose backup pin sits on the always-on rail, or by moving the single-rail buffer into a nearby always-on voltage area. Then legalize and re-check.
Technical Explanation
- Cause: a single-rail buffer placed in a shutdown VA takes the switched rail as its supply, often from an ECO buffer insertion.
- Symptom: isolation enables, retention controls or wake requests die when the domain turns off, so the domain cannot wake or restore.
- Detection: the buffer supply is less always-on than its load supply, which
check_mv_design(ICC2) reports as an isolation violation. - Swap fix:
fix_mv_design -buffer(ICC2) converts the buffer to dual-rail; it needs usable dual-rail cells and a reachable secondary strap. - Move fix:
-move_within_x/-move_within_y(ICC2) move it into a nearby VA; that VA needs logical or physical feedthrough enabled, or ICC2 issues MV-1096. - After a move: the tool does not check space, congestion or driver location, so run
legalize_placement(ICC2) and re-check.
# [ICC2] icc2_shell
check_mv_design
fix_mv_design -buffer -from U_PC/iso_en_cop -report_only -verbose
fix_mv_design -buffer -from U_PC/iso_en_cop -move_within_x 10 -move_within_y 10 -verbose
legalize_placement
check_mv_design
# [VC LP] vc_static_shell
check_lp -stage pg
report_violations -app LPWhat To Check
- Every buffer on an always-on net is dual-rail or sits in an always-on VA.
- Dual-rail buffers have their backup pin tied to the always-on rail.
- Target VAs for moved buffers allow feedthroughs.
- Power-aware simulation keeps the net valid through shutdown.
Command Checks & Actions
check_mv_designFind isolation violations on buffer trees
fix_mv_design -buffer -from U_PC/iso_en_cop -report_only -verboseShow the buffer tree and planned fixes without changing it
fix_mv_design -buffer -from U_PC/iso_en_cop -move_within_x 10 -move_within_y 10 -verboseSwap or move the buffers and report each change
legalize_placementLegalize moved buffers
check_lp -stage pgCheck actual PG connections on the PG netlist
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): The fix_mv_design Before/After table shows Has Isolation Violation Yes then No, with zero mismatches.
- Suspicious (illustrative): Violations are fixed, but 6 buffers were moved and legalization pushed two of them back toward VA_COP.
- Hard stop: The After column still shows an isolation violation, or check_lp -stage pg reports a floating backup pin such as PG_PIN_UNCONN.
Common Mistake
The Trap: Setting dont_touch on the buffer to stop optimization from moving it again.
- That freezes the violation in place; the buffer keeps its switched supply and the AO net still dies at shutdown.
- Later reviewers see a protected cell and assume it was placed there on purpose, so the bug survives to silicon.
What The Interviewer Is Testing
- Can you explain why a buffer takes the switched rail by default?
- Do you know both ICC2 fixes and their preconditions?
Follow-up Question & Model Response
"Why prefer moving the buffer over swapping to dual-rail?"
Candidate Model Response: A single-rail buffer is smaller and needs no secondary PG connection, so moving it into an always-on area saves area and routing. It only works when a suitable VA is within the move distance and allows feedthroughs. If the library has no usable dual-rail buffers, the move is the only automatic option. When neither works, reroute the net around the shutdown area.
Practical Example
Design Scenario: (illustrative) In MYCHIP, iso_en_cop runs from U_PC through VA_COP. A hold ECO added a single-rail buffer inside VA_COP on VDD1p0_SW. check_mv_design flagged an isolation violation; fix_mv_design -buffer -move_within_x 10 (ICC2) moved the buffer, within 10 um, into the PD_MYCHIP area on VDD1p0. After legalize_placement (ICC2) the Before/After table showed Yes then No, and the power-down simulation held iso_en_cop high through shutdown.
Low-Power & UPF Handbook
Master Low-Power VLSI & Multivoltage Design
Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Continue practising