UPF文件在低功耗设计中的核心作用与14种关键命令详解 📅 2026/7/18 4:28:49 1. UPF文件在低功耗设计中的核心作用在当今集成电路设计中低功耗已成为与性能、面积同等重要的关键指标。UPFUnified Power Format作为IEEE 1801标准定义的功耗描述语言通过Tcl兼容的语法为设计工程师提供了一套完整的功耗意图描述方法。与RTL描述功能不同UPF专门用于定义电源网络、电源域、电源开关等与功耗相关的设计意图。一个典型的UPF文件会包含以下核心元素电源域Power Domain划分将设计划分为多个可独立供电的区域电源网络Supply Network定义描述各电源域的供电网络拓扑电源状态表PST定义设计可能处于的各种电源状态特殊单元策略包括隔离单元Isolation、电平转换器Level Shifter和保持寄存器Retention的插入规则提示UPF文件与SDC文件类似都是将设计意图传递给EDA工具的桥梁。但UPF专注于功耗管理而SDC处理时序约束。2. 14种关键UPF命令详解2.1 电源域相关命令2.1.1 create_power_domain这是UPF中最基础的命令用于定义设计中的电源域。其典型语法为create_power_domain PD_TOP \ -include_scope \ -elements {inst_A inst_B}参数说明-include_scope将当前scope包含在电源域中-elements明确列出属于该电源域的实例实际案例在一个包含CPU和DSP模块的SoC中可以这样定义create_power_domain PD_CPU -elements [get_cells cpu_core] create_power_domain PD_DSP -elements [get_cells dsp_module]2.1.2 set_domain_supply_net定义电源域的主电源和地网络set_domain_supply_net PD_CPU \ -primary_power_net VDD_CPU \ -primary_ground_net VSS2.1.3 update_power_domain用于修改已有电源域的定义update_power_domain PD_CPU \ -add_elements [get_cells cache_mem]2.2 电源网络相关命令2.2.1 create_supply_net创建电源网络create_supply_net VDD_CPU -domain PD_CPU create_supply_net VSS -domain PD_CPU -reuse2.2.2 create_supply_port定义电源端口create_supply_port VDD_IN -direction in create_supply_port VSS -direction in2.2.3 connect_supply_net连接电源网络与端口connect_supply_net VDD_CPU -ports VDD_IN2.3 电源开关控制命令2.3.1 create_power_switch定义电源开关单元create_power_switch SW_CPU \ -domain PD_CPU \ -input_supply_port {in VDD} \ -output_supply_port {out VDD_CPU} \ -control_port {ctrl PG_EN} \ -on_state {on_state in {ctrl 1}} \ -off_state {off_state {ctrl 0}}2.3.2 map_power_switch映射电源开关到实际库单元map_power_switch SW_CPU \ -lib_cells {HEADER_CELL_1 HEADER_CELL_2}2.4 隔离策略命令2.4.1 set_isolation定义隔离策略set_isolation iso_CPU_out \ -domain PD_CPU \ -applies_to outputs \ -clamp_value 0 \ -isolation_signal ISO_EN \ -isolation_sense high2.4.2 set_isolation_control指定隔离控制信号set_isolation_control iso_CPU_out \ -domain PD_CPU \ -isolation_signal ISO_EN \ -location self2.5 保持寄存器命令2.5.1 set_retention定义保持寄存器策略set_retention ret_CPU \ -domain PD_CPU \ -elements [get_cells cpu_reg*] \ -retention_power_net VDD_RET \ -save_condition {SAVE_EN 1} \ -restore_condition {RESTORE_EN 1}2.5.2 map_retention_cell映射保持寄存器到库单元map_retention_cell ret_CPU \ -lib_cells {RET_CELL_1 RET_CELL_2}2.6 电平转换命令2.6.1 set_level_shifter定义电平转换策略set_level_shifter ls_CPU_to_DSP \ -domain PD_CPU \ -applies_to outputs \ -rule high_to_low \ -location parent2.7 电源状态相关命令2.7.1 create_pst创建电源状态表create_pst top_pst \ -supplies {VDD_CPU VDD_DSP VSS}2.7.2 add_pst_state添加电源状态add_pst_state ACTIVE \ -pst top_pst \ -state {ON ON ON} add_pst_state STANDBY \ -pst top_pst \ -state {ON OFF ON}3. UPF命令使用的最佳实践3.1 命令执行顺序的重要性UPF命令需要按照特定的顺序执行才能确保设计意图被正确传递。推荐顺序如下创建顶层电源域定义电源网络和端口创建子电源域设置电源网络连接定义电源开关策略设置隔离策略定义保持寄存器策略设置电平转换策略创建电源状态表3.2 常见错误与调试技巧电源域未正确定义症状工具报错找不到电源域解决方法确保先创建顶层电源域再创建子电源域电源网络连接错误症状仿真中出现X态或电源相关违例调试命令report_supply_net -verbose隔离策略不完整症状断电域输出信号未按预期钳位检查方法check_isolation -all经验分享在实际项目中建议使用query_upf命令定期检查UPF实现情况。这个命令可以报告UPF定义的完整性和一致性。3.3 与EDA工具的协同工作不同工具对UPF的支持程度可能有所差异工具名称UPF支持特性典型应用场景Design Compiler基本电源域定义、特殊单元插入综合阶段功耗优化IC Compiler完整UPF支持、电源网络综合物理实现阶段电源规划PrimeTime电源感知时序分析签核阶段功耗验证VCS功耗感知仿真功能验证4. 复杂SoC设计中的UPF应用实例4.1 多电压域设计案例考虑一个包含以下模块的SoC设计始终开启域AON电源管理单元高性能域HPCPU集群1.2V低功耗域LP传感器集线器0.9V对应的UPF关键部分# 电源域定义 create_power_domain PD_AON -include_scope create_power_domain PD_HP -elements [get_cells cpu*] create_power_domain PD_LP -elements [get_cells sens*] # 电源网络 create_supply_net VDD_AON -domain PD_AON create_supply_net VDD_HP -domain PD_HP create_supply_net VDD_LP -domain PD_LP create_supply_net VSS -reuse # 电源开关 create_power_switch SW_HP \ -domain PD_HP \ -input_supply_port {in VDD_AON} \ -output_supply_port {out VDD_HP} \ -control_port {ctrl PG_HP} \ -on_state {on_state in {ctrl 1}} # 电平转换 set_level_shifter ls_HP_to_LP \ -domain PD_HP \ -applies_to outputs \ -rule high_to_low \ -threshold 0.34.2 动态电压频率缩放(DVFS)实现对于支持DVFS的设计UPF需要定义多个电源状态# 定义电源端口状态 add_port_state VDD_HP -state {PERF 1.2} -state {NORMAL 1.0} -state {SAVE 0.8} # 创建PST create_pst soc_pst -supplies {VDD_AON VDD_HP VDD_LP VSS} # 定义工作状态 add_pst_state PERFORMANCE -pst soc_pst -state {ON PERF ON ON} add_pst_state BALANCED -pst soc_pst -state {ON NORMAL ON ON} add_pst_state POWER_SAVE -pst soc_pst -state {ON SAVE ON ON} add_pst_state STANDBY -pst soc_pst -state {ON OFF ON ON}4.3 电源门控与状态保持对于需要保持状态的电源门控设计# 保持寄存器定义 set_retention ret_cpu \ -domain PD_HP \ -elements [get_cells cpu/reg*] \ -retention_power_net VDD_RET \ -save_condition {SAVE_EN 1} \ -restore_condition {RESTORE_EN 1} # 隔离策略 set_isolation iso_hp_out \ -domain PD_HP \ -applies_to outputs \ -clamp_value 0 \ -isolation_signal ISO_EN \ -isolation_sense high5. UPF验证与调试方法5.1 静态验证方法使用MVRCMulti-Voltage Rule Checker进行静态检查check_mv_design -power_up典型检查项目包括电源域交叉信号的隔离电压域交叉的电平转换保持寄存器的正确连接电源开关的完整性5.2 动态仿真方法使用VCS进行功耗感知仿真vcs -power_aware -upf design.upf rtl/*.v仿真中需要特别关注电源开关序列是否正确隔离信号是否在适当时候激活状态保存与恢复是否正常工作5.3 形式验证方法使用Formality进行功耗感知的形式验证set_power_aware_verification on read_upf design.upf验证重点电源关断后的逻辑等效性隔离策略的正确实现保持寄存器的功能等效5.4 常见问题排查表问题现象可能原因排查方法电源关断失败电源开关控制信号错误检查create_power_switch定义隔离信号无效隔离策略定义不完整使用report_isolation验证电平转换缺失电压差未正确定义检查set_level_shifter阈值状态恢复错误保持寄存器映射错误使用check_retention验证