ExpertQuestion 27 of 50Source: Synopsys IC Compiler II Multivoltage User Guide: Moving Single-Rail Buffers to Nearby Voltage Areas, Resolving Multivoltage and PVT Violations; Synopsys VC LP User Guide: PG Checks

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 Reference DiagramAn always-on buffer ended up powered from the switched rail. How do you find it and fix it?
Rows of VA_COP powered by VDD1p0_SW with a single-rail buffer on the iso_en_cop net drawn in red on the switched rail, and two fixes: a dual-rail AO buffer with its backup pin on the VDD1p0 strap, or the buffer moved 10 um into the neighbouring always-on area.

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 LP

What 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

ICC2 (icc2_shell)check_mv_design

Find isolation violations on buffer trees

ICC2 (icc2_shell)fix_mv_design -buffer -from U_PC/iso_en_cop -report_only -verbose

Show the buffer tree and planned fixes without changing it

ICC2 (icc2_shell)fix_mv_design -buffer -from U_PC/iso_en_cop -move_within_x 10 -move_within_y 10 -verbose

Swap or move the buffers and report each change

ICC2 (icc2_shell)legalize_placement

Legalize moved buffers

VC LP (vc_static_shell)check_lp -stage pg

Check 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

Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Low-Power VLSI & UPF Handbook — nine chaptersLow-Power & UPFDomains, isolation, retention, and multivoltage UPF. →