UPF 低功耗意图:让「什么时候断电」这份合同贯穿全流程(F7)
低功耗设计概念在 UPF 低功耗设计 已讲;本篇沿数据流回答:「哪些域可以断电、断了怎么隔离、状态要不要保住、跨电压怎么传话」这套意图,为什么不能写死在 RTL 里,又是怎样用一份 UPF 在综合、P&R、验证、签核四类工具间保持同一含义的?
一、为什么意图与实现要分离
RTL 描述功能:数据通路在算什么。UPF 描述供电策略:哪些模块在哪个状态下由哪条电源网络供电、断电边界插隔离、低压状态用 retention 保住触发器、不同电压域之间插电平移位器。同一份 RTL 可能配多套电源策略(全电/待机/深睡),所以 UPF 必须独立文件、与 RTL 并行版本化,从 S0 草案一路活到 S5 签核。

二、UPF 携带的核心数据
| 对象 | 语义 | 在物理站变成什么 |
|---|---|---|
| power domain | 共享同一电源网络的层级集合 | floorplan 中的电压区域(见 S3) |
| isolation | 断电域输出钳位到固定值 | isolation cell 及其 enable 连接 |
| retention | 断电时保住触发器状态 | retention flip-flop + save/restore 控制 |
| level shifter | 跨电压域信号电平转换 | level-shifter 单元(常含使能) |
| power switch | 域电源通断 | header/footer switch 单元阵列 + 控制链 |
| supply network | 电源/地网络与状态表 | ring/strap/rail,供 S5 IR 分析 |
三、随流程的版本演化(这是本站重点)
- UPF 0.x(S0~S1,意图级):只定义域、供电关系、策略,不含具体单元和电源端口实现,供低功耗仿真验证架构合理性。
- UPF 综合版(S2):补电源语义,让综合知道哪里要插隔离/保持、哪些信号跨域,避免综合把策略需要的逻辑优化掉。
- 物理 UPF(S3):绑定真实隔离/电平移位/电源开关单元、电源端口与电压区域,逻辑域物理落地。
- 签核版(S5):与最终电源网络、功耗状态(power state table)一致,供 IR-drop/EM 与多态功耗分析。
同一概念在四个阶段逐步「长出实现」,但域划分与策略语义必须保持可追溯的同一——这正是跨工具一致性最难的地方。
四、为什么极易漂移:三类工具的理解差异
- 仿真器做电源状态切换(power aware sim),检查断电时 X 是否被正确隔离、retention 能否恢复;
- 综合/P&R 负责插入物理单元;
- 签核工具按 supply set/power state 算电流与压降。
若三者读的 UPF 版本或 apply 命令不同,会出现「仿真认为隔离了、版图里没插单元」「P&R 插了 level shifter 但签核状态表里该域恒压」这类静默不一致——功能仿真全绿,硅上待机唤醒死机。
五、数据契约与典型事故
契约:UPF 与 RTL 同 tag;每阶段 UPF 的增量(绑定了哪些单元、改了哪条 supply)有 changelog;用 UPF 一致性检查比对「意图单元数 vs 物理落地单元数」;功耗状态表在验证与签核间同源。
| 事故 | 根因 | 拦截 |
|---|---|---|
| 待机唤醒出错 | 断电域未隔离/未 retention | S0 定策略,power-aware sim 全状态过 |
| 仿真绿、硅上漏电流 | 仿真 UPF 与物理 UPF 漂移 | 意图↔物理一致性比对 |
| 跨域信号亚稳 | level shifter/隔离缺失或向错 | 跨域边界自动检查 |
| IR 签核状态错 | power state 表与策略不一致 | 状态表随 UPF 单一来源 |
| 后期补不动 | UPF 综合后才写 | S0 即冻结域划分(见 S0) |
相关与延伸
- 物理落地:S3 布局;签核消费:S5 枢纽;源头:S0。
- 设计概念:低功耗 UPF 设计;库侧支持见 F3 Liberty 多视图。
总结
UPF 是一份与 RTL 分离、从架构草案逐级长出物理实现的供电合同;它的难点不在语法,而在让仿真、综合、P&R、签核四类工具读到的是同一套域与策略——任何一处版本漂移,都会把低功耗从「省电」变成「唤醒即死机」。