UPF Introduction: Understanding Unified Power Format for Design Verification
This article covers UPF (Unified Power Format) — the industry-standard language for specifying power intent in modern chip designs. For Design Verification engineers, UPF knowledge directly affects the ability to catch power-related bugs before they become silicon failures.
In This Article:
What is UPF?
UPF (Unified Power Format) is a standardized specification language defined by IEEE 1801 for describing power intent in electronic designs. Power intent refers to the designer's intention for how power should be supplied, controlled, and managed across different parts of a chip.
UPF is not part of the RTL design itself. It exists as a separate specification that augments the functional design with power-related information. This separation follows the principle of orthogonal specification — keeping power intent independent from functional behavior allows the same RTL to be used with different power architectures.
UPF is based on Tcl (Tool Command Language), making it both human-readable and tool-executable. Every UPF command is a valid Tcl command, which means you can use Tcl constructs like variables, loops, and procedures within UPF files.
# UPF is valid Tcl - you can use variables and expressions
set cpu_domain_name "PD_CPU"
create_power_domain $cpu_domain_name -elements {u_cpu}
The Problem UPF Solves
Before UPF: The Fragmented Landscape
Prior to UPF standardization, power intent was communicated through multiple disconnected methods:
- Design Specification Documents: Power modes, voltage levels, and power-down sequences were described in Word or PDF documents. Engineers manually interpreted these documents and implemented power management in tools.
- RTL Comments and Attributes: Designers embedded power-related information as comments or synthesis attributes in RTL code. This was informal, non-executable, and prone to becoming stale.
- Proprietary Tool Formats: Each EDA vendor had their own format:
- CPF (Common Power Format) — Cadence
- Tool-specific TCL scripts — Various vendors
- Manual Tool Configuration: Verification and implementation engineers manually configured power-aware behavior in each tool, leading to inconsistencies.
The Consequences
- Implementation vs. Verification Mismatch: The power behavior verified in simulation didn't match what was implemented in silicon
- Translation Errors: Manual interpretation of documents introduced bugs
- No Golden Reference: When bugs were found, there was no authoritative source to determine correct behavior
- Tool Lock-in: Proprietary formats prevented tool interoperability
- Incomplete Verification: Power-related behaviors weren't systematically verified
The UPF Solution
UPF provides a single, executable specification that serves as the golden reference for power intent across the entire design flow:
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#dbeafe', 'primaryTextColor': '#1e293b', 'primaryBorderColor': '#3b82f6', 'lineColor': '#64748b', 'secondaryColor': '#f1f5f9'}}}%%
flowchart TB
UPF["UPF FILE
Single Source of Truth"]
UPF --> SIM[Simulation
VCS, Xcelium, Questa]
UPF --> SYN[Synthesis
DC, Genus]
UPF --> PNR[Physical Implementation
ICC2, Innovus]
SIM --> R1([Power-aware
simulation])
SYN --> R2([Power-aware
netlist])
PNR --> R3([Power-aware
layout])
style UPF fill:#d1fae5,stroke:#10b981,stroke-width:2px
style SIM fill:#dbeafe,stroke:#3b82f6
style SYN fill:#dbeafe,stroke:#3b82f6
style PNR fill:#dbeafe,stroke:#3b82f6
style R1 fill:#f1f5f9,stroke:#94a3b8
style R2 fill:#f1f5f9,stroke:#94a3b8
style R3 fill:#f1f5f9,stroke:#94a3b8
IEEE 1801: The Official Standard
UPF is formally defined in IEEE Standard 1801, titled "IEEE Standard for Design and Verification of Low-Power, Energy-Aware Electronic Systems."
Version History and Evolution
| Version | IEEE Standard | Year | Significance |
|---|---|---|---|
| UPF 1.0 | IEEE 1801-2009 | 2009 | First IEEE standardization. Established core concepts: power domains, isolation, retention, level shifters. Based on Accellera UPF 1.0 (2007). |
| UPF 2.0 | IEEE 1801-2009 | 2009 | Part of same standard. Added supply networks, power states, formal supply modeling. |
| UPF 2.1 | IEEE 1801-2013 | 2013 | Introduced successive refinement, simstate, supply expressions, enhanced power state modeling. Significant for verification. |
| UPF 3.0 | IEEE 1801-2015 | 2015 | Added Liberty extensions, enhanced retention/isolation modeling, repeater support, macro modeling. |
| UPF 3.1 | IEEE 1801-2018 | 2018 | Improved supply set modeling, abstract power modeling for IP, verification enhancements. |
| UPF 4.0 | IEEE 1801-2024 | 2024 | Latest version with enhanced modeling capabilities. |
Why Version Matters for DV Engineers
Different UPF versions have different verification semantics. Key differences that affect verification:
Before simstate, simulators had inconsistent behavior for how to model powered-off logic. UPF 2.1 made this explicit and standardized.
# UPF 2.1 introduced simstate for explicit simulation semantics
add_power_state PD_CPU \
-state ACTIVE {-supply_expr {power == FULL_ON} -simstate NORMAL} \
-state SLEEP {-supply_expr {power == OFF} -simstate CORRUPT} \
-state OFF {-supply_expr {power == OFF} -simstate OFF}
upf_version 2.1 # Declare which version semantics to use
UPF vs. CPF: Understanding the History
You may encounter references to CPF (Common Power Format), especially in older designs or Cadence-centric flows.
| Aspect | UPF | CPF |
|---|---|---|
| Origin | Accellera (2007), then IEEE | Cadence proprietary, then Si2 |
| Standard | IEEE 1801 | Si2 (industry consortium) |
| Industry Adoption | Dominant standard | Declining, mostly legacy |
| Tool Support | All major EDA vendors | Primarily Cadence tools |
| Current Status | Active development | Maintenance mode |
Core Terminology
Understanding these fundamental terms:
Power Domain
A power domain is a grouping of design elements (instances, ports, nets) that share a common power supply and are controlled as a unit for power management. Elements within a power domain can be powered on or off together.
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#dbeafe', 'primaryTextColor': '#1e293b', 'primaryBorderColor': '#3b82f6', 'lineColor': '#64748b', 'secondaryColor': '#f1f5f9'}}}%%
flowchart TB
subgraph TOP["chip_top"]
subgraph PD_CPU["PD_CPU"]
CPU[u_cpu]
end
subgraph PD_GPU["PD_GPU"]
GPU[u_gpu]
end
subgraph PD_AON["PD_AON (Always-On)"]
AON[u_always_on]
end
end
style PD_CPU fill:#dbeafe,stroke:#3b82f6
style PD_GPU fill:#dbeafe,stroke:#3b82f6
style PD_AON fill:#d1fae5,stroke:#10b981
style TOP fill:#f1f5f9,stroke:#94a3b8
Supply Network
The supply network models the power delivery infrastructure: supply ports (where power enters), supply nets (power distribution), and supply sets (power/ground pairs). This is an abstract representation of the physical power grid.
Power State
A power state defines a specific operating condition characterized by supply voltage levels and functional mode. States can be ON, OFF, or intermediate (for voltage scaling).
Isolation
Isolation prevents unknown (X) values from propagating out of a powered-off domain. Isolation cells clamp outputs to known logic values (0 or 1) when the domain is off.
Retention
Retention preserves register state when a domain is powered off. Retention registers have shadow storage that maintains values during power-off, allowing state restoration on power-up.
Level Shifter
A level shifter converts signals between domains operating at different voltage levels. Required when signals cross voltage domain boundaries.
Why DV Engineers Need UPF Knowledge
1. UPF Directly Controls Simulation Behavior
When you run a power-aware simulation, the simulator reads the UPF file and modifies its behavior accordingly:
- Register corruption: When a domain powers off, the simulator corrupts (sets to X) all non-retained registers in that domain
- Output isolation: The simulator models isolation cells clamping domain outputs
- Signal propagation: X values from powered-off domains propagate through the design unless isolated
2. Power Bugs are Silicon Bugs
Power-related bugs found in silicon are among the most expensive to fix:
- They often manifest as intermittent failures
- They may only appear in specific power mode transitions
- They can be masked during functional verification if power-aware simulation isn't properly configured
Common power bugs:
- Missing isolation causing X propagation to always-on logic
- Incorrect retention save/restore sequencing
- Illegal power state transitions
- Signals crossing powered-off domains
3. Power-Aware Coverage Requirements
Modern verification requirements include:
- Coverage of all power state transitions
- Verification of isolation enable/disable sequencing
- Verification of retention save/restore behavior
- Cross-domain signal integrity during power transitions
4. UPF Debugging is a DV Responsibility
When simulations show unexpected X values or incorrect behavior during power transitions, DV engineers:
- Identify which UPF constructs are in effect
- Determine if the issue is in RTL, UPF, or testbench
- Verify that UPF correctly represents design intent
How UPF Integrates with Verification Flow
The following diagram shows how UPF integrates with the verification environment:
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#dbeafe', 'primaryTextColor': '#1e293b', 'primaryBorderColor': '#3b82f6', 'lineColor': '#64748b', 'secondaryColor': '#f1f5f9'}}}%%
flowchart TB
RTL[RTL Files]
UPF["UPF File"]
TB[Testbench]
subgraph SIM["SIMULATOR"]
DB[Design Database]
PC[Power Controller]
PM[Power Monitor]
subgraph PA["Power-Aware Simulation"]
S1["Supply state tracking"]
S2["Corruption modeling"]
S3["Isolation behavior"]
S4["Retention save/restore"]
end
DB --> PA
PC --> PA
PM --> PA
end
RTL --> DB
UPF --> PC
TB --> PM
PA --> OUT(["Power-Aware Results
Waveforms, Assertions, Coverage"])
style UPF fill:#d1fae5,stroke:#10b981,stroke-width:2px
style RTL fill:#dbeafe,stroke:#3b82f6
style TB fill:#dbeafe,stroke:#3b82f6
style SIM fill:#f1f5f9,stroke:#94a3b8
style PA fill:#fef3c7,stroke:#f59e0b
style OUT fill:#f1f5f9,stroke:#94a3b8
Testbench Responsibilities
Your testbench handles:
1. Power supply control: Drive supply ports to model power-on/off
// Testbench controls supply state
supply_ctrl.vdd_cpu = 1'b0; // Power off CPU domain
2. Power management signals: Drive isolation enables, retention save/restore
// Proper power-down sequence
iso_en_cpu <= 1'b1; // Enable isolation first
#10;
save_cpu <= 1'b1; // Save retention state
#10;
supply_ctrl.vdd_cpu = 0; // Then power off
3. Power protocol verification: Check correct sequencing of control signals
4. X value handling: Expect and handle X values from powered-off domains
UPF File Organization
A well-structured UPF file follows a logical order:
#=============================================================================
# 1. VERSION AND SCOPE DECLARATION
#=============================================================================
upf_version 2.1
set_design_top top_module
#=============================================================================
# 2. SUPPLY NETWORK DEFINITION
#=============================================================================
# Supply ports, nets, and their connections
#=============================================================================
# 3. POWER DOMAIN DEFINITION
#=============================================================================
# Create power domains and assign elements
#=============================================================================
# 4. SUPPLY CONNECTIONS
#=============================================================================
# Connect supplies to domains
#=============================================================================
# 5. POWER STATE DEFINITION
#=============================================================================
# Define states for supplies and domains
#=============================================================================
# 6. POWER MANAGEMENT STRATEGIES
#=============================================================================
# Isolation, retention, level shifting rules
#=============================================================================
# 7. POWER STATE TABLE (Optional)
#=============================================================================
# Legal combinations of domain states
Summary
- UPF is IEEE 1801 — an industry-standard, tool-independent format for specifying power intent
- UPF is separate from RTL — it augments the design with power information without modifying functional code
- UPF is executable — simulators and implementation tools directly consume UPF to drive power-aware behavior
- UPF is the single source of truth — one specification drives verification, synthesis, and implementation
- Version matters — UPF 2.1 introduced simstate for verification semantics; always specify your version
- DV engineers use UPF to understand simulation behavior and catch power bugs before silicon
Up Next: Supply Networks
In the next article, we'll cover Supply Networks — how to model power delivery with create_supply_net, create_supply_port, and supply states.
This article is part of the UPF & Low Power Verification series for Design Verification Engineers.
Comments (0)
Leave a Comment