低功耗格式速查入门:一堆缩写,一次串清楚
更新时间:2026-09-15。本文是「集成电路大类 · 低功耗设计与验证」入门层系统篇第 40 篇。进入低功耗流程,文件后缀和缩写会突然变多:UPF、CPF、
.lib里的 pg_pin、SAIF、FSDB、SPEF、SDF……它们不是同一种东西,而是在一条流水线的不同工位传递不同信息。这一篇按「描述意图—描述器件—描述物理—描述活动—产出报告」把它们摆清楚,不追求语法大全,只求再看到时知道它在说什么、谁在消费它。系统地图见低功耗导读。
一张总表:谁在流水线的哪个位置
| 类别 | 格式/文件 | 说什么 | 谁生产 | 谁消费 |
|---|---|---|---|---|
| 功耗意图 | UPF(IEEE 1801,Tcl 语法) | 电源域、电源网、隔离/保持/转换/开关规则、电源状态表 | 低功耗架构/前端 | 仿真、综合、物理、验证、签核全流程 |
| 功耗意图(另一流派) | CPF | 与 UPF 几乎一一对应的同类信息 | 同上 | Cadence 流程 |
| 器件数据 | Liberty .lib(NLDM/CCS) | 每个单元的时序、漏电表、内部功耗、pg_pin、特殊单元属性 | 库/代工厂 | 所有数字流程 |
| 物理寄生 | SPEF | 线网的 R/C 寄生 | 寄生提取(物理设计后) | STA、IR-drop/EM、精确功耗 |
| 时序约束 | SDC | 时钟、例外、门控时钟检查 | 前端/约束工程师 | 综合、STA、物理 |
| 门延时反标 | SDF | 门延迟与时序检查值 | STA/物理 | 门级(功耗)仿真 |
| 活动率 | SAIF | 每个节点的翻转率/静态概率(紧凑摘要) | 仿真/模拟器 | 功耗分析 |
| 波形活动 | VCD/FSDB | 逐时刻 0/1 波形(信息全、体积大) | 仿真/逻辑分析仪 | 周期级/门级功耗分析 |
| 检查 | 低功耗检查报告(常称 LP/CLP check) | 无隔离穿越、未供电连接、规则违规 | 校验工具 | 工程师签收 |
一句话:意图靠 UPF/CPF,器件成本靠 Liberty,物理现实靠 SPEF/SDF,「用得有多狠」靠 SAIF/VCD/FSDB。
二、UPF:一份意图,全流程共用
UPF 的关键命令按「画电网」和「立规矩」两组记(概念背景见 UPF 入门与电源域篇):
# 画电网:电源从哪来、走哪些网、域用哪一路
create_power_domain PD_CORE
create_supply_net VDD -domain PD_CORE
create_supply_net VSS -domain PD_CORE
# 立规矩:跨 OFF 域边界要隔离;要保留的寄存器进 retention;
# 跨 0.7V/1.8V 边界自动插电平转换器;域电源经开关
set_isolation iso_core -domain PD_CORE -isolation_power_net VDD_AON -clamp_value 0
set_retention ret_core -domain PD_CORE -retention_power_net VDD_RET
set_level_shifter ls_core -domain PD_CORE
create_power_switch sw_core -domain PD_CORE -input_supply_port {vin VDD} -output_supply_port {vout VDD_SW}
add_power_state ... ; # 电源状态表:ON / RET / OFF 及迁移同一份 UPF 会被:仿真器读(决定哪里变 X、哪里被钳位,见低功耗验证)、综合读(自动例化隔离/保持/转换单元)、物理读(布电源开关和 always-on 走线)、签核读(检查连接完整性)。这就是「意图只写一遍、各工具各自落地」的工程价值,也是评审必须先审 UPF 的原因(评审清单见低功耗设计流程)。
CPF 是 Cadence 提出的等价格式,概念映射直接:power domain→power domain、isolation→isolation、retention→retention、level shifter 同名、power state table 同名。遇到 .cpf 不必慌,它只是另一套命令名的同一张电网图。
三、Liberty 里的功耗三张表
功耗分析器算每一块门的电费,数据全在标准单元库 .lib(标准单元与库的背景见逻辑综合与物理设计):
leakage_power:单元不通时的静态漏电,按工艺角(尤其温度、阈值电压变体 LVT/SVT/HVT)给值;常带when条件表——同一单元输入向量不同,漏电流也不同(栈效应/输入依赖)。internal_power:单元内部(不含外部负载)的充放电与穿通能量,按上升/下降沿、输入引脚、输出负载分组(rise_power/fall_power与 timing group 关联);外部负载上的开关功耗由工具用 ½·C·V²·f 自行算,C 来自库引脚电容+SPEF 线电容。- 特殊单元属性:隔离单元、保持触发器、电平转换器、电源开关、always-on 单元有专用
pg_pin、retention、level_shifter等属性与功耗模型,让工具识别并正确连接/校验。 - 状态相关功耗:复杂单元(如 SRAM、PLL macro)按功能状态(active/retention/off)给不同功耗,对应宏模型。
这解释了为什么换库/换工艺角后功耗数字会大变:漏电随温度指数、随阈值选择大幅变化(见漏电与工艺),库数据本身就不同。
四、活动率输入:SAIF 与波形
光有结构和库,功耗分析还缺「每个节点翻多勤」——α(见翻转率篇):
- SAIF(Switching Activity Interchange Format):仿真的统计摘要——每个信号 0→1/1→0 次数、静态概率、毛刺计数等,文件小、足够跑全芯片平均功耗,是综合后功耗分析的主力输入。
- VCD/FSDB:完整逐周期波形(FSDB 是压缩二进制),信息全但体积巨大,用于周期级/门级 DPA 的短窗口分析(取舍见 DPA 篇)。
- 无向量估计:早期没有仿真时用默认翻转率或
propagate从输入沿推算,只能做架构粗估,不能签收。
来源可以是 RTL 仿真(快但只给寄存器/可见节点,内部靠传播)、门级 SDF 仿真(含真实毛刺)或 emulator/原型回注(长软件场景,见仿真器功耗)。
五、SPEF/SDF:物理精度的两个 S
- SPEF:物理设计完成后提取的每根线电阻电容。动态功耗的负载电容、IR-drop 的压降、EM 的电流密度都要用它;没有 SPEF 的功耗数字只算「粗略」。
- SDF:标注到门级网表的延迟,让仿真长出真实毛刺与时序关系——门级功耗仿真必须,RTL 级不用。
- SDC 本身不携带功耗数据,但其中的时钟定义决定了功耗分析的 f,门控时钟的时序豁免/检查也在这里表达。
物理签核的关系:SPEF+电源网格+电流分布→IR-drop/EM 签核(见 IR-Drop/电源网格);SPEF+Liberty+SDF+活动率→功耗签核。
六、一次完整流转(从文件视角)
- 架构写 UPF(域/隔离/保持/状态表),评审冻结。
- RTL 仿真器加载 UPF 跑低功耗验证;普通仿真产出 SAIF/VCD。
- 综合读 RTL+UPF+Liberty+SDC,插特殊单元,结合早期 SAIF 出首版功耗报告(含门控覆盖率)。
- 物理实现后提取 SPEF,用更真实的电容重算功耗、做 IR/EM。
- 门级网表回标 SDF 做门仿,产出门级 SAIF/FSDB,跑 DPA 峰值/平均签核。
- 低功耗结构检查(LP check)对网表+UPF 做最终连接审计,出签收报告。
七、功耗报告怎么读:三张表的基本读法
工具产出的功耗报告(不同工具格式不同,但骨架相通)一般分三层,新人按这个顺序读最快:
- 顶层汇总表:总功耗 = 开关功耗(switching)+ 内部功耗(internal)+ 漏电功耗(leakage),再按动态/静态归类。先看漏电占比:待机类产品漏电超过三成就应回去查高阈值单元使用和 SRAM 保持策略。
- 模块/层次排序表:按层次展开各模块功耗及占比,一眼定位前三号大户。注意它是「层级视角」:父模块数字包含所有子模块,比较时要在同一层级比。
- 网络/单元明细表:可下钻到具体单元和网线,给翻转率、电容、能量。排查单点异常(某根线翻转率异常高常指向上游 bug 或毛刺,见毛刺篇)时用。
读法纪律:先确认报告的前提条件(什么工艺角、什么电压温度、什么 SAIF/向量、是否含线电容 SPEF),脱离前提比较两个数字是报告解读第一事故。报告读法的完整实践见功耗报告怎么读。
八、UPF 与 CPF 的现实协作
工程里偶尔会碰到两套格式并存或转换的情形,记住几点:
- 概念几乎一一对应:电源域、电源网、隔离、保持、电平转换、开关、电源状态表在两边都有,差异主要是命令语法和工具生态;
- 不要手工长期双维护两份意图——必然漂移;以一套为主,另一套由工具/脚本生成,并做结构 diff;
- 读别人的 CPF 时,按「电网→域→规则单元→状态表」四步翻译回脑内模型即可,不必背命令名。
九、文件清单速查:项目目录里看到这些别发懵
| 看到的文件 | 立刻知道 |
|---|---|
.upf/.pf | 功耗意图,低功耗一切的源头,改动要全流程回归 |
.lib/.db | 单元时序功耗数据,换库=所有数字重算 |
.saif | 活动率摘要,问清是 RTL 级还是门级、哪段向量 |
.vcd/.fsdb | 完整波形,体积大,只喂短窗口 |
.spef | 物理寄生,后端精度的标志 |
.sdf | 门延迟,门仿/毛刺功耗必备 |
*lp*report* | 低功耗结构检查报告,跨域违规看它 |
- 误区:UPF 是实现阶段的脚本。 它是从验证到签核共享的设计意图源,写错全流程一起错。
- 误区:
.lib里一个功耗数字用到底。 漏电分状态、分工艺角、分温度;签核必须在规定 PVT 角各算一遍(多工艺角/温度角签核是 #45 待写篇《多角多模签核》的主题)。 - 误区:拿 RTL SAIF 算门级毛刺。 看不到门级延时就没有毛刺活动,深组合模块会被低估。
- 误区:VCD 越大越准,全芯片都喂波形。 数据量会压垮工具;全芯片用 SAIF,关键窗口才用波形。
这一篇在知识体系里的位置
- 上游:低功耗设计流程给工位顺序,UPF 入门给意图语法背景。
- 本片:把各工位之间传递的文件一次对齐。
- 下游:活动率怎么来见翻转率/DPA;签核角见待写篇《多角多模签核》;库与物理背景见逻辑综合/物理设计。
十、最小 UPF 片段的逐行解读
再把第二节的骨架片段与网表实物对应起来,帮助建立「写 UPF 时电路里发生什么」的画面:
create_power_domain不创建任何物理电路,它只是给一组层次路径打上「属于哪个域」的标签——后续所有规则都按这个标签归集;create_supply_net定义逻辑电源网对象,supply port 负责在层次边界把网接进接出,完整设计里顶层网还要连到芯片供电引脚与 PMIC 来的真实轨(系统侧见 PMIC 篇);set_isolation ... -clamp_value 0让工具在域边界例化隔离单元,关电后对外钳 0;选 0 还是 1 取决于对方接口的有效极性,是评审必问项;set_retention ... -retention_power_net VDD_RET让工具把域内被点名的普通触发器换成带保持功能的版本,其保持供电脚接常开网,保存/恢复控制脚交给电源管理 FSM;create_power_switch在主轨与开关轨之间例化 header 晶体管组,涌流控制(分段/链状使能)与其连接方式有关;add_power_state写电源状态表(ON/RET/OFF 的合法供电组合与迁移),它既是仿真器判定 X/钳位的依据,也是低功耗验证覆盖率模型的状态空间。
新手常问:这些规则单元为什么不让综合自由插?因为隔离放在关电侧还是常开侧、保持控制用哪路电源与时钟、转换器放域内还是域外,都决定掉电时电路是否正确——必须由人用意图显式管辖,工具只负责无遗漏地落地。

十一、一个常见误区:把格式文件当文档读
新人第一次打开几 MB 的 .lib 或几千行 SAIF 容易被吓到,记住这些文件是给工具消费的,人只需要会定位片段:查某个单元漏电,在 .lib 里搜单元名再看 leakage_power 块;查某节点活动率,在 SAIF 里搜层次路径读 TC(toggle count)和 SP(static probability);查 UPF 意图则只需通读人写的顶层 .upf(通常只有几百行),不要去读工具展开后的临时文件。
另一个实务点是版本归档:一次功耗签核必须能复现,因此归档清单至少包括 RTL/网表版本、UPF 版本、库版本与工艺角、SDC/SPEF/SDF 文件、活动率文件及产生它的仿真种子、工具版本与命令脚本。少了其中任何一项,几个月后被问「这个 12.3mW 怎么来的」就无法重建。低功耗数字本质上是「前提+输入+工具」的函数,格式文件就是这个函数的全部参数(流程总览见低功耗设计流程)。
十二、与芯片设计其他格式的边界
容易混淆的几对概念顺手分清:SDC 描述「时间要求」,SDF 携带「已算出的延迟」——前者是人写的约束、后者是工具产出的结果;SPEF 是「无源寄生」(电阻电容网络),SPICE 子电路模型才包含有源器件;SAIF 只有统计量(小、快、适合全芯片),VCD/FSDB 有时刻波形(大、慢、适合关键窗口的 DPA 与调试)。功耗工程师不需要手写 SPEF 或 SDF,但必须知道何时该把它们要进分析输入——一个只用线负载模型、没有 SPEF 的「签核」功耗数,在深亚微米以下不具备签收资格。同理,评审报告时若发现对方拿 RTL 级 SAIF 喂门级网表、却声称已含毛刺,应当直接退回,这是比小数点误差严重得多的方法论错误,会系统性低估所有深组合模块。
一句话收口:UPF/CPF 说「我想要什么电网」,Liberty 说「每个开关值多少钱」,SPEF/SDF 说「物理世界长什么样」,SAIF/VCD 说「日子过得多热闹」,报告说「这单电费你签不签」。
总结
低功耗流程里的文件各司其职:UPF/CPF 用一份电源意图(域、隔离、保持、电平转换、开关、PST)贯通仿真到签核全流程,Liberty .lib 提供漏电、内部功耗和特殊单元模型,SPEF/SDF 提供物理寄生与门延时,SAIF/VCD/FSDB 分别承载紧凑活动率统计与完整波形;红线是不能用 RTL 级 SAIF 冒充门级毛刺、不能全芯片喂巨大 VCD,且每次签核必须把 RTL、UPF、库角、活动向量和工具版本完整归档才可复现。