What changed between legacy UPF and IEEE 1801-2015, and why does add_power_state replace the PST?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
IEEE 1801-2015 Annex D marks the PST commands create_pst (UPF), add_pst_state (UPF) and add_port_state (UPF), plus set_domain_supply_net (UPF) and the net-based isolation and retention supply options, as legacy, and names a replacement for each. The PST gives way to add_power_state (UPF), which defines states on supply sets and domains instead of in one flat table. Tools still accept both forms, and interviews ask about both.
Technical Explanation
- Power states: on a supply set,
add_power_state(UPF) uses-supply_exprwith states and voltages; on a domain it uses-logic_exprover supply set states. - Why replace the PST: a flat table grows with every supply combination, while per-object states compose up the hierarchy and refine later with
-update. - Supplies: Annex D replaces
set_domain_supply_net(UPF) withassociate_supply_set(UPF);create_power_domain -supply {primary SS_COP}(UPF) does the same binding. - Strategy supplies:
-isolation_power_net/-isolation_ground_netbecome-isolation_supply, and-retention_power_net/-retention_ground_netbecome-retention_supply. - UPF 1.0 forms:
set_isolation_control(UPF) andset_retention_control(UPF) are absent from 1801-2015; their signals move ontoset_isolation(UPF) andset_retention(UPF). - Placement rule: supply expressions and simstates belong on supply set states only; on a domain state both are errors.
- Tool support: ICC2 reads both forms; PT ignores the PST commands and takes voltages from
set_voltage(PT).
# [UPF] design.upf
add_power_state SS_COP -state ON {-supply_expr {power == {FULL_ON 1.0} && ground == {FULL_ON 0.0}}}
add_power_state SS_COP -state OFF {-supply_expr {power == {OFF}}}
add_power_state -domain PD_COP -state RUN {-logic_expr {SS_COP == ON}}
add_power_state -domain PD_COP -state SLEEP {-logic_expr {SS_COP == OFF}}
# Legacy PST form (still accepted by ICC2/PT)
add_port_state SW_COP/vout -state {ON 1.0} -state {OFF off}
create_pst PST_MYCHIP -supplies {VDD1p0 VDD1p0_SW}
add_pst_state S_RUN -pst PST_MYCHIP -state {ON ON}
add_pst_state S_SLEEP -pst PST_MYCHIP -state {ON OFF}
# [ICC2] icc2_shell
report_pst -derivedWhat To Check
- Every supply set with more than one state defines all of them, OFF included.
- Domain states refer to supply set states, never to supply nets.
- Each supply set uses one add_power_state syntax style throughout; ICC2 rejects mixed styles on one object.
- The legal combinations in
report_pst -derived(ICC2) match the architecture spec.
Command Checks & Actions
add_power_state SS_COP -state OFF {-supply_expr {power == {OFF}}}Define the OFF state of the PD_COP supply set
add_power_state -domain PD_COP -state SLEEP {-logic_expr {SS_COP == OFF}}Define a domain state from supply set states
add_pst_state S_SLEEP -pst PST_MYCHIP -state {ON OFF}Legacy PST row, still accepted
report_pst -derivedReport the derived power state table the tool built from the power states
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): The PST report lists RUN and SLEEP for PD_COP with VDD1p0 always ON, matching the architecture spec.
- Suspicious (illustrative): A combination appears that nobody intended, or one you expected is missing: look for an undefined state on a supply set.
- Hard stop: The tool rejects a domain state written with a supply expression: nothing downstream has valid power states.
Common Mistake
The Trap: Converting each PST row into add_power_state PD_COP -state ON {-supply_expr {power == {FULL_ON 1.0}}} (UPF).
- IEEE 1801-2015 forbids a supply expression on a domain state, so the conversion fails; put supply expressions on SS_COP and a logic expression on PD_COP.
What The Interviewer Is Testing
- Can you map each legacy construct to its 1801-2015 replacement?
- Do you know where supply and logic expressions are each allowed?
Follow-up Question & Model Response
"If the tools still accept create_pst, why migrate?"
Candidate Model Response: The flat table grows with every supply you add, and it cannot express hierarchy or refinement cleanly. With add_power_state, each IP ships its own supply set and domain states, and the SoC composes them with logic expressions. You can refine states later with -update, which suits successive refinement from RTL to implementation. Staying legacy works today, but every IP that arrives in modern form forces a translation.
Practical Example
Design Scenario: (illustrative) The legacy MYCHIP PST has two rows over VDD1p0 and VDD1p0_SW: S_RUN {ON ON} and S_SLEEP {ON OFF}. In 1801-2015 form, SS_COP gets ON at 1.0 V and OFF, and PD_COP gets RUN and SLEEP from SS_COP states. Adding PD_DSP at 1.1 V or 0.9 V later adds two states on its own supply set instead of doubling every PST row. Both forms give ICC2 the same legal combinations.
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.

Continue practising