多电源域低功耗设计:UPF/CPF、隔离单元、保持寄存器与电源门控
更新时间:2026-10-01。时钟门控能压住翻转,但只要 VDD 还在,漏电就一直在;真正把一块逻辑的功耗降到接近零,只能切断它的电源。电源门控(power gating)省下的是漏电,代价却是一整套新结构:电源域、电源开关、隔离、保持、电平转换,以及一条一步都不能错的上下电序列。这一篇在中级篇 电源域、保持与隔离:给芯片「分区断电」的三块基础设施 之上,按标准篇深度把 UPF 多电源域设计从功耗来源、域划分、UPF/CPF 意图描述一直讲到对验证、实现和 DFT 的连锁影响。
本文要回答的问题
- 芯片功耗里动态功耗和漏电各占多少,为什么先进工艺下「断电」比「停时钟」更重要?
- 电源域(power domain)按什么原则切,域切多了和切少了分别付出什么代价?
- UPF(IEEE 1801)和 CPF 两种电源意图标准分别描述什么,为什么不能把这些信息直接写进 RTL?
- isolation cell、retention flop、level shifter、power switch 各自解决什么问题,漏插一个会发生什么?
- 上下电序列为什么必须严格排序,power state table 在设计、验证、实现三处如何共用?
- 多电源域对低功耗验证、物理实现(rush current、IR drop)和 DFT 扫描测试分别带来什么新约束?
一、功耗危机:动态、漏电与三档省电手段
CMOS 电路的功耗分两块。动态功耗 Pdyn = α·C·V²·f,来自信号翻转对负载电容的充放电,α 是翻转率;静态功耗主要是亚阈值漏电和栅氧漏电,只要晶体管两端存在电压差,哪怕完全不翻转也持续存在。功耗的物理来源在 芯片功耗从哪来:动态翻转 + 漏电 里有完整推导,这里只记一个工程趋势:从 90nm 到 5nm,电源电压从 1.0V 降到 0.7V 左右、降不下去了,而阈值电压随工艺持续降低,漏电占待机功耗的比例从不足 10% 涨到 40% 以上,手机 SoC 待机时「什么都不干也掉电」基本全是漏电。
三档省电手段的覆盖面完全不同:
| 手段 | 省掉的部分 | 残余功耗 | 恢复延迟 | 粒度 |
|---|---|---|---|---|
| 时钟门控 clock gating | 时钟树与触发器动态功耗 | 组合逻辑翻转 + 全部漏电 | 0(当拍可用) | 寄存器/模块 |
| 多电压/调压 DVFS | 按 V² 缩减动态功耗,低压也降漏电 | 仍有整片漏电 | 电压爬坡,微秒~毫秒级 | 电压岛 |
| 电源门控 power gating | 域内几乎全部动态与漏电 | 仅开关管本身漏电 | 上电+状态恢复,微秒级 | 电源域 |
这张图说明三档手段不是替代关系而是递进关系:实际芯片里同一个域先做时钟门控,运行场景允许时降到低压岛电压,确定长时间不用才断电。门控时钟的具体实现与多比特触发器合并可参考 多比特触发器合并(MBFF)与时钟功耗优化;系统级 Sleep/Standby 模式的进入退出则见 低功耗模式 Sleep/Stop/Standby:进入退出时序与唤醒源设计。
二、电源域划分:把一颗芯片切成若干供电子系统
电源域是一组共享同一电源开关、可以一起断电的逻辑集合,它和层次化模块、时钟域都是正交概念:同一个电源域可以跨多个 RTL 模块,一个模块理论上也能拆到多个域里(实践中尽量不这么做)。划分原则有三条。其一,按「同时活跃性」聚:同一时刻要么一起工作、要么一起空闲的逻辑放一个域,CPU 核、GPU、视频编解码器、NPU 各自成域是手机 SoC 的典型切法。其二,必须有人保持清醒:需要一个 always-on 域(AON),电源控制器、唤醒逻辑、保持寄存器的供电、实时计数器都放这里,它永远通电,面积要压到最小。其三,域的数量要算账:每多一个域就多一组开关、隔离单元、保持控制和一条序列,域间通信还可能要 level shifter,划十个域听着精细,物理上可能面积涨 15%、上下电管理变成验证黑洞。
图中的出边有两类,读这张图时要分清:电源连接(从 VDD_ROOT 经开关到各域)和信号连接(域间经特殊单元通信)。所有可门控域到 AON、以及可门控域之间的信号,跨越边界时都要插入特殊单元;AON 向断电域方向发送的信号不需要隔离——接收端反正没电。域之间若工作电压不同(例如 0.8V 的外设连 0.67V 工作中的 CPU),还要在隔离之外加电平转换。电压岛与功耗签核的整体背景可回看 功耗分析与电源完整性。
三、UPF 与 CPF:电源意图为什么必须独立于 RTL
电源域、开关、隔离、保持这些信息为什么不直接写进 Verilog?因为 RTL 必须保持工艺无关、可复用,而电源结构是实现决策——同一份 CPU RTL 在这颗芯片里独立成域,在另一颗低成本芯片里可能永远通电。如果把 isolation_en、save、restore 硬写进 RTL,RTL 就被某一种电源方案绑死了。工业界的做法是用一份独立的「电源意图」文件描述它们,工具链在仿真、综合、物理实现各阶段读取同一份意图,自动插入特殊单元并检查正确性。
主流标准有两个,概念体系几乎一一对应,语法和工具生态不同:
| 维度 | UPF(IEEE 1801) | CPF(Si2 标准) |
|---|---|---|
| 出身 | Accellera → IEEE 1801,Synopsys/Mentor(Siemens) 主推 | Si2 联盟,Cadence 主推 |
| 电源域 | create_power_domain | create_power_domain |
| 电源网络 | create_supply_net/port + supply set | create_power_nets + power domain 关联 |
| 隔离策略 | set_isolation | set_isolation |
| 保持策略 | set_retention | set_retention |
| 电平转换 | set_level_shifter | set_level_shifter |
| 状态表 | add_power_state / PST | power mode table |
| 当前生态 | 多数二选一流程的事实通用格式 | Cadence 流程中常见 |
这张流程图的要点是「一份意图喂四个阶段」:仿真器按 UPF 给断电域信号打 X、驱动隔离钳位值;综合工具按策略网表插入 isolation cell 和 retention flop;物理实现放置 power switch、接 secondary power rail;签核工具检查电源网络。任何一个阶段脱离 UPF 各自发挥,最后必然出现「仿真对、网表错」或「网表对、芯片上隔离方向接反」。基础概念与入门语法可参考 低功耗设计与 UPF:电源域、时钟门控、电源门控、隔离与保持寄存器。
四、四类特殊单元:各自防住一种失效
不加保护地断掉一个域的电,至少出三类事故:输出悬空在中间电平、内部状态全部丢失、不同电压器件直连。四类特殊单元各防一种:
| 单元 | 解决的问题 | 供电 | 典型位置 |
|---|---|---|---|
| isolation cell | 断电域输出悬空,接收端看到 X/中间电平,甚至穿透电流 | 接收端域(常通侧)电源 | 断电域所有输出边界 |
| retention flop | 断电后状态丢失,恢复要重新初始化整颗芯片 | 主电(可断)+ backup 常通低压 | 需要快速恢复的关键寄存器 |
| level shifter | 低压输出驱动高压器件时摆幅不足,或高压驱低压过应力 | 双侧电源 | 不同电压域之间 |
| power switch(header/footer) | 域电源本身的通断 | 常通侧栅控 | 域电源入口,分布式摆放 |
isolation cell 本质是一个带使能的钳位单元:断电前 iso_en 生效,把信号钳到 0 或 1(按接收端逻辑安全值选定,例如低有效复位要钳到无效的 1)。漏插一个 isolation,断电期间该信号浮空,仿真里是 X 传播,硅上更糟——中间电平让接收端 PMOS/NMOS 同时导通,产生从 VDD 到 GND 的穿透电流,耗电甚至超过正常工作。retention flop 在普通触发器旁挂一个由常通 backup 电源供电的锁存器:save 时把状态搬进锁存器(主电断了也不丢),restore 时搬回来,恢复一条指令流只需要几个时钟周期;代价是单元面积大约增加 20%~30%,所以只给关键状态(CPU 核心寄存器、关键 FSM)用,普通缓存断电后直接重灌。level shifter 分两类:低转高需要常通的高电源供电,高转低结构简单,插错方向或忘插,轻则时序功能失败、重则栅氧过应力老化。power switch 用 header(PMOS 接 VDD)或 footer(NMOS 接 GND)实现,必须由常通域输出的使能控制。
读图时注意两条路径的区别:信号路径是「域内逻辑 → isolation → level shifter → 常通接收端」,顺序不能颠倒(先隔离再转换,或按单元库合并成 enable level shifter);状态路径是主寄存器与 retention 锁存器之间的 save/restore 双向搬运,与信号路径完全独立。
五、电源控制器与上下电序列:一步错,状态毁
power gating 的全部复杂性最终收敛到一条时序上。以关闭一个域为例,电源控制器(在 AON 域)必须按顺序发出:① 先停该域时钟,确认进入静默;② 置位 isolation,确认钳位生效;③ 发 save 脉冲把状态存入 retention 锁存器;④ 拉断 power switch;⑤ 等待电源放完残压。上电严格反序但有关键细节:① 导通 power switch(还要限制涌入电流);② 等待电压稳定(power good);③ 发 restore 搬回状态;④ 解除 isolation;⑤ 恢复时钟。两个排序错误最致命:断电前没先隔离 → X 和穿透电流;上电时在电压稳定、restore 完成前解除隔离 → 残态信号冲进常通域。
这些合法状态由 power state table(PST,电源状态表)穷举定义,UPF 中用 add_power_state 描述。一个简化的三域 PST 如下:
| 状态 | PD_CPU | PD_GPU | PD_PER | 典型场景 |
|---|---|---|---|---|
| RUN | 0.85V ON | 0.9V ON | 0.8V ON | 全负载 |
| NOM | 0.75V ON | OFF(保持) | 0.8V ON | 日常使用 |
| SLEEP | OFF(保持) | OFF | OFF(保持) | 灭屏待机 |
| DEEP | OFF(不保持) | OFF | OFF | 超长待机,仅 AON |
PST 是三处共用的契约:设计按它实现控制器,验证逐条覆盖状态跳转与非法跳转拦截,实现按最坏状态做电源网络分析。时钟与复位在跨域上下电中的配合可参考 时钟与复位架构:异步复位同步释放、CDC 与复位域交叉。
六、对验证、实现与 DFT 的连锁影响
电源域把「通/断电」变成了芯片行为,三个下游环节各自出现新工作。验证侧,RTL 仿真原生不知道断电这回事,必须用 UPF 驱动的低功耗仿真:断电后域内输出应为 X(或经隔离的钳位值),检查项包括隔离覆盖率、钳位值正确性、保持 save/restore 时序、PST 跳转合法性、上电后无残留 X,还要验开关分拍导通期间的行为。这些专项方法在 低功耗验证:UPF 仿真、电源状态(PSO)、隔离毛刺与电源序列检查 中展开。
实现侧有三个硬问题。其一,rush current(涌入电流):整块域的电容同时充电,瞬间电流可达正常工作电流的数倍,全部开关同时打开会把 VDD 瞬间拉垮,做法是把开关链成分拍导通的 daisy chain,配合开关周围的 decoupling 电容。其二,IR drop:开关管本身有电阻,域内有效电压降低,需要在 功耗签核:静态/动态 IR drop、电迁移 EM 与电压降修复 的多角分析中按门控后布局重新验证。其三,布局:开关、retention 的常通 rail、always-on buffer 要在 floorplan 早期规划,后期补插必然造成布线拥塞。
DFT 侧的矛盾在于扫描测试时域的状态。扫描移位期间如果某个域断电,整条 scan chain 物理上断开,ATPG 根本无法加载向量。常规做法是测试模式下强制所有域通电、bypass 全部 isolation;但这又带来两个必须专门处理的问题:retention flop 的 save/restore 路径要单独做专门测试向量,开关管本身(header/footer 的 stuck-on/stuck-open)要加电源门控结构测试;at-speed 测试还要保证多域时钟按 PST 关系恢复。完整影响见 DFT 深入:扫描压缩、at-speed 测试、覆盖率与物理实现影响。
| 环节 | 新增检查/工作 | 漏做的后果 |
|---|---|---|
| 验证 | LP 仿真、规则核查、PST 跳转、隔离毛刺 | 硅上 X 传播、穿透电流、唤醒死机 |
| 实现 | 开关分拍、rush current、IR drop 重验、常通 rail 规划 | 上电压降复位、时序在门控后失败 |
| DFT | 测试模式全上电、retention 专项、开关管测试 | 扫描链断链、缺陷覆盖率虚高 |
常见坑
- 域切得太碎:每个域都要一套隔离、保持、序列和签核角,面积和验证成本超过省电收益。
- 隔离钳位值拍脑袋:要按接收端的安全态选,低有效控制信号通常钳 1,钳错等于主动报错。
- retention 当万能:面积大、backup rail 有持续漏电,只给关键寄存器;大批数据 SRAM 该重灌就重灌。
- 开关一次全开:rush current 拉垮电源,必须 daisy chain 分拍并仿真浪涌。
- 上电先解隔离后 restore:残态冲进常通域,正确顺序是电压稳定 → restore → 解隔离。
- DFT 忘了门控结构:测试模式域上不了电、scan chain 断裂,retention 路径和开关管本身要专门向量。
- UPF 与 RTL 版本漂移:RTL 改了端口而策略没更新,工具静默漏插单元,要把 UPF 规则核查纳入每次回归。
这一篇在知识体系里的位置
- 前置基础:芯片功耗从哪来:动态翻转 + 漏电 给出功耗物理来源,电源域、保持与隔离:给芯片「分区断电」的三块基础设施 给出三块基础设施的入门图景。
- 向上深入:低功耗验证:UPF 仿真、电源状态(PSO)、隔离毛刺与电源序列检查 展开验证专项,功耗签核:静态/动态 IR drop、电迁移 EM 与电压降修复 承接门控后的电源完整性签核,DFT 深入:扫描压缩、at-speed 测试、覆盖率与物理实现影响 处理测试模式。
- 横向相关:低功耗模式 Sleep/Stop/Standby:进入退出时序与唤醒源设计 是 PST 在系统侧的对应物,物理实现细节继续看 物理综合与布局深入。
总结
UPF 多电源域设计的本质是用「结构和纪律换漏电」:按同时活跃性切出电源域与最小的 always-on 域,用一份 UPF(IEEE 1801)或 CPF 意图同时驱动仿真、综合、实现与签核,域边界靠 isolation 钳位防 X 与穿透电流、retention flop 借常通 backup 电源保住关键状态、level shifter 跨越电压差、分拍导通的 power switch 压制 rush current,而电源控制器严格执行「隔离→保持→断电」与「上电→稳定→恢复→解隔离」的序列并用 PST 钉死合法状态——正确性最终由低功耗验证、门控后的 IR drop 签核和测试模式全上电的 DFT 方案共同兜底。