cpf (common power format)
**CPF (Common Power Format)** is an **alternative power intent specification format** developed by Si2 and Cadence — serving the same purpose as UPF (IEEE 1801) by defining power domains, switches, isolation, retention, and level shifters, but using a different syntax and organizational philosophy optimized for the Cadence design flow.
**CPF vs. UPF**
- **Purpose**: Both specify the same information — power domains, supply networks, switches, isolation, retention, level shifters, power states.
- **Origin**: UPF originated from Synopsys (now IEEE 1801). CPF originated from Cadence/Si2.
- **Industry Status**: UPF is the IEEE standard and is supported by all major EDA vendors. CPF is primarily used in Cadence-centric flows.
- **Convergence**: Industry has largely converged on UPF as the primary standard. Cadence tools support both UPF and CPF.
**CPF Key Differences from UPF**
- **Top-Down Approach**: CPF was designed to specify power intent from a top-down perspective — defining the power architecture at the system level first.
- **Single File**: CPF traditionally uses a single file for the entire design's power specification, whereas UPF supports per-scope specification.
- **Rule-Based Isolation/Level Shifting**: CPF specifies isolation and level shifting as rules that the tool applies automatically at domain boundaries.
- **Power Mode Definitions**: CPF uses `create_power_mode` to define the valid operating modes and their supply configurations.
**CPF Example**
```
set_design top
create_power_domain -name CORE \
-default -instances {cpu_top}
create_power_domain -name AON \
-instances {pmu wakeup}
create_power_mode -name ACTIVE \
-domain_conditions {CORE@ON AON@ON}
create_power_mode -name SLEEP \
-domain_conditions {CORE@OFF AON@ON}
create_isolation_rule iso_core \
-from CORE -to AON \
-isolation_condition {pmu/iso_en} \
-isolation_output clamp_0
create_state_retention_rule ret_core \
-domain CORE \
-save_edge {pmu/save posedge} \
-restore_edge {pmu/restore posedge}
create_level_shifter_rule ls_core \
-from CORE -to AON
```
**CPF in Modern Design**
- **Legacy Flows**: Many existing Cadence-based design flows still use CPF — especially established design teams with existing CPF infrastructure.
- **New Designs**: Most new designs adopt UPF for broader tool compatibility and IEEE standardization.
- **Tool Support**: Cadence tools (Genus, Innovus, Tempus, Conformal) fully support both CPF and UPF. Import/export between formats is available.
- **Migration**: Cadence provides tools and methodology for converting CPF specifications to UPF.
**When to Use CPF vs. UPF**
- **Use UPF** for: New designs, multi-vendor tool flows, IP delivery, industry collaboration.
- **Use CPF** for: Existing Cadence-based flows with established CPF methodology, when the team has deep CPF expertise.
CPF represents an **important chapter** in low-power design methodology — while UPF has become the industry standard, CPF's contributions to power intent specification influenced the evolution of UPF and advanced the entire field of low-power design.