4、UPF核心概念:电源域、电源状态、电源开关、隔离单元、电平转换器、保留单元等术语精讲

UPF(Unified Power Format)作为低功耗设计与验证的行业标准(IEEE 1801),其核心价值在于将设计意图中的功耗管理策略以标准化、可传递的形式表达出来。要真正掌握UPF,不能停留在命令语法层面,而必须深入理解其背后的物理与逻辑语义。本章将围绕六个核心术语——电源域、电源状态、电源开关、隔离单元、电平转换器、保留单元——展开精讲,剖析它们的定义、相互关系、设计约束及验证要点,帮助读者建立完整的低功耗设计知识框架。

UPF核心概念关系与低功耗设计链路 电源域 PD_TOP 主供电域 VDD_TOP (1.0V) 常开逻辑 / 时钟 / 复位 隔离接收端 / 电平转换接收端 保留寄存器(常开) 电源域 PD_DSP 可关断域 VDD_DSP (0.8V) DSP核心逻辑 / 加速器 电源开关控制端 ISO_EN 隔离单元(输出端) 电源域 PD_GPU 可关断域 VDD_GPU (0.75V) GPU核心 / 渲染管线 电源开关控制端 ISO_EN 隔离单元(输出端) 电源开关 PG_DSP / PG_GPU 隔离单元 ISO_CELL 电平转换器 LS_CELL 保留单元 RET_FLOP VDD_DSP 供电 VDD_GPU 供电 ISO_EN LS_EN RET_EN 关键设计链路: 1. 电源域划分 → 定义哪些模块可关断、哪些必须常开 2. 电源开关 → 控制可关断域的供电通断,产生电源良好信号(PG) 3. 隔离单元 → 防止关断域输出浮空导致漏电或逻辑混乱 4. 电平转换器 → 跨域信号电平匹配(如1.0V→0.8V) 5. 保留单元 → 关断时保存关键状态,恢复后快速唤醒

上图展示了UPF核心概念之间的工程关系。电源域是划分供电边界的基础,电源开关控制可关断域的供电,隔离单元和电平转换器处理跨域信号,保留单元则保障状态恢复。理解这些概念之间的协作关系,是后续编写UPF命令、进行功耗验证的前提。

4.1 电源域(Power Domain)

核心原理:电源域是UPF中最基本的抽象概念,它定义了一组具有相同供电特性的逻辑单元集合。一个电源域可以包含一个或多个模块(Module Instance),这些模块共享同一个主供电(Primary Power)和地(Ground)。电源域的划分决定了哪些逻辑可以独立关断、哪些必须保持常开,是低功耗设计策略的物理基础。

判断方法:在实际设计中,划分电源域需要遵循以下原则:

  • 功能相关性:将功能紧密耦合的模块放在同一域,减少跨域信号数量。
  • 功耗管理需求:需要同时关断/唤醒的模块应归入同一域。
  • 电压需求差异:不同工作电压(如1.0V核心、1.8V IO)的模块必须分属不同域。
  • 物理实现约束:考虑布局布线可行性,避免域边界过于碎片化。

UPF中通过 create_power_domain 命令定义电源域,并指定其端口和供电网络。例如:

create_power_domain PD_TOP -include_scope {.}
create_power_domain PD_DSP -include_scope {u_dsp}
create_power_domain PD_GPU -include_scope {u_gpu}

案例拆解:假设一款移动SoC芯片,包含CPU、GPU、DSP、NPU和Always-On模块。设计目标是最小化待机功耗。我们划分如下:

电源域包含模块供电电压关断策略
PD_TOPAlways-On、时钟/复位、调试接口1.0V永不关断
PD_CPUCPU核心、L2 Cache0.9V空闲时关断
PD_GPUGPU核心、渲染管线0.75V非渲染时关断
PD_DSPDSP核心、加速器0.8V音频任务结束后关断

常见误区:初学者常将电源域等同于物理分区,实际上电源域是逻辑概念,一个物理区域可能包含多个电源域(通过隔离带分隔)。另外,电源域划分过细会导致大量跨域信号,增加隔离和电平转换开销,反而增加面积和功耗。

经验提醒:划分电源域时,建议先用功耗分析工具(如PowerArtist)评估各模块的功耗占比,优先对功耗贡献最大的模块实施关断策略,避免过度设计。

4.2 电源状态(Power State)

核心原理:电源状态定义了系统在不同工作模式下,各电源域的供电组合情况。一个电源状态由所有电源域的供电状态(ON/OFF/RETENTION)和电压值共同决定。UPF通过 add_power_state 命令描述这些状态,并定义状态之间的合法转换关系。

操作流程:定义电源状态通常遵循以下步骤:

  1. 列出系统所有工作模式(如全速运行、低功耗待机、深度睡眠)。
  2. 确定每个模式下各电源域的供电状态。
  3. 使用 add_power_state 定义每个状态,并指定状态名称和供电条件。
  4. 使用 add_power_state_transition 定义状态转换路径。
add_power_state PS_ACTIVE -domain {PD_TOP PD_CPU PD_GPU PD_DSP} \
  -state {on on on on}
add_power_state PS_SLEEP -domain {PD_TOP PD_CPU PD_GPU PD_DSP} \
  -state {on off off off}
add_power_state PS_DEEP_SLEEP -domain {PD_TOP PD_CPU PD_GPU PD_DSP} \
  -state {on retention off off}

案例拆解:以智能手机应用处理器为例,其电源状态设计如下:

状态名称PD_TOPPD_CPUPD_GPUPD_DSP典型场景
ACTIVEONONONON高性能计算
NORMALONONOFFON日常使用
SLEEPONOFFOFFOFF待机
DEEP_SLEEPONRETOFFOFF深度待机

常见误区:电源状态定义不完整会导致验证时出现非法状态组合。例如,若未定义PD_GPU单独关断的状态,验证工具会将其视为非法。此外,状态转换路径必须明确,否则功耗管理单元(PMU)无法正确执行状态切换。

风险提示:电源状态定义必须与硬件PMU(电源管理单元)的固件逻辑保持一致。如果UPF中定义的状态与固件实际执行的状态不匹配,会导致芯片上电后进入未知状态,甚至损坏器件。

4.3 电源开关(Power Switch)

核心原理:电源开关是物理上控制电源域供电通断的器件,通常由PMOS晶体管阵列构成。UPF中通过 create_power_switch 命令描述开关的逻辑行为,包括控制端口、供电端口和电源良好(Power Good)信号。

判断方法:设计电源开关时需考虑以下关键参数:

  • 导通电阻(Ron):影响电压降,需保证关断域在最大负载下仍满足工作电压要求。
  • 电流承载能力:需满足峰值电流需求,避免过热。
  • 开关速度:影响唤醒延迟,需与系统时序预算匹配。
  • 漏电流:关断状态下的漏电直接影响待机功耗。
create_power_switch SW_DSP \
  -domain PD_DSP \
  -input_supply_port {VDD_TOP} \
  -output_supply_port {VDD_DSP} \
  -control_port {dsp_pwr_en} \
  -on_state {on_state VDD_TOP {dsp_pwr_en}} \
  -off_state {off_state {!dsp_pwr_en}}

案例拆解:某AI加速芯片设计中,DSP域峰值电流为2A,工作电压0.8V±5%。我们选择电源开关时,需保证导通压降不超过40mV。若采用标准单元库中的电源开关单元,其Ron为20mΩ,则压降为2A×20mΩ=40mV,刚好满足要求。但考虑到温度漂移,实际选择Ron为15mΩ的开关单元,留出设计裕量。

常见误区:电源开关的时序控制常被忽视。开关开启时需先稳定电压再释放隔离,关闭时需先使能隔离再断开电源。这个顺序必须通过UPF中的 set_isolation_control 和电源开关控制信号协同实现,否则会产生毛刺或漏电。

设计要点:电源开关的PG(Power Good)信号必须接入常开域的逻辑,用于复位隔离单元和电平转换器的状态机。PG信号的延迟时间需在UPF中通过 set_power_switch_control 指定,确保时序收敛。

4.4 隔离单元(Isolation Cell)

核心原理:隔离单元用于防止可关断域输出信号在电源关闭后浮空,导致下游常开域逻辑产生不确定状态或漏电。隔离单元通常由简单的逻辑门(如AND/OR)构成,通过隔离使能信号(ISO_EN)控制输出状态。

操作流程:在UPF中插入隔离单元的标准流程:

  1. 识别需要隔离的信号:所有从可关断域输出到常开域的信号。
  2. 确定隔离策略:钳位到0(AND门)或钳位到1(OR门),或保持最后状态(锁存型)。
  3. 使用 set_isolation 命令指定隔离要求。
  4. 使用 insert_isolation_cells 命令完成物理插入。
set_isolation ISO_DSP_OUT -domain PD_DSP -isolation_signal dsp_iso_en \
  -clamp_value 0 -applies_to outputs
insert_isolation_cells ISO_DSP_OUT

案例拆解:考虑一个DSP域输出到Always-On域的数据总线(32位)。当DSP关断时,若不加隔离,总线浮空会导致Always-On域的逻辑门输入悬空,产生约10μA/门的漏电。32位总线共产生320μA漏电,在待机模式下不可接受。插入隔离单元后,输出被钳位到0,漏电降至接近0。同时,隔离单元本身也有漏电,但通常小于1μA/门,整体收益显著。

常见误区:隔离单元的位置选择错误。隔离单元必须放置在常开域(接收端),而不是可关断域(发送端)。如果放在可关断域,隔离单元本身也会断电,失去隔离作用。另外,隔离使能信号必须来自常开域,且需在电源关闭前有效。

风险提示:隔离单元的插入会增加信号路径延迟。对于时序关键路径,需在综合时设置 set_isolation -no_shift 选项,避免隔离单元被优化移动位置,影响时序收敛。

4.5 电平转换器(Level Shifter)

核心原理:电平转换器用于连接不同工作电压的电源域之间的信号。当信号从高电压域(如1.0V)传输到低电压域(如0.8V)时,需要电平转换器将信号摆幅转换为目标域的电平范围,确保逻辑正确识别。

判断方法:是否需要电平转换器,取决于两个电源域之间的电压关系:

源域电压目标域电压是否需要电平转换说明
1.0V0.8V需要高→低,需转换
0.8V1.0V需要低→高,需转换
0.8V0.8V不需要同电压,直接连接
1.0V1.0V不需要同电压,直接连接

操作流程:UPF中电平转换器的处理流程:

  1. 使用 set_level_shifter 指定需要转换的信号或端口。
  2. 设置转换方向(高到低或低到高)。
  3. 使用 insert_level_shifter_cells 完成插入。
set_level_shifter LS_DSP_TO_TOP -domain PD_DSP -applies_to outputs \
  -location self -threshold 0.9
insert_level_shifter_cells LS_DSP_TO_TOP

案例拆解:在混合电压系统中,DSP域(0.8V)输出到TOP域(1.0V)的控制信号,若不经过电平转换,TOP域的逻辑门可能无法正确识别0.8V的高电平(其VIH可能为0.7×1.0=0.7V,勉强识别,但噪声容限不足)。插入电平转换器后,信号被提升到1.0V摆幅,噪声容限恢复。同时,电平转换器也起到隔离作用,防止高电压域信号反向漏电到低电压域。

常见误区:电平转换器与隔离单元的功能混淆。隔离单元处理的是电源关断时的浮空问题,电平转换器处理的是电压不匹配问题。两者可以结合使用,但不可互相替代。另外,电平转换器本身需要两个电源(源域和目标域)都供电才能正常工作,因此不能放在可关断域内。

经验提醒:在UPF中,电平转换器的插入位置(location)有 self(源端)、fanout(目标端)和 both 三种选择。对于双向信号,需使用 both 并在两端各插入一个转换器。

4.6 保留单元(Retention Cell)

核心原理:保留单元是一种特殊的寄存器,在电源关断时能够保持其状态值,电源恢复后无需重新初始化即可继续工作。保留单元通常由主寄存器和影子寄存器(Shadow Latch)构成,影子寄存器由常开电源供电。

操作流程:在UPF中实现保留功能的步骤:

  1. 识别需要保留状态的寄存器(如状态机、配置寄存器)。
  2. 使用 set_retention 命令指定保留要求。
  3. 使用 insert_retention_cells 完成替换。
set_retention RET_DSP_STATE -domain PD_DSP -retention_power_net VDD_TOP \
  -retention_ground_net VSS -elements {u_dsp/state_reg}
insert_retention_cells RET_DSP_STATE

案例拆解:一个DSP音频处理器的状态寄存器包含当前采样率、滤波器系数指针等关键信息。若在DSP关断时丢失这些状态,唤醒后需要重新配置,耗时约100μs。使用保留单元后,状态在关断期间被保存到影子寄存器,唤醒后直接恢复,耗时仅1μs。代价是保留单元面积比普通寄存器大约30%,且漏电略高。

常见误区:保留单元的保存和恢复时序必须精确控制。保存操作(SAVE)必须在电源关闭前完成,恢复操作(RESTORE)必须在电源稳定后、逻辑开始工作前完成。UPF中通过 set_retention_control 指定保存/恢复信号,这些信号必须来自常开域。

风险提示:保留单元不能用于所有寄存器。对于组合逻辑产生的中间值、流水线数据等,保留意义不大且浪费面积。建议仅对状态机、配置寄存器、关键指针等少量关键状态使用保留单元。

4.7 核心概念综合对比与设计决策

为了帮助读者在实际项目中快速决策,下表总结了六个核心概念的关键属性对比:

概念作用对象控制信号供电要求主要代价验证重点
电源域模块/逻辑集合—独立供电网络跨域信号开销域划分正确性
电源状态系统级PMU固件—状态定义复杂度状态转换合法性
电源开关供电网络PWR_EN常开电源面积/压降/漏电开关时序/压降
隔离单元信号路径ISO_EN常开电源延迟/面积隔离时序/钳位值
电平转换器信号路径—双电源延迟/面积转换方向/电压范围
保留单元寄存器SAVE/RESTORE常开影子电源面积/漏电保存/恢复时序

设计决策流程:在实际项目中,建议按照以下顺序进行低功耗架构设计:

  1. 分析系统功耗目标,确定需要关断的模块和关断粒度。
  2. 划分电源域,定义电源状态。
  3. 设计电源开关网络,确定控制策略。
  4. 识别跨域信号,规划隔离和电平转换方案。
  5. 选择需要保留状态的寄存器,设计保留策略。
  6. 编写UPF文件,进行形式化验证和动态仿真。

总结复盘:UPF的六个核心概念构成了低功耗设计的完整闭环。电源域是基础,电源状态是策略,电源开关是执行,隔离和电平转换是保障,保留单元是优化。在实际项目中,这些概念往往交织在一起,需要设计者从系统角度统筹考虑。建议初学者先从简单的双域设计入手,逐步增加复杂度,在实践中深化理解。

工程实践建议:在编写UPF文件时,建议将电源域定义、电源状态、隔离/电平转换/保留策略分别放在独立的TCL脚本中,便于版本管理和团队协作。同时,每个UPF命令都应添加详细注释,说明设计意图和约束条件,方便后续验证和调试。