Modern SoCs rarely operate with a single power supply or a single operating mode. Different blocks may run at different voltages, some blocks may be switched off when they are not required, and important register states may need to be preserved during power-down.
These techniques help reduce power consumption, but they also introduce new verification problems. A design that works correctly when every block is powered on may fail when a domain is switched off, restored, or operated at a different voltage.
This is where low-power verification with UPF becomes important.
The Unified Power Format (UPF), standardized as IEEE 1801, provides a way to describe the power intent of a design separately from its functional RTL. The power intent can then be used across design, verification and implementation flows.
For beginners, the important point is simple:
RTL describes what the design does. UPF describes how the design is powered and what should happen when power conditions change.
This guide explains the fundamentals of UPF-based low-power verification and the concepts a beginner should understand before working on real SoC designs.
Traditional functional verification primarily checks whether the RTL behaves according to its specification.
For example, a verification environment may check whether:
Low-power verification adds another dimension.
The verification environment must also determine whether the design behaves correctly when:
Therefore, a low-power design can be functionally correct and still have a power-intent bug.
For example, imagine that a CPU subsystem is powered down while another always-on subsystem continues operating. If signals from the powered-down block are allowed to reach the active block without proper isolation, the receiving logic may see invalid values.
Low-power verification is intended to detect such problems before implementation or silicon.
UPF stands for Unified Power Format.
It is used to describe the power intent of a design. IEEE 1801 defines the standard for specifying and working with power intent in energy-aware electronic systems.
The functional RTL might describe a block such as:
CPU → Memory Controller → Peripheral
The UPF description can additionally define:
CPU Domain → Switchable
Memory Domain → Always ON
Peripheral → Different Voltage
It can also describe requirements such as:
UPF therefore complements RTL rather than replacing it.
Consider a simple SoC with two power domains:
+——————+
| Always-On |
| Domain |
+——–+———+
|
Isolation
|
+——–v———+
| Switchable |
| Domain |
+——————+
The switchable domain can be powered down to save leakage power.
When it is ON, it behaves normally.
When it is OFF, however, its outputs cannot simply be treated like normal functional signals.
The verification environment needs to check:
These are examples of problems that traditional RTL-only simulation may not adequately represent.
Before learning UPF commands, beginners should understand several basic low-power concepts.
A power domain is a logical group of design elements that share a particular power supply arrangement.
For example:
PD_TOP
├── CPU
├── Cache
└── Control Logic
PD_PERIPH
├── UART
├── SPI
└── GPIO
The domains may have different power characteristics.
One domain may remain powered continuously while another can be switched off.
In UPF, power domains are part of the power-intent description.
A low-power design may have multiple supply rails.
For example:
VDD_AON
VDD_CPU
VDD_PERIPH
VSS
The UPF power intent describes the supply architecture and its relationship with power domains.
This becomes important when different blocks operate at different voltages or when a domain can be disconnected from its supply.
Isolation is one of the most important concepts in low-power verification.
Suppose Domain A can be switched off while Domain B remains active:
Domain A Domain B
Power OFF Power ON
Logic
|
| X / invalid
v
[Isolation]
|
v
Logic
When Domain A is powered down, its outputs may no longer contain valid logic values.
An isolation cell prevents those invalid values from reaching active logic. It can clamp the output to a defined value such as 0 or 1.
Verification therefore needs to check both the isolation strategy and the timing/control of isolation.
For example:
Power Down:
Stop activity
↓
Enable isolation
↓
Switch domain OFF
During wake-up, the sequence needs to be handled correctly as well.
Isolation verification is particularly important because the clamp value and isolation control are part of the interaction between functional behavior and power intent.
Different power domains may operate at different voltage levels.
For example:
CPU Domain : 0.8 V
Always-On Domain : 1.0 V
A signal crossing between these domains may require a level shifter.
Conceptually:
0.8 V Domain
|
| signal
v
[Level Shifter]
|
v
1.0 V Domain
The exact implementation depends on the technology and direction of the voltage crossing.
During low-power verification, engineers need to ensure that the intended crossings are correctly handled.
Powering down a domain normally means that the state stored in ordinary registers can be lost.
But some registers may contain important information that must survive power-down.
A retention strategy is used for such state.
A simplified sequence is:
Before power-down:
SAVE
↓
Register state preserved
↓
Power OFF
↓
Power ON
↓
RESTORE
↓
Original state recovered
Verification must check that the correct state is saved and restored and that the state becomes valid at the expected point in the wake-up sequence.
A complex SoC can operate in several power states.
For example:
Power State | CPU | Peripheral | Description |
ACTIVE | ON | ON | Normal operation |
CPU_SLEEP | OFF | ON | CPU powered down |
LOW_POWER | LOW V | ON | Reduced-voltage operation |
DEEP_SLEEP | OFF | OFF/limited | Maximum power saving |
The allowed combinations can be represented through a Power State Table (PST).
A PST is important because verification needs to know which combinations are legal and what behavior is expected in each state. Accellera’s UPF material describes the power state table as the set of legal combinations of power-domain states.
A simplified low-power verification flow can be understood in the following steps.
The design is first described using Verilog or SystemVerilog.
For example, the design may contain:
The designer identifies:
The power intent is captured using UPF.
A simplified example might look conceptually like:
create_power_domain PD_CPU
create_power_domain PD_AON
# Power intent definitions
# Isolation strategy
# Retention strategy
# Supply definitions
# Power states
The exact UPF syntax and supported commands depend on the UPF version and EDA tool flow, so beginners should learn the concepts before memorizing commands.
The RTL and UPF are loaded into a power-aware simulation environment.
The simulator can then model the effect of the defined power conditions.
Instead of checking only:
Input → RTL → Output
the verification environment can check:
Input
↓
RTL + Power Intent
↓
Power State Transition
↓
Output
The testbench should exercise different operating conditions.
For example:
ACTIVE
↓
SAVE
↓
ISOLATE
↓
POWER DOWN
↓
POWER UP
↓
RESTORE
↓
ACTIVE
The purpose is to determine whether the design behaves correctly throughout the complete transition.
A beginner should focus on these verification goals.
Check that each domain enters and leaves its intended power states.
Check that signals are properly clamped when a source domain is powered down.
Check that required register values survive power-down and are restored correctly.
Check that voltage-domain crossings are correctly handled.
Check legal transitions between operating modes.
Power-up is just as important as power-down.
The design should return to a valid functional state after restoration.
The order of events matters.
For example, switching power off before enabling isolation could expose active logic to invalid signals.
Therefore, verification should test not only whether controls eventually reach the correct values, but also whether they occur in the required sequence.
Consider a CPU block that can be powered down.
During normal operation:
CPU = ON
Isolation = OFF
Retention = ACTIVE
Before shutdown:
CPU activity stops
↓
State is saved
↓
Isolation enabled
↓
CPU power OFF
During shutdown:
CPU = OFF
Isolation = ON
State = Retained
During wake-up:
CPU power ON
↓
Wait for power stabilization
↓
Restore state
↓
Release isolation
↓
CPU resumes operation
A power-aware test should verify each stage rather than simply checking whether the CPU eventually becomes operational.
UPF is easier to learn if the fundamentals are already clear.
A good learning sequence is:
Understand:
Be comfortable reading and writing RTL.
Understand:
Learn:
Then learn:
Finally, practice complete power-state transitions and debug failures.
This progression is much easier than starting by memorizing UPF syntax.
Low-power verification with UPF is about verifying that a design remains functionally correct while its power architecture changes.
The most important concepts for a beginner are:
The key idea to remember is:
RTL tells you how the logic behaves. UPF tells you how the power architecture affects that logic.
Once you understand that distinction, UPF becomes much easier to learn.
For VLSI engineers moving toward SoC integration, RTL integration, or verification, learning UPF alongside functional verification provides a useful foundation for understanding modern multi-power-domain designs.