一、概述
芯片的整体功耗很难通过简单的电流,电压或者电阻值的的相乘来计算。其原因在于,由于芯片作为具有复杂功能的器件,其功耗会根据其不同时段的不同行为,不同的外部条件而发生很大的变化。
1.1 功耗的分类
数字IC芯片的功耗分为静态功耗和动态功耗。现代数字IC基本采用CMOS晶体管,它在稳定工作状态时几乎没有功耗,即静态功耗几乎为0,因此对CMOS电路功耗起支配作用的是由充电和放电电容引起的动态功耗。
1.2 芯片的翻转率
参考文章:SOC设计中一种提取翻转率用于IR-drop分析的方法
翻转率表示单位时间里信号(包括时钟,数据等信号)的翻转次数。通常由前端工程师在pre-layout阶段释放给后端工程师用来进行PG网络,IR-drop分析的输入值。
可使用PTPX提取设计的翻转率,详细参见下文4.1节。
二、 芯片的动态功耗
2.1 功耗来源
芯片在工作工程中,晶体管处于跳变状态所产生的功耗,包括动态开关电流引起的动态开关功耗(或跳变功耗),以及短路电流引起的短路功耗两部分。因此对于动态功耗,所占最大比例的就是clock信号。
动态功耗由于和芯片的功能息息相关,因此在计算的时候会引入翻转率(toggle rate)的概念。翻转率是衡量单位时间内device上信号翻转时间所占的比率。在实际计算dynamic功耗的时候,又会分成两个部分。
一部分为标准单元内部的dynamic功耗,又名Internal Power,这部分的计算是嵌入liberty库文件内部,通过标准单元的input transition和output load来查表得到的;
另一部分为互连线(net)上的开关功耗,这部分的计算通过将所有net上每个翻转周期的功耗乘以其翻转率并相加得到。翻转率通过某种固定格式的文件传入EDA工具,比较常用的格式有SAIF(Switching Activity Interchange Format)、VCD(Value Change Dump)以及FSDB(Fast Signal Database)文件。
2.1.1 开关功耗
输出电压在跳变过程中,对负载电容充放电时会有一部分能量被损耗在PMOS和NMOS管中,该部分损耗即为开关功耗。
如下式为计算一个CMOS的开关功耗公式
f为开关频率,P为开关因子,即该门的输出段引起0 -> 1跳变事件的概率。
P
d
y
n
=
C
L
V
D
D
2
f
P
P_{dyn} = C_L V_{DD}^2 f P
Pdyn=CLVDD2fP
2.1.2 internal Power
贡献internal power的因素应该分为两个因素:
一是信号翻转时由于NMOS和PMOS同时导通而产生的短暂但巨大的贯穿电流,在开关的一小段时间内,PMOS和NMOS存在都导通的状态,导致VDD直接与GND相连并产生短路电流和功耗。
二是给内部和外部负载充放电所消耗的能量。
参考链接:低功耗设计基础:深入理解Internal Power
三、 芯片的静态功耗
四、EDA工具进行功耗分析
4.1 PrimeTime PX
PrimeTime是synopsys开发的一款专门的静态时序分析软件,PrimeTime PX是集成在软件中的一个工具,可以用来对Design Compilier(DC)综合后的V文件进行功耗分析。PrimeTime的一个特点就是它对功耗的分析比DC给出的功耗信息要精确得多,所以一般采用PTPX进行功耗分析。
输入文件
- 网表文件
- 静态时序分析的sdc文件
- 带功耗信息的db文件
- RTL仿真过程vcd文件
Prime Time PX的翻转率提取
report
功耗曲线
结果分析
PrimeTime PX(Power Analysis) userguide阅读笔记