Unified Power Format
The Unified Power Format (UPF) is an IEEE standard that defines the syntax and semantics of a format for expressing power intent in energy-aware electronic system designs, enabling the specification of power supplies, domains, states, and control strategies to optimize energy efficiency in integrated circuits (ICs).[1] Designated as IEEE 1801, UPF uses Tool Command Language (TCL) syntax to describe low-power architectures, complementing hardware description languages like SystemVerilog and VHDL for design, verification, and implementation flows.[2] It addresses critical challenges in modern semiconductor design by standardizing how power management features—such as isolation cells, level shifters, retention strategies, and power gating—are integrated to reduce leakage and dynamic power consumption in system-on-chips (SoCs) and other complex ICs.[3] Developed to unify fragmented power intent specifications in the electronic design automation (EDA) industry, UPF originated from efforts to resolve competing proprietary formats, including Cadence's Common Power Format (CPF) and Synopsys's initial UPF proposals in the mid-2000s.[4] Accellera released UPF 1.0 in 2007 as an open standard to facilitate low-power design and verification, which was then adopted and formalized by IEEE as Standard 1801-2009 (UPF 2.0), introducing refinements for broader tool interoperability.[3] Subsequent revisions have expanded its capabilities: IEEE 1801-2015 (UPF 3.0) enhanced support for power state transitions and verification, while the latest IEEE 1801-2024 (UPF 4.0), published in March 2025, introduces improved value conversion methods for analog/mixed-signal designs, finer-grained retention modeling, and refinable macros for IP reuse and optimization.[5][6] UPF's key features include declarative commands for defining power networks, strategies for handling power-up/down sequences, and mechanisms to ensure portability across EDA tools from vendors like Synopsys, Cadence, and Mentor Graphics.[2] By explicitly capturing power intent separate from the logical design, it supports automated verification of low-power intent, predictive power analysis, and implementation of techniques like multi-voltage domains and fine-grained power shutdown, making it indispensable for energy-efficient applications in mobile devices, automotive systems, and AI hardware.[3] As power constraints continue to drive semiconductor innovation, UPF remains a cornerstone for achieving reliable, scalable low-power IC designs.[1]Overview
Purpose and Scope
The Unified Power Format (UPF), formally known as IEEE Standard 1801, is a specification language that defines the syntax and semantics for expressing power intent in the design and verification of energy-aware electronic systems.[7] It enables the description of power management strategies, allowing designers to integrate low-power considerations directly into hardware description languages like Verilog or SystemVerilog. This standard emerged from the need to standardize power specification amid growing complexity in power optimization for modern integrated circuits.[2] The scope of UPF encompasses the specification of power domains, power states, supply networks, and associated control strategies for power optimization in integrated circuits (ICs), systems-on-chip (SoCs), and larger electronic systems. It focuses on providing a unified mechanism to capture power intent that can be used across design, implementation, and verification flows, ensuring consistency in handling power-related behaviors such as shutoff, isolation, and retention. UPF does not prescribe specific implementation details but rather serves as a portable format for power-aware electronic design automation (EDA) processes.[8] UPF targets a range of professionals involved in low-power design, including digital designers who incorporate power intent into RTL code, intellectual property (IP) providers who ensure reusable power specifications, verification engineers who validate power behaviors, and EDA tool developers who integrate UPF support into synthesis, simulation, and analysis tools.[9] Its adoption facilitates collaboration across these roles by standardizing how power requirements are communicated and enforced throughout the design lifecycle.[10] The origins of UPF trace back to Accellera, which initiated development in 2006 and approved version 1.0 in February 2007 before donating it to the IEEE in May 2007 to formalize it as an international standard.[11] This donation laid the foundation for IEEE 1801-2009, marking the transition from an industry consortium effort to a ratified IEEE standard.Key Benefits and Applications
The Unified Power Format (UPF) provides a standardized method for specifying power intent, enabling consistent power management across diverse electronic design automation (EDA) tools and design phases. This consistency reduces integration challenges in complex systems, where disparate tools might otherwise interpret power requirements differently.[3] By defining power domains, supply networks, and control strategies in a single, tool-agnostic format, UPF minimizes discrepancies that could lead to design iterations.[8] In multi-voltage environments, UPF significantly reduces design errors by explicitly specifying isolation rules, level shifters, and retention strategies, preventing issues such as unintended power leakage or signal integrity problems. It supports comprehensive verification of power intent through static analysis and simulation, allowing engineers to detect power-related bugs early in the design cycle rather than during late-stage testing.[12] Furthermore, UPF facilitates low-power optimization tailored for battery-operated devices by enabling fine-grained control over power states and transitions, which can lower overall energy consumption without compromising functionality.[3] UPF abstracts the power architecture from the register-transfer level (RTL) description, permitting early power planning and exploration independent of hardware modifications. This separation enhances design efficiency, as power intent can be refined iteratively during architectural phases, accelerating time-to-market for power-sensitive projects.[8] Practically, UPF is widely applied in mobile system-on-chips (SoCs) to manage dynamic voltage scaling and power gating, optimizing battery life in smartphones and wearables. In automotive integrated circuits (ICs), it ensures reliable multi-domain power control for safety-critical systems, such as advanced driver-assistance features that require low leakage under varying operational conditions. For Internet of Things (IoT) devices, UPF supports efficient power state management to extend operational longevity on limited energy sources. In high-performance computing environments, including server farms, it addresses power leakage and thermal constraints through hierarchical power domain definitions.[3][12]History
Development and Initial Standardization
The Unified Power Format (UPF) originated in 2006 as an industry response to the escalating challenges in low-power integrated circuit design, driven by rapid increases in transistor density and the resulting power consumption constraints in electronic systems. At the Design Automation Conference (DAC) in June 2006, semiconductor and electronics companies issued a challenge to the electronic design automation (EDA) industry to develop an open, portable standard for specifying power intent, addressing the limitations of proprietary formats that hindered design portability and verification. Accellera, a standards organization, formed a Technical Subcommittee to lead this effort, aiming to unify fragmented power specification methods across tools and flows.[13] Key milestones in UPF's early development included the formal proposal in July 2006, followed by the first working group meeting on September 13, 2006, and the release of the initial draft in January 2007. The Accellera UPF 1.0 specification was approved by the organization's board on February 22, 2007, under the chairmanship of Stephen Bailey of Mentor Graphics, who provided technical leadership for the working group. This version was subsequently donated to the IEEE in May 2007 for broader standardization, leading to the formation of the P1801 working group. The first IEEE iteration, IEEE Std 1801-2009, was approved by the IEEE-SA Standards Board on March 19, 2009, and published on March 27, 2009, establishing UPF as a formal standard for power intent in energy-aware designs.[4][14][13] Initial contributors to UPF's development were primarily major EDA vendors, including Synopsys, Cadence Design Systems, and Mentor Graphics, which collaborated through Accellera to integrate their expertise in power-aware design tools. These companies focused on creating a Tcl-based format that could interoperate with hardware description languages (HDLs) like Verilog and VHDL, enabling consistent specification of power domains and management strategies across the RTL-to-GDSII flow. The effort also involved input from semiconductor firms seeking standardized verification methods to reduce design risks in multi-voltage environments.[14][4] Early challenges centered on the absence of a unified standard for expressing power intent alongside HDL code, which caused significant interoperability issues among EDA tools from different vendors and prolonged design cycles. Proprietary formats varied in syntax and semantics, complicating power analysis, simulation, and synthesis, particularly for features like power gating and multi-supply domains. The UPF initiative addressed these by prioritizing consensus on a single, extensible format, though achieving agreement on command precedence and simulation semantics required multiple draft iterations to resolve ambiguities.[13]Versions and Major Revisions
The IEEE Std 1801-2009, published on March 27, 2009, marked the first full IEEE standardization of the Unified Power Format (UPF), building on the earlier Accellera UPF 1.0 specification from 2007 by introducing formal semantics for power intent description and enhanced support for verification flows.[15][11] This version added 57 new commands, enabling more precise modeling of power domains, supply networks, and isolation strategies, which facilitated better integration into electronic design automation (EDA) tools for low-power integrated circuit design.[11] Subsequent revisions addressed evolving design complexities. The IEEE Std 1801-2013, released on May 29, 2013, enhanced multi-voltage design capabilities with improvements to supply sets and hierarchical power intent specifications, while refining isolation rule management to handle finer-grained voltage domains in advanced nodes.[16][9] The IEEE Std 1801-2015, approved in late 2015 and published on March 25, 2016, further refined power state definitions with 11 new commands, including improved power state tables (PSTs) and the add_power_state construct for incremental refinement, allowing more accurate representation of power modes and transitions in simulation and verification environments.[17][11][9] The IEEE Std 1801-2018 (UPF 3.1), approved in December 2018 and published on March 29, 2019, introduced enhancements for improved IP portability, support for dynamic voltage scaling, and better integration with verification methodologies to address complexities in sub-7 nm processes.[18] These revisions were primarily driven by the demands of shrinking process nodes—from 7 nm toward 2 nm—which necessitated more sophisticated power management to mitigate leakage and dynamic power issues, as well as integration with Universal Verification Methodology (UVM) for robust low-power verification and support for emerging 3D-IC architectures requiring distributed power control.[6][13] The latest iteration, IEEE Std 1801-2024 (UPF 4.0), published on March 4, 2025, introduces advanced energy management features tailored for AI/ML chips, including finer-grained power control through Value Conversion Methods (VCMs) that support diverse net types for precise supply modeling.[1][6] It expands syntax for dynamic power gating via refinable macros with flexible terminal boundaries and non-intrusive updates, enabling efficient IP reuse and system-level optimization.[6] Retention strategies are enhanced with detailed save/restore modeling, accounting for clock dependencies and power-up/down sequences to ensure state integrity in complex designs.[6][19] Additionally, tool automation is bolstered by open-source ASCII files for SystemVerilog and VHDL packages, streamlining EDA tool development and adoption.[6]Core Concepts
Power Domains and Supply Nets
In the Unified Power Format (UPF), power domains serve as the foundational mechanism for partitioning a design into logical groups of elements that share common power supplies, enabling targeted power management without altering the underlying hardware description language (HDL) code.[20] These domains are explicitly defined using thecreate_power_domain command, which specifies the scope of instances included, such as modules or blocks, and optionally associates them with supply sets for power and ground distribution.[21] For instance, the command create_power_domain PD_top -elements {.} creates a top-level domain encompassing the current scope and all descendant instances, ensuring implicit connectivity to the designated supplies.[20]
Supply nets represent the electrical rails—primary for active power and secondary for specialized functions like retention or isolation—within these domains, forming the core of the power distribution network.[22] They are declared using the create_supply_net command, such as create_supply_net VDD_main -domain PD_top, and connected to domains via set_domain_supply_net PD_top -primary_power_net VDD_main -primary_ground_net VSS_ground, establishing explicit rules for voltage levels and grounding to prevent floating logic.[21] Connectivity rules ensure that supply nets propagate hierarchically unless overridden, with primary nets typically driving the bulk of the domain's logic and secondary nets handling auxiliary needs like level shifting at domain boundaries.[20]
UPF supports hierarchical structuring of power domains, allowing nested domains for modular designs where subdomains inherit supplies from parents while permitting overrides for finer control.[22] Always-on domains are power domains whose supplies are configured to remain powered continuously, often for essential control logic, using supply sets and power states that do not transition to OFF. They are created with create_power_domain and associated with always-powered supplies.[21] This nesting facilitates scalable partitioning, as seen in complex systems-on-chip (SoCs) where a top-level domain might enclose CPU-specific subdomains.
A representative example involves defining a power domain for a CPU core: create_power_domain CPU_PD -elements {cpu_core_inst} associates it with primary supplies via set_domain_supply_net CPU_PD -primary_power_net VDD_main -primary_ground_net VSS_ground, ensuring the core's logic receives stable 1.0V power while isolating it from peripheral domains.[20] Such configurations allow electronic design automation (EDA) tools to infer power intent during synthesis and verification, optimizing for leakage reduction in off states without manual netlist modifications.[21]
Power States and Transition Strategies
In Unified Power Format (UPF), power states define the operational modes of power domains, capturing how logic and memory elements behave under varying power conditions to enable energy optimization. These states are specified using theadd_power_state command, which associates named states with simulation behaviors and supply expressions for supply nets within a domain. Common enumerated modes include ON, representing full power availability with normal logic operation; OFF, indicating complete power removal; CORRUPT, where data integrity is lost due to insufficient supply; and RETAIN (or retention-enabled states), preserving memory values during partial power reduction.[21][23] Attributes such as -simstate dictate logic and memory behavior—e.g., NORMAL for active ON states or CORRUPT for OFF transitions—while -supply_expr and -logic_expr link states to voltage levels and control signals, ensuring verifiable power intent across the design.[21][24]
Power state tables (PSTs) extend this by forming a matrix that enumerates valid combinations of states for a power domain or supply set, preventing illegal configurations during verification. Created via the create_pst command, these tables define rows as current states and columns as target states, marking feasible transitions (e.g., from ON to a low-power mode) while flagging invalid ones to enforce design rules. This matrix-based approach supports hierarchical refinement, where abstract states like RUN are broken into concrete sub-states such as P0 (full ON) or P1 (partial retention), facilitating coverage analysis in electronic design automation (EDA) flows.[21][23]
Transition strategies in UPF outline rules for safely switching between power states, incorporating timing constraints and inter-domain dependencies to avoid glitches or data loss. Power state transitions are specified through power state tables (PSTs) and add_power_state commands with attributes for sequencing (e.g., power-up before clock enable), timing (e.g., via interval on clock edges, such as ≥100 ns between supply changes), and dependencies (e.g., logical expressions requiring one domain's ON before another's OFF) to maintain system integrity during multi-domain operations.[24][21]
For instance, in a memory domain, a PST might model transitions from FULL_ON (all banks powered and active) to PARTIAL_RETENTION (select banks retained at reduced voltage), optimizing leakage while preserving critical data. The table below illustrates a simplified PST for such a domain, where valid transitions (marked ✓) include supply gating with retention enabled, and invalid ones (✗) highlight sequencing violations.
| Current \ Target | FULL_ON | PARTIAL_RETENTION | FULL_OFF |
|---|---|---|---|
| FULL_ON | - | ✓ (retain select banks) | ✗ (data loss risk) |
| PARTIAL_RETENTION | ✓ (restore full) | - | ✓ (gate remaining) |
| FULL_OFF | ✓ (power-up sequence) | ✗ (insufficient supply) | - |
Power Management Elements
Power switches in the Unified Power Format (UPF), as defined by IEEE Std 1801, are dedicated cells that control the flow of power to logic blocks within a power domain, primarily to enable power gating and minimize leakage during inactive states. These switches disconnect the primary supply from the domain while often maintaining a virtual or footswitch/headerswitch connection to ground or a secondary supply, based on the design's micro-architecture and di/dt requirements for safe transitions. Thecreate_power_switch command specifies the switch instance, including input and output supply ports, control signal ports, and boolean expressions for on-state (e.g., active when sleep signals are low: !SLEEPIN1 & !SLEEPIN2) and off-state (e.g., inactive when any sleep signal is high: SLEEPIN1 | SLEEPIN2) conditions, allowing integration with power management controllers that may include acknowledge signals or timers for reliability.[25][21]
Isolation strategies in UPF address potential signal integrity issues at domain boundaries, where a powered-down domain could otherwise propagate undefined or floating values to active logic, leading to corruption or excessive current draw. These rules insert isolation cells—such as buffers or gates—that either block signal propagation entirely (blocking type) or hold the output to a safe value like logic 0 or 1 (clamping type) during shutdown, with the choice depending on the interface's functional needs. The set_isolation command applies these strategies to domain inputs, outputs, or both, specifying parameters like clamp value and the isolation supply net to ensure the cell remains powered for operation. For example, clamping to 0 might be used for reset-like interfaces to avoid metastable states in receivers.[26][21]
Retention rules in UPF preserve the logical state of critical sequential elements, such as flip-flops, across power-down and recovery cycles in low-power modes, avoiding costly re-initialization upon wakeup. This is achieved by isolating retention flops or registers and connecting them to a dedicated low-leakage retention supply and ground, distinct from the primary domain power. The set_retention command identifies the target elements (e.g., specific flops or hierarchical blocks), excludes non-retentive ones if needed, and maps the retention nets, supporting purposes like mandatory state hold for performance-critical data. IEEE 1801-2024 (UPF 4.0) extends retention specifications with advanced modeling for state retention cells, enabling finer-grained control and verification of retention strategies in complex designs.[5] Such mechanisms are essential for designs balancing power savings with fast resume times, as retention power can be orders of magnitude lower than active operation.[21][26]
Level shifting in UPF handles voltage domain crossings to ensure signal compatibility and prevent overvoltage stress or weak drive, which could degrade reliability in multi-supply environments. Shifters are inserted for up-shifting (low-to-high voltage) or down-shifting (high-to-low), triggered by a configurable threshold (e.g., 0.1V difference) to detect mismatches. The set_level_shifter command defines the strategy, applying to inputs/outputs or both, with location options like self, parent, or fanout for placement control, and rules ensuring bidirectional handling where signals flow in both directions. This supports safe interfacing between cores at 0.8V and I/O at 1.8V, for instance.[21]
UPF's support for multi-voltage designs enables granular power optimization by allowing domains to operate at varied supply levels, accommodating mixed-signal components like analog blocks that require stable or higher voltages alongside digital logic at reduced rails for efficiency. Rules facilitate power collapse in subsets of a domain while maintaining others, using supply set definitions to map multiple voltages and switches for selective gating at interfaces. This is particularly useful in SoCs with heterogeneous IPs, where analog-digital boundaries demand precise voltage isolation to avoid noise coupling during collapse.[1][21]
Syntax and Semantics
Language Structure and Extensions
The Unified Power Format (UPF), defined by IEEE Std 1801, employs a Tcl-based syntax as its foundational language, extended with specialized constructs to describe power intent for electronic systems. This extension of the Tool Command Language (Tcl) allows designers to use familiar scripting paradigms while incorporating power-specific commands that annotate low-power strategies onto register-transfer level (RTL) designs.[27] As a file-based format, UPF operates independently of the underlying hardware description languages like SystemVerilog or VHDL, enabling separate specification and verification of power aspects.[27] UPF organizes its commands into logical groups to support structured specification, including categories for navigation (e.g., set_scope), supply network definition (e.g., create_supply_net), power domain management (e.g., create_power_domain), and state handling (e.g., create_pst). These groupings promote modularity and ease of maintenance in complex designs. For hierarchical architectures, UPF implements scoping rules that allow commands to apply at specific instance levels, using mechanisms like set_scope to traverse the design tree and set_design_top to establish the root context, ensuring precise targeting without global interference. Additionally, UPF integrates with external libraries, such as those based on Liberty format for modeling hard intellectual property (IP) blocks, to reference pre-characterized power behaviors. In IEEE 1801-2024 (UPF 4.0), enhancements include support for UPF libraries with standardized, reusable power intent elements and virtual supply nets for modeling non-physical supplies in port constraints or power state definitions.[28][6] The semantics of UPF establish formal rules for interpreting power specifications, enabling electronic design automation (EDA) tools to automatically infer and simulate power-related behaviors, such as supply propagation and state-dependent logic. This interpretation includes validation of power intent consistency across the design, with built-in error detection for issues like undefined supplies or conflicting domain assignments. For instance, illegal power state transitions can be explicitly flagged using semantic checks, preventing downstream verification failures. UPF 4.0 clarifies precedence rules for resolving power intent conflicts and improves successive refinement for design updates.[27][2] UPF files can be structured as a single comprehensive document or split into multiple modular files to accommodate team-based development and hierarchical flows, with the load_upf directive facilitating inclusion of subsidiary files at designated scopes for seamless integration. This organization supports incremental updates and reuse of power intent across design variants, while commands like save_upf allow exporting a scoped subset of the specification to a new file for portability.[27]Key Constructs and Commands
The Unified Power Format (UPF) employs a set of core commands to define supply networks, enabling the specification of power distribution within electronic designs. Thecreate_supply_net command establishes a supply net, which carries power or ground signals, with options for domain association, resolution type (such as unresolved, one_hot, or parallel), scoping, voltage specification, and reuse to avoid redefinition.[27] This command returns the fully qualified name of the net on success or an error otherwise, ensuring precise power intent modeling. Complementing this, the create_supply_set command groups supply nets into logical sets for power or ground functions, including parameters for supply references, update flags, and function assignments like power or ground.[27] It supports hierarchical organization by allowing references to other sets, facilitating modular power architecture descriptions. The set_domain_supply command then binds these supply sets to power domains, specifying primary, retention, or other supply types to associate power delivery with design elements. In UPF 4.0, virtual supply nets extend this to non-physical modeling for advanced verification scenarios.[27][28]
For managing power states and transitions, UPF provides commands that define operational modes and their interdependencies. The create_power_state command declares a named power state for a supply set, incorporating state values for nets (e.g., FULL_ON or POWER_OFF), supply expressions, and logic expressions to capture voltage levels or Boolean conditions.[27] This enables the modeling of states like active, retention, or shutdown, essential for low-power verification. The set_state_dependencies command further links states by specifying target states, conditional Boolean functions, and dependency lists, ensuring that transitions in one state propagate correctly to others, such as requiring a sub-domain to enter an ON state before a parent domain.[27]
Power management elements are specified through dedicated commands that insert and configure strategies for switches, isolation, retention, and level shifting. The create_power_switch command defines a switch with input/output supply ports, control ports, and on/off state behaviors using Boolean functions, allowing simulation of power gating mechanisms.[27] For isolation, the set_isolation command applies rules to domain elements, setting clamp values (e.g., 0 or 1), sense (HIGH or LOW), and supply sets to block leakage during power-off.[27] Retention is handled by set_retention, which designates save/restore signals (with edge triggers like posedge) and retention supply sets for flip-flops to preserve data across power-down events. UPF 4.0 enhances retention modeling with finer-grained constructs for complex clock, setup, and asynchronous signal relationships.[27][6] Level shifting, to manage voltage domain crossings, uses set_level_shifter with parameters for element lists, applies-to directions (inputs, outputs, or both), threshold voltages, rule types (low-to-high, high-to-low, or both), and input/output supply sets.[27]
UPF 4.0 introduces additional key constructs for modern designs. Value Conversion Methods (VCMs), via commands like create_value_conversion_method, replace legacy Value Conversion Tables (VCTs) to support real-number modeling and flexible translation between UPF supply nets and hardware description language (HDL) types, including tunneling for mixed-signal co-verification. Refinable macros, defined with the create_refinable_macro command, allow variable terminal boundaries and tool-enforced safety checks, enabling non-intrusive power intent updates for IP reuse while preserving original specifications.[2][6]
These commands integrate within UPF's Tcl-based language extensions, providing a declarative syntax for power intent.[27] A basic example snippet illustrates defining a power domain with isolation (compatible with UPF 2.0 and later):
UPF includes built-in semantics for command ordering—such as requiring supply nets before domain associations—and conflict resolution, like erroring on overlapping isolation rules or undefined states during parsing and elaboration phases.[27] This ensures robust specification, with tools validating intent against the design hierarchy to detect ambiguities in supply propagation or state transitions.[27]create_power_domain PD1 -elements {top/module1} create_supply_net [VDD](/page/VDD) -domain PD1 -voltage 1.1 create_supply_set PD1_SS -function {power [VDD](/page/VDD)} -function {ground VSS} set_domain_supply PD1 -primary_power_set PD1_SS set_isolation ISO_PD1 -domain PD1 -elements {top/module1/*} -clamp_value 0 -isolation_sense LOWcreate_power_domain PD1 -elements {top/module1} create_supply_net [VDD](/page/VDD) -domain PD1 -voltage 1.1 create_supply_set PD1_SS -function {power [VDD](/page/VDD)} -function {ground VSS} set_domain_supply PD1 -primary_power_set PD1_SS set_isolation ISO_PD1 -domain PD1 -elements {top/module1/*} -clamp_value 0 -isolation_sense LOW
| Command | Primary Purpose | Key Parameters | Example Usage |
|---|---|---|---|
create_supply_net | Define power/ground nets | -domain, -resolve, -voltage | create_supply_net [VDD](/page/VDD) -voltage 1.2 |
create_supply_set | Group nets for functions | -function, -supply, -reference_gnd | create_supply_set SS1 -function {[power](/page/Power) [VDD](/page/VDD)} |
set_domain_supply | Bind sets to domains | -supply_set, -supply_type | set_domain_supply PD -primary_power_set SS1 |
create_power_state | Specify state definitions | -state, -supply_expr | create_power_state ON -state {[VDD](/page/VDD) FULL_ON} |
set_state_dependencies | Link state transitions | -target_state, -condition | set_state_dependencies ON -target_state OFF -condition {clk==1} |
create_power_switch | Model power gating | -input_supply_port, -control_port | create_power_switch SW -output_supply_port {[VDD](/page/VDD)_out [VDD](/page/VDD)} |
set_isolation | Prevent leakage | -elements, -clamp_value, -isolation_sense | set_isolation rule1 -elements {cell1} -clamp_value 0 |
set_retention | Data preservation | -retention_supply_set, -save_signal | set_retention ret1 -save_signal {save posedge} |
set_level_shifter | Voltage domain crossing | -applies_to, -rule, -threshold | set_level_shifter ls1 -applies_to outputs -rule both |
create_value_conversion_method (UPF 4.0) | Analog/mixed-signal value translation | -method_type, -supply_net, -hdl_type | create_value_conversion_method VCM1 -method_type real -supply_net [VDD](/page/VDD) |
create_refinable_macro (UPF 4.0) | IP reuse with refinable boundaries | -macro_name, -terminal, -safety_check | create_refinable_macro RM1 -macro_name IPBlock -terminal {[VDD](/page/VDD) refinable} |
Integration and Usage
Compatibility with Hardware Description Languages
The Unified Power Format (UPF), defined by the IEEE 1801 standard, integrates seamlessly with hardware description languages (HDLs) such as SystemVerilog and VHDL by employing a Tcl-based syntax that references and annotates elements within the HDL design hierarchy. UPF scripts target specific HDL constructs, including modules, ports, signals, and cell instances, to embed power intent without altering the core functional RTL code. This separation enables designers to maintain the integrity of the behavioral description while specifying power domains, supply networks, and management strategies externally. For instance, commands likecreate_supply_net and set_domain_supply directly map to HDL ports and nets, ensuring that power specifications align precisely with the logical structure described in SystemVerilog.[1][21]
The annotation process in UPF applies power rules to the RTL hierarchy through hierarchical scoping and binding mechanisms, promoting modularity in complex designs. Using the set_scope command, UPF navigates the design instance tree to apply annotations at appropriate levels, such as defining power domains with create_power_domain that correspond to SystemVerilog modules or submodules. Bind directives further automate the insertion of power management elements; the bind_checker command, for example, uses SystemVerilog bind statements to attach verification checkers for power integrity without modifying the original HDL, while use_interface_cell maps library cells like isolation or retention strategies to specific domain interfaces. These features support IEEE 1801's power modeling extensions, which allow UPF to describe dynamic supply behaviors and state transitions in tandem with SystemVerilog's modeling capabilities for low-power verification. The IEEE 1801-2024 (UPF 4.0) revision introduces HDL tunneling and Value Conversion Methods (VCM) to enable interconnect between UPF supplies and arbitrary HDL types, including analog/mixed-signal designs, enhancing compatibility for heterogeneous systems.[21][29][1][2][6]
Efforts toward convergence between UPF and the Common Power Format (CPF) have established standardized mappings to enhance interoperability in multi-tool environments. UPF 2.1 introduced library commands such as begin_power_model, define_isolation_cell, and define_retention_cell that directly align with CPF equivalents like set_macro_model and define_state_retention_cell, enabling seamless translation of power intent specifications across formats. These mappings, detailed in IEEE 1801 revisions, facilitate the reuse of power models and reduce design porting overhead by providing consistent semantics for power management cells and strategies. UPF 4.0 further advances this with refinable macros for improved IP reuse.[30][1][5]
Despite these strengths, UPF has inherent limitations as it focuses solely on power intent declaration and does not constitute a standalone simulation language. Verification requires co-simulation with HDL environments, where UPF annotations drive power-aware simulators to model behaviors like supply shutoff or state retention, but the underlying control logic—such as power switches or sequencers—must be explicitly coded in SystemVerilog or VHDL. This intent-only nature ensures abstraction but necessitates robust tool support for elaboration and integration, as UPF alone cannot execute functional or timing simulations.[21][31]
Role in Electronic Design Automation Flows
The Unified Power Format (UPF), defined in IEEE Std 1801, plays a central role in electronic design automation (EDA) workflows by providing a standardized method to specify and manage power intent throughout the design, verification, and implementation of low-power integrated circuits. This enables consistent communication of power architecture across tools and teams, supporting incremental refinement from high-level planning to physical realization. UPF files, typically written in Tcl-based syntax, augment hardware descriptions to define elements like power domains, supply networks, and management strategies, ensuring power-aware decisions are propagated across the flow.[21] In early design phases, UPF facilitates power planning through initial sketches that outline power domains, supply rails, and strategies such as isolation and retention, allowing architects to explore and verify power intent at the register-transfer level (RTL) stage. During RTL integration, IP blocks are accompanied by their UPF descriptions, which design teams extend with top-level configurations to align power architectures hierarchically, promoting reuse and consistency. In synthesis, UPF drives power-aware optimization by applying constraints from power-aware libraries, mapping elements like level shifters and isolation cells while supporting both hierarchical and flat descriptions to match the logic structure. This early integration helps identify power management issues before proceeding to later stages, reducing downstream rework. UPF 4.0 enhances these flows with virtual supply and supply sets, as well as improved successive refinement methodology including implementation options for bottom-up integration in SoCs.[8][21][5][6] For verification, UPF enables power-aware simulation by integrating with testbenches to model supply behaviors, such as through functions likesupply_on(), allowing checks for power state transitions and intent consistency against defined power state tables. It supports coverage analysis of power states and strategies using extensions to methodologies like the Universal Verification Methodology (UVM), ensuring comprehensive validation of corruption semantics and isolation rules during dynamic simulations. Static intent checking, including linting for power domain connectivity and state completeness, is performed iteratively to catch discrepancies early, often before full simulation cycles that could otherwise take days. UPF's compatibility with hardware description languages like SystemVerilog further streamlines this by embedding power intent directly into the verification environment. UPF 4.0 introduces finer-grained retention modeling to improve verification of complex power strategies.[21][8][5]
In implementation, UPF guides place-and-route processes by providing specifications for power grid generation, supply switch insertion, and automated placement of power management cells, ensuring the netlist reflects the intended power architecture. Commands like connect_supply_net and strategies for equivalence in supply reduction are applied to optimize physical design while preserving power savings from earlier phases. This phase benefits from UPF's support for hierarchical composition, where refined intent from synthesis is propagated to handle multi-voltage domains efficiently.[21]
Best practices emphasize iterative refinement of UPF files across workflow stages, starting with modular, high-level descriptions in planning and progressively adding implementation details like library-specific mappings during synthesis and place-and-route. This approach, using options for incremental updates, allows teams to demote or promote hierarchical elements as needed, catching power bugs—such as incorrect isolation or undefined control signals—early to avoid costly fixes in later verification or tapeout. Aligning UPF with logical hierarchies and conducting checks at each milestone ensures portability and reduces manual errors in IP-based designs.[8][21]