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 · pdVerse Mentor Guide
Explanation
A virtual (switched) rail isn't produced by one dedicated command -it emerges from the combination of declaring a separate supply net inside the shutdown domain and making a power switch's output_supply_port bind to that net. The switch is what turns an ordinary-looking net into a rail that is only live when the switch is on.
Implementation Walkthrough
Step 1: inside PD_COP, declare the switched net, distinct from the always-on input: create_supply_net VDD1p0_SW -domain PD_COP. Step 2: make that switched net the domain's primary power so all of U_COP's logic references it: set_domain_supply_net PD_COP -primary_power_net VDD1p0_SW -primary_ground_net GND. Step 3: create the switch that actually produces the rail, explicitly naming VDD1p0_SW as its output: create_power_switch PD_COP_SW -domain PD_COP input_supply_port {VDDG VDD1p0} -output_supply_port {VDD VDD1p0_SW} -control_port {SLEEP U_PC/PSE} -ack_port {SLEEPOUT U_PC/PSE_ACK} ack_delay {SLEEPOUT 10} -on_state {SW_on VDDG !SLEEP} -off_state {SW_off SLEEP}. Step 4: give it a real cell with map_power_switch PF_COP_SW -domain PD_COP -lib_cells HEADBUF_T50.
Command
create_supply_net VDD1p0_SW -domain PD_COPSwitch-by-switch
-domain: the switched net belongs to PD_COP's local supply set;
within the subsequent create_power_switch call, -output_supply_port
{VDD VDD1p0_SW} names the switch's internal output port VDD and
binds it to the newly declared virtual rail net VDD1p0_SW.Expected Tool Behavior
VDD1p0_SW behaves electrically as PD_COP's actual power rail -- on when the switch's on_state condition (!SLEEP) holds, off when SLEEP is asserted -- while the always-on VDD1p0 remains available for isolation and retention supplies that must stay powered.
Example
Mychip's PD_COP domain: always-on input VDD1p0 feeds switch PD_COP_SW, which produces the virtual/switched rail VDD1p0_SW, which becomes PD_COP's primary power net for all of U_COP's logic.
Common Mistake
Wiring the domain's primary power net directly to the always-on input VDD1p0 instead of to a separate switched net -- this leaves the domain permanently powered and there is no virtual rail at all.
Likely Error Or Warning
This topic is not covered in enough depth here to give a fully reliable answer for an error specific to this mistake; more generally, a supply net lacking an assigned operating voltage triggers a check_mv_design error (UPF-057).
Debugging Approach
Run report_power_domain on PD_COP to confirm its Default Supplies show VDD1p0_SW as primary power, and use query_power_switch to confirm the switch's declared output_supply_port matches.
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising