IntermediateQuestion 14 of 60

How does a "virtual rail" get created in practice -walk through the switched supply net in the Mychip example.

From PDVerse Low-Power Physical Design Mentor Guide, part of the pdVerse Mentor Guide

Short Answer

No single UPF command creates a virtual rail. You declare a separate supply net, make it the output of a power switch fed by the always-on rail, and bind it as the primary of the shutdown domain. In MYCHIP that net is VDD1p0_SW: the switch PD_COP_SW drives it from VDD1p0, and PD_COP runs on it through the supply set SS_COP.

Technical Reference DiagramHow does a "virtual rail" get created in practice -walk through the switched supply net in the Mychip example.

Technical Explanation

  • Step 1: create_supply_net VDD1p0_SW (UPF) declares a net that is separate from VDD1p0.
  • Step 2: create_power_switch (UPF) with -output_supply_port {VDD VDD1p0_SW} makes that net switched.
  • Step 3: a supply set SS_COP bundles VDD1p0_SW with GND and becomes the PD_COP primary.
  • Step 4: add_power_state (UPF) on SS_COP defines COP_ON at 1.0 V and COP_OFF, so tools know the rail can be off.
  • Legacy form (still accepted by ICC2/PT): set_domain_supply_net (UPF) for the primary and add_port_state (UPF) on the switch output.
  • VDD1p0 stays on for isolation, retention and always-on buffers inside PD_COP.
# [UPF]  mychip.upf
create_supply_net VDD1p0
create_supply_net VDD1p0_SW
create_supply_net GND
create_power_switch PD_COP_SW -domain PD_COP -input_supply_port {VDDG VDD1p0} -output_supply_port {VDD VDD1p0_SW} -control_port {EN U_PC/PSE} -on_state {SW_on VDDG {EN}} -off_state {SW_off {!EN}}
create_supply_set SS_COP -function {power VDD1p0_SW} -function {ground GND}
create_power_domain PD_COP -elements {U_COP} -supply {primary SS_COP}
add_power_state SS_COP -state {COP_ON -supply_expr {power == {FULL_ON 1.0} && ground == {FULL_ON 0.0}}}
add_power_state SS_COP -state {COP_OFF -supply_expr {power == {OFF}}}
# [ICC2]  icc2_shell
report_supply_sets
report_pst -derived

What To Check

  • VDD1p0_SW is a distinct net, not an alias of VDD1p0.
  • The switch output and the PD_COP primary name the same net.
  • SS_COP has both an on and an off state.
  • Always-on supplies for isolation and retention are still available in PD_COP.

Command Checks & Actions

UPF (design.upf)create_power_switch PD_COP_SW -domain PD_COP -input_supply_port {VDDG VDD1p0} -output_supply_port {VDD VDD1p0_SW}

Make VDD1p0_SW the switched output of VDD1p0

UPF (design.upf)add_power_state SS_COP -state {COP_OFF -supply_expr {power == {OFF}}}

Declare that the PD_COP supply can be off

ICC2 (icc2_shell)report_supply_sets

Confirm SS_COP resolves to VDD1p0_SW and GND

ICC2 (icc2_shell)report_pst -derived

Show the power states the tool derived for each supply set

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): report_supply_sets shows SS_COP on VDD1p0_SW, and report_pst -derived shows COP_ON and COP_OFF.
  • Suspicious (illustrative): VDD1p0_SW has only an on state, so the tools treat PD_COP as always on.
  • Hard stop: PD_COP primary resolves to VDD1p0: there is no virtual rail at all.

Common Mistake

The Trap: Binding PD_COP straight to VDD1p0 and adding the switch later as if it were a separate detail.

  • The domain never loses power in the intent, so no isolation or retention check ever sees PD_COP off.

What The Interviewer Is Testing

  • Can you build a switched rail from primitives rather than name one command?
  • Do you know the off state must be declared for the tools to see it?

Follow-up Question & Model Response

"Why does the virtual rail need its own power states when the switch already has on and off expressions?"

Candidate Model Response: The switch expressions say how the rail follows the control signal. The power states say which rail values are legal and at what voltage, which is what isolation, level-shifter and PST checks read. Without COP_OFF, the tools see only a 1.0 V rail. With it, they check every crossing out of PD_COP for the off case.

Practical Example

Design Scenario: (illustrative) In MYCHIP, VDD1p0 at 1.0 V enters at the top and feeds VDDG on PD_COP_SW. The switch output VDD on VDD1p0_SW becomes the primary of PD_COP through SS_COP. When U_PC drops PSE, VDD1p0_SW decays toward 0 V, while VDD1p0 keeps the PD_COP isolation cells, retention latches and always-on buffers alive. report_pst -derived should list SS_COP with both COP_ON and COP_OFF.

Low-Power & UPF Handbook

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

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.

See what's inside the bundle
Low-Power VLSI & UPF Handbook โ€” nine chaptersLow-Power & UPFDomains, isolation, retention, and multivoltage UPF.