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 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 andadd_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 -derivedWhat 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
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
add_power_state SS_COP -state {COP_OFF -supply_expr {power == {OFF}}}Declare that the PD_COP supply can be off
report_supply_setsConfirm SS_COP resolves to VDD1p0_SW and GND
report_pst -derivedShow 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
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.
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