How do you create supply ports and supply nets for a power domain?
From PDVerse Low-Power Physical Design Mentor Guide, part of the pdVerse Mentor Guide
Short Answer
You create the entry points with create_supply_port (UPF), the wires with create_supply_net (UPF), and join them with connect_supply_net (UPF). A net created for one domain can be extended into another with -reuse, so one physical rail spans the hierarchy. In IEEE 1801-2015 you then bundle nets into supply sets instead of naming them as domain primaries directly.
Technical Explanation
- Supply port:
create_supply_port VDD1p0(UPF) makes an entry point. ICC2 also creates a same-named net unless one exists, so create domain-scoped nets first. - Direction: IEEE 1801-2015 allows in, out and inout, default in. ICC2 adds internal for virtual nets that never exist physically.
- Supply net:
create_supply_net VDD1p0(UPF) creates the net. With-domain PD_MYCHIPit is created in that domain scope. - -reuse creates nothing. It extends an existing net into another domain, and both the creating and reusing commands must carry
-domain. - Connection:
connect_supply_net VDD1p0 -ports {VDD1p0}(UPF) ties net to port. A new net is not a primary until a supply set or legacy binding makes it one. - ICC2 only accepts domain-independent nets in a supply set, so create the nets for SS_AON without
-domain. - Every supply net needs an operating voltage; ICC2 reports UPF-057 when one is missing.
# [UPF] mychip.upf
create_supply_net VDD1p0
create_supply_net GND
create_supply_net VDD0p9 -domain PD_MYCHIP
create_supply_net VDD0p9 -domain PD_CPU -reuse
create_supply_port VDD1p0 -direction in
create_supply_port VDD0p9 -direction in
create_supply_port GND -direction in
connect_supply_net VDD1p0 -ports {VDD1p0}
connect_supply_net VDD0p9 -ports {VDD0p9}
connect_supply_net GND -ports {GND}
create_supply_set SS_AON -function {power VDD1p0} -function {ground GND}
# [ICC2] icc2_shell
report_supply_sets
check_mv_design -pg_netlistWhat To Check
- Every top-level supply port connects to exactly one net.
- Each -reuse names a net that already exists, with -domain on both commands.
- Nets bundled into supply sets are domain-independent.
- Every supply net has an operating voltage.
Command Checks & Actions
create_supply_net VDD0p9 -domain PD_CPU -reuseExtend the existing VDD0p9 net into the PD_CPU extent
connect_supply_net VDD0p9 -ports {VDD0p9}Tie the net to the top-level supply port
report_supply_setsShow which net each power and ground function resolved to
check_mv_design -pg_netlistCheck PG nets, including a supply net with no operating voltage
report_supply_netConfirm the same nets and voltages in PrimeTime
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative):
check_mv_design-pg_netlist shows no errors, and report_supply_sets resolves SS_AON to VDD1p0 and GND. - Suspicious (illustrative): A port shows no connected net, or a net exists in the PD_CPU scope that nothing references.
- Hard stop: UPF-057 on VDD0p9 because it has no voltage, or load_upf fails because the -reuse target does not exist yet.
Common Mistake
The Trap: Creating a fresh VDD0p9 inside PD_CPU without -reuse when you meant the top-level rail.
- You now have two unrelated nets with one name, and U_CPU sits on a net that no port drives until supply checks catch it.
What The Interviewer Is Testing
- Do you know a port, a net and a connection are three separate objects?
- Can you explain what -reuse extends and what it does not create?
Follow-up Question & Model Response
"When would you use -direction internal on a supply port?"
Candidate Model Response: When blocks are known to switch together and you want one name for their shared virtual supply. ICC2 treats a supply net that connects only to internal ports as a net that should not exist in the physical implementation. You can still reference it in connect_supply_net or find_objects. Keep in mind that internal is an ICC2 extension; IEEE 1801-2015 lists only in, out and inout.
Practical Example
Design Scenario: (illustrative) MYCHIP brings VDD1p0 at 1.0 V, VDD0p9 at 0.9 V and GND in at the top. VDD1p0 and GND are domain-independent and form SS_AON. VDD0p9 is created for PD_MYCHIP and extended into PD_CPU with -reuse, so U_CPU and the top-level level shifters share one rail. If report_supply_sets shows SS_AON on VDD1p0 and GND, and check_mv_design is clean, the supply skeleton is ready for strategies.
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