UPF(Unified Power Format)와 CPF(Common Power Format)는 multi-voltage 설계의 power intent를 기술하는 파일입니다. Power domain, supply network, level shifter/isolation cell 삽입 규칙 등을 정의합니다.
UPF는 IEEE 1801 표준이며, CPF는 Cadence의 format입니다. (주로 UPF가 쓰입니다.) 정확한 정의는 IEEE1801 가이드를 검색해서 보시면 됩니다.
UPF 파일 예제
# top_design.upf
# UPF version
set_scope top_design
upf_version 2.1
# ============================================
# Supply Network 정의
# ============================================
# Always-on supply
create_supply_net VDD_AON
create_supply_net VSS
# Switchable supply
create_supply_net VDD_SW
# Supply port
create_supply_port VDD_AON -direction in
create_supply_port VSS -direction in
# Supply set
create_supply_set SS_AON \
-function {power VDD_AON} \
-function {ground VSS}
create_supply_set SS_SW \
-function {power VDD_SW} \
-function {ground VSS}
# ============================================
# Power Domain 정의
# ============================================
# Always-on domain
create_power_domain PD_AON \
-supply {primary SS_AON}
# Switchable domain
create_power_domain PD_CORE \
-elements {cpu_core dma_ctrl} \
-supply {primary SS_SW}
# ============================================
# Power Switch 정의
# ============================================
create_power_switch PSW_CORE \
-domain PD_CORE \
-input_supply_port {vin VDD_AON} \
-output_supply_port {vout VDD_SW} \
-control_port {sleep_n sleep_n} \
-on_state {on vin {!sleep_n}}
# ============================================
# Isolation 정의
# ============================================
set_isolation ISO_CORE \
-domain PD_CORE \
-isolation_power_net VDD_AON \
-isolation_ground_net VSS \
-clamp_value 0 \
-applies_to outputs
set_isolation_control ISO_CORE \
-domain PD_CORE \
-isolation_signal iso_en \
-isolation_sense high \
-location parent
# ============================================
# Level Shifter 정의
# ============================================
set_level_shifter LS_AON_TO_CORE \
-domain PD_AON \
-applies_to inputs \
-rule both \
-location self
# ============================================
# Retention 정의
# ============================================
set_retention RET_CORE \
-domain PD_CORE \
-retention_power_net VDD_AON \
-retention_ground_net VSS
set_retention_control RET_CORE \
-domain PD_CORE \
-save_signal {save_n posedge} \
-restore_signal {restore_n posedge}
# ============================================
# Power State Table
# ============================================
create_pst top_pst \
-supplies {SS_AON SS_SW}
add_pst_state ACTIVE \
-pst top_pst \
-state {FULL_ON FULL_ON}
add_pst_state SLEEP \
-pst top_pst \
-state {FULL_ON OFF}
UPF 주요 개념 설명
Supply Network은 전원 공급 경로를 정의합니다. VDD_AON은 항상 켜져 있는 전원, VDD_SW는 power switch를 통해 제어되는 전원입니다.
Power Domain은 동일한 전원으로 동작하는 logic의 그룹입니다. -elements로 해당 domain에 속하는 module을 지정합니다.
Power Switch는 domain의 전원을 on/off하는 switch입니다. control_port로 제어 신호를, on_state로 switch가 켜지는 조건을 정의합니다.
Isolation은 power-off domain의 출력을 고정값으로 clamping합니다. -clamp_value 0은 isolation 시 출력을 0으로 고정합니다. -location parent는 isolation cell을 parent domain(always-on)에 배치합니다.
Retention은 power-off 시 flip-flop 값을 보존합니다. save/restore signal로 제어합니다.
CPF와의 차이는?
CPF는 Cadence가 개발한 format으로, UPF와 유사한 기능을 제공합니다. 문법이 다르지만 개념은 동일합니다. 현재는 UPF(IEEE 1801)가 업계 표준으로 자리잡았으며, 대부분의 tool이 UPF를 지원합니다. Cadence tool도 UPF를 지원하므로, 신규 설계에서는 UPF를 사용하는 것이 일반적입니다.
정리
UPF는 multi-voltage 설계의 power intent를 기술하는 IEEE 표준입니다. Supply network, power domain, switch, isolation, level shifter, retention을 정의하며, synthesis부터 P&R, verification까지 동일한 UPF를 사용합니다.