低功耗验证入门:电源域的行为为什么必须专门验证
更新时间:2026-09-15。本文是「集成电路大类 · 低功耗设计与验证」入门层系统篇第 39 篇。低功耗设计流程把 UPF、隔离、保持、电源门控串成一条实现线,但「实现里有这些单元」不等于「任何上下电场景下行为都对」。断电再上电是普通功能用例几乎不会覆盖的异常路径,却在手机一天里发生成百上千次——这就是低功耗验证成为独立专项的原因。系统地图见低功耗导读。
本文要回答的问题
- 一个域功能验证全绿,为什么加了电源门控后还是会出致命 bug?
- 断电瞬间,关断域的输出在数字世界里是什么(X?Z?随机?)?
- 隔离、保存、断电、恢复、复位、上电的合法顺序由谁保证?
- 「电源状态覆盖率」是什么,为什么普通功能覆盖率覆盖不到它?
- 低功耗验证有哪些手段:仿真、断言、形式、门级检查各管什么?
一、断电引入的五类新风险
普通功能验证假设所有寄存器永远通电、所有连线永远有合法逻辑值。电源门控把这个假设撕碎了:
| 风险 | 物理画面 | 不防的后果 |
|---|---|---|
| 隔离失效 | 关断域掉电后输出浮空/乱跳 | 乱码灌进常开域,总线 corruption、状态机跑飞 |
| 保持/恢复错序 | 保存早于停止访问、恢复早于电源稳定 | 保持寄存器内容损坏,醒来状态错乱 |
| 脏数据传播 | 非保持 FF 掉电后是随机/X | 上电未复位直接参与运算,难复现的硅上 bug |
| 电平转换方向/使能错 | 跨压信号无转换或反向馈通 | 高压穿入低压器件、漏电甚至可靠性损伤 |
| 事件丢失 | 掉电期间中断在关断域产生 | 唤醒源消失,系统「睡死」 |
这些场景在永远通电的仿真里根本不存在;必须让验证环境知道「电」这件事——这正是 UPF 在验证中的用途(格式基础见 UPF 入门,物理单元见保持与隔离)。
二、UPF 仿真:让 X 和 Z 按电源状态出现
在仿真器里加载 UPF 后,电源网络不再是隐含背景:
- 一个域进入 OFF,其非保持寄存器和门后网表节点按电源状态变成 X(未知);
- 断电域对外的端口若无隔离,X 直接传播;有隔离且使能正确时,输出被钳到 UPF 指定值(常为 0);
- 隔离单元、保持单元、电源开关、电平转换器在网表中有真实模型,控制信号(
ISO_EN、SAVE、RESTORE、PG_EN/ACK)必须由电源管理 FSM 按时序驱动。
这让「忘记插隔离」「隔离使能极性写反」这类问题在仿真波形上直接表现为一串 X 打穿总线,而不必等回片。对应地,RTL 代码本身通常不含电源信息,同一套 RTL 配不同 UPF 可以建不同域划分——这也是低功耗「意图与实现分离」在验证上的好处。

三、断言与覆盖:把「电源纪律」变成可检查项
**低功耗断言(SVA)**典型检查:
- 进入 OFF 前:时钟已门控、保存握手完成、隔离已使能;
- OFF 期间:关断域输出在常开域边界为确定钳位值,无 X 进入;
- 恢复阶段:电源 good 应答(
PG_ACK/pwrgood)到达前不得撤销隔离、不得放行事务; - 保持寄存器:保存使能窗口内核心电源仍在;恢复期间其输入不被业务驱动;
- 唤醒:AON 锁存的事件在域上电后确实被看到(不丢中断)。
电源状态覆盖是低功耗验证区别于功能验证的核心指标:
- 定义电源状态表(每个域 ON/RET/OFF 的组合)和允许的迁移图;
- 覆盖率要求所有合法状态组合至少到达一次、所有迁移至少走过一次,并验证非法组合(如两域同时向同一电平转换器反向输出)不可达;
- 还要把上下电与普通流量交叉:正在 DMA 传输时关域、连续快速上下电、半路上被唤醒打断恢复序列等。
这通常用 UVM 实现:一个独立的「电源管理虚拟序列」像捣蛋鬼一样在正常测试中随机插入上下电事务,监测器检查隔离窗口和 X 传播(通用验证方法背景可参考芯片验证)。
四、形式验证:电源控制逻辑的穷举检查
仿真只能覆盖「想得到的序列」,而电源管理 FSM 的非法组合可以用形式方法穷尽证明(形式方法在芯片验证中的位置见芯片验证):
- 隔离使能信号在任何「域可能 OFF」的状态下恒有效;
- 电源开关的
ack/pgood不回有效前,恢复动作不可达; - 掉电请求与紧急唤醒并发时,状态机能收敛到合法状态而非死锁;
- 复位树覆盖所有非保持单元(不存在「上电后永远读不到复位」的寄存器)。
低功耗形式检查常在 RTL+UPF 阶段跑,比仿真更早给出「结构上不可能违规」的强结论。
五、门级与硅前检查:单元到底插没插对
UPF 写了不代表网表对:综合/物理阶段可能因约束、面积或命名问题漏插、错连。签核前的结构性检查包括:
- 跨电源域的每条路径都有隔离/转换器且方向正确;
- 保持单元的保存控制接到常开电源、控制极性正确;
- 电源开关链的使能顺序与涌流控制一致(开关链设计见 SoC 电源架构);
- always-on 单元数量与位置符合预期,没有普通单元挂在已关电网上;
- 门级低功耗仿真:带 SDF/电源模型再跑关键上下电序列,确认时序(保存沿与时钟停摆的先后)也成立。
六、最常见的五个真实 bug 清单
- 漏隔离打穿:某条跨域信号新加时没进 UPF 清单,关电后 X 进常开域——靠「跨域路径结构检查」兜底,不靠人记得。
- 恢复早于电源稳定:状态机没等
pgood就撤隔离,采到爬升中的信号——断言必备。 - retention 极性反/保存窗口错:功能上永远看不出来,第一次深睡挂起必现。
- 上电不复位脏寄存器:偶发、与温度和掉电时长相关,是最难调的硅上低功耗 bug 类型(排查方法见功耗异常排查的「深睡唤醒偶发」桥段)。
- 掉电中中断丢失:事件只在关断域登记,AON 无锁存——唤醒源必须在常开逻辑双登记。
七、和普通验证计划怎么合
- 复用 UVM 环境:只增加电源代理(驱动 UPF 电源对象、注入上下电)与电源监测(检查 X 传播/隔离窗口)。
- 测试矩阵:每个域 × 每个电源状态 × 代表性业务流量 × 随机打断点。
- 覆盖率三件套并行:功能覆盖(业务)、电源状态/迁移覆盖(LP)、断言覆盖(纪律)。
- 回归纪律:任何 RTL/UPF 改动都要重跑含上下电的最小回归,因为普通功能测试给不了电源行为任何信心。
八、一个低功耗验证计划的最小骨架
把前面的原则落成可以直接抄用的验证计划骨架:
- 对象清单:逐域列出域内关键模块、跨域接口(每条注明隔离位置与钳位值)、保持寄存器组、电平转换器、唤醒源。
- 状态与迁移矩阵:电源状态表的每个状态定义验收标准(谁有电、谁被钳位、谁在保持);每条迁移定义合法前后置条件。
- 用例分层:
- L1 结构检查:跨域路径 100% 有规则单元、无普通单元挂错电网(全自动 LP check);
- L2 序列用例:每条迁移正向跑通,波形检查 ISO/SAVE/RESTORE/PG 握手时序;
- L3 交叉用例:迁移与业务流量并发(DMA 进行中关域、收发途中唤醒);
- L4 随机/打断:上下电虚拟序列随机插入、恢复被高优先级唤醒打断、连续快速睡眠;
- L5 长稳压测:长时间随机上下电后校验所有保持数据与业务状态一致性。
- 覆盖率模型:状态覆盖、迁移覆盖、跨域接口 × 电源状态交叉覆盖、断言覆盖合流。
- 签收标准:结构检查 0 waiver 或逐条签字;断言 0 失败;矩阵覆盖 100%;保留未覆盖项的风险说明。
九、UPF 版本管理:低功耗验证最容易翻车的工程细节
UPF 是与 RTL 平行演进的设计资产,实践中的高频事故都和版本协同有关:
- RTL 新增一个跨域信号但 UPF 隔离规则没更新 → 结构检查本应拦截,但若该检查未进 CI 就会漏到门级;
- 域重新划分后旧的电源状态名残留在测试序列里 → 仿真报莫名 X;
- 前端 UPF 与后端 UPF 分叉(各自手工改过)→ 网表行为与仿真不一致。
纪律建议:UPF 与 RTL 同仓库同评审同合入;LP 结构检查纳入每次回归的必跑项(成本低、价值极高);前后端 UPF 采用单一来源+后端只追加约束的模式,并做差异审计。格式与检查工具消费方式见低功耗格式速查。
- 误区:功能验证过了,电源域只是实现细节。 上下电路径是独立的一类行为,必须独立验证。
- 误区:门级再查就行。 结构问题在 RTL+UPF 仿真就能暴露,拖到门级修一轮的成本高数倍。
- 误区:只测正常挂起/恢复一条序列。 真实世界充满半路唤醒、连续快速睡眠、业务进行中关域,随机化不可或缺。
- 误区:隔离钳位值随便选 0。 钳位值影响常开域解读(如片选低有效时钳 0 可能误选中),要按接口语义定。
十、一个唤醒丢失的完整案例
用一个典型故障把全片概念串起来。某可关域含 UART,设计意图是「深睡时收到字节可唤醒」。初版实现中 UART 模块整体随域断电,唤醒中断线也从该域引出——结果约三分之一的深睡测试丢字符。根因链:掉电后 UART 检测逻辑本身不存在,首字节边沿出现在重新上电完成之前;中断状态寄存器在断电期间无法记录事件。
修法分三层:在常开岛放一个极小的 UART 边沿检测器(或始终通电的接收状态机前段),事件先在 AON 锁存并同时拉起电源请求;电源管理 FSM 收到请求后按「上电→等稳定→撤隔离→复位非保持逻辑→放行已锁存事件」的顺序恢复;低功耗验证补两条用例:在 OFF 窗口内注入字节(验证 AON 锁存不丢)、在恢复序列中途注入第二个字节(验证顺序不被打断)。这个案例对应第三节表格的最后一行:凡是要在断电中存活的功能,其检测与记忆必须在常开侧双登记,只在关断域「希望它醒来」是不够的。
十一、覆盖率收不满怎么办
电源状态组合随域数量指数增长,三个域各三档就是 27 个状态,全状态强行走一遍既慢又可能包含非法组合。实务做法:先按电源状态表区分合法/非法状态,合法状态要求全部到达;迁移覆盖只要求状态图声明的边;非法状态改用形式证明不可达,而非用仿真硬造。对恢复时序这种关键序列,采用「确定性序列+随机扰动」混合:主干由定向测试保证,扰动(延迟、打断、并发请求)由随机环境注入。把低功耗覆盖从「越多越好」变成「按状态图精确签收」,是专项验证成熟的标志。
这一篇在知识体系里的位置
一句话收口:功能验证证明「通电时算得对」,低功耗验证证明「断电不乱串、醒来还是我」——后者不是补充测试,而是电源域设计能否活过第一个晚上的入场券。
总结
电源门控引入了隔离失效、保持错序、脏 X 传播、电平转换错向、断电事件丢失五类普通功能验证永远覆盖不到的新风险;低功耗验证要在 UPF 感知仿真中让 X/Z 按电源状态真实出现,用 SVA 断言把上下电纪律变成可检查项,用独立的电源状态/迁移覆盖率(并与业务流量交叉、随机打断)签收,再用形式化穷举关键电源序、用结构检查确认网表真插对了单元。核心原则是按 PST 合法状态精确签收而非追求覆盖越多越好,且凡要在断电中存活的检测与记忆必须在常开侧双登记。