What does a TOP-level power-intent structure look like, using the Mychip example as a reference?
From PDVerse Low-Power Physical Design Mentor Guide, part of the pdVerse Mentor Guide
Short Answer
A top-level UPF runs in a fixed order: domains, then supply ports and nets, then each domain primary supply, then switches and strategies, and last the power states. In MYCHIP that means four create_power_domain (UPF) calls, VDD1p0, VDD0p9, VDDdsp and VSS shared into subdomains with -reuse, a switch that makes VDD1p0_SW for PD_COP, and a table of legal rail combinations. Each section may only refer to objects an earlier section created.
Technical Explanation
- Domains first: PD_MYCHIP at the top, then PD_CPU, PD_DSP and PD_COP by instance. No later command can name a domain that does not exist yet.
- Supply nets: create each rail in PD_MYCHIP, then extend it with
create_supply_net -reuse(UPF) so a subdomain shares that net instead of creating it again. - Primary supplies:
set_domain_supply_net(UPF) gives each domain one primary power and one primary ground; PD_COP gets VDD1p0_SW. - Switch:
create_power_switch(UPF) turns VDD1p0 into VDD1p0_SW under control of PSE from U_PC. - Strategies: isolation and retention for PD_COP run from VDD1p0; level shifters cover the VDD0p9 and VDDdsp crossings.
- States last:
create_pst(UPF) andadd_pst_state(UPF) list the legal rail combinations, and any combination left out is illegal. - This page keeps the legacy form many flows still run. The 1801-2015 form uses
create_power_domain -supply {primary SS_COP}(UPF) andadd_power_state(UPF).
# [UPF] mychip.upf
create_power_domain PD_MYCHIP -include_scope
create_power_domain PD_COP -elements {U_COP}
create_supply_net VDD1p0 -domain PD_MYCHIP
create_supply_net VDD1p0 -domain PD_COP -reuse
create_supply_net VSS -domain PD_MYCHIP
create_supply_net VSS -domain PD_COP -reuse
create_supply_net VDD1p0_SW -domain PD_COP
set_domain_supply_net PD_MYCHIP -primary_power_net VDD1p0 -primary_ground_net VSS
set_domain_supply_net PD_COP -primary_power_net VDD1p0_SW -primary_ground_net VSS
create_power_switch COP_SW -domain PD_COP -input_supply_port {in VDD1p0} -output_supply_port {out VDD1p0_SW} -control_port {ctrl PSE} -on_state {ON in {ctrl}}
create_pst MYCHIP_PST -supplies {VDD1p0 VDD0p9 VDDdsp VDD1p0_SW}What To Check
- Every domain has exactly one primary power and one primary ground before
commit_upf(ICC2). - Shared rails are one net extended with
-reuse, not created a second time. - PD_COP primary is VDD1p0_SW, and the COP_SW input is VDD1p0.
- The table lists every rail and every mode the chip really enters.
Command Checks & Actions
set_domain_supply_net PD_COP -primary_power_net VDD1p0_SW -primary_ground_net VSSSets the switched rail and ground as PD_COP primary supplies
create_pst MYCHIP_PST -supplies {VDD1p0 VDD0p9 VDDdsp VDD1p0_SW}Declares the table columns, one per rail
load_upf mychip.upfReads the file; a section out of order stops the load at the first unknown object
report_power_domainsConfirms each domain primary supply
report_pst -derivedLists the merged state table the tool derived
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative):
report_power_domains(ICC2) shows PD_COP on VDD1p0_SW and the other three on always-on rails, andreport_pst(ICC2) lists every planned mode. - Suspicious (illustrative):
report_pst(ICC2) shows a mode nobody planned, or a subdomain net that is not the top VDD1p0. - Hard stop: A domain has no primary ground, or PD_COP never gets the top VDD1p0 because
-reusewas dropped.
Common Mistake
The Trap: Dropping the dash so the line reads primary_ground_net VSS instead of -primary_ground_net VSS.
- The command errors out, PD_COP gets no primary ground, and every later check that needs that domain supply fails with it.
What The Interviewer Is Testing
- Whether you know the dependency order inside a UPF file.
- Whether you can read and fix legacy UPF and name its 1801-2015 replacement.
Follow-up Question & Model Response
"Why extend a net with -reuse instead of creating it again in the subdomain?"
Candidate Model Response: With -reuse, create_supply_net does not create a net; it makes the existing VDD1p0, created for PD_MYCHIP, available in the extent of PD_COP. Without it the command tries to create VDD1p0 a second time instead of sharing the top rail. The standard requires -domain on both the creating and the reusing command. The -resolve value of the reusing command must not conflict with the creating one.
Practical Example
Design Scenario: (illustrative) Someone moves the set_domain_supply_net (UPF) line for PD_COP above create_supply_net VDD1p0_SW -domain PD_COP (UPF). VDD1p0_SW is unknown when that line runs, so the load stops there. Put back in order, the file loads, report_pst (ICC2) shows four modes PM1 to PM4, and check_mv_design (ICC2) moves on to the crossings.
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