2010年8月12日
比较两种电路的功耗,一种常用的做法是STA跑出sdf文件,vcs跑出后仿波形,再分别用primepower工具进行功耗分析。对于简单的门级电路,这样的流程显得复杂低效,这时手算功耗可能会更加有用。
手算功耗方法
1. internal power。对于每个pin,根据跳变的transition time在库文件中找到每次跳变消耗的能量。对于输出pin,还要求有其output_load 。同时计算其跳变次数,累加得到跳变消耗的短路能量。
2. switch power。对于每个输入pin,计算其跳变次数,每次跳变消耗能量为:C×V×V,C = fanout_load ×C_wire_load + Cpin
其中: |
fanout_load为该pin的等效输入fanout |
C_wire_load为线负载模型电容系数 |
Cpin为该pin的输入电容 |
3. 前两者的能量累加除以总时间即为动态功耗;除以transition time则可估算峰值功耗。
4. leakage功耗等于每个cell的leakage功耗累加,需要注意的是cell的输入输出不同,leakage功耗也会略有差别。
手算功耗示例
下面是一个常见电路的例子:

假设En与输入保持不变 ClkSrc频率为1MHz。
5. Internal power
电平跳变的点只有Reg的CP端,查lib文件知一个周期CP端消耗的internal能量为0.015+0.022pJ 。(这里会因为没有准确的transition time而有很小的误差)。因此,internal功耗为0.037pJ/1uS = 37nW 。
6. Switch power
同样电平跳变的点只有Reg的CP端,CP端电容为0.002594pf,fanout为1,对应线负载电容为0.0061pf 。库电压为0.9V 。因此switch能量为(0.002594+0.0061 )×0.9 ×0.9 = 0.007pJ,除以周期功率为7nW 。
注意:switch power只在管脚的上跳沿计算,持续时间也为transition time 。
7. 峰值功耗
本电路transition time约为0.6ns,因此下跳沿峰值功耗为 0.022pJ/0.6ns = 36.8uW 。上跳沿的峰值功耗为(0.015+0.007 )/0.6ns = 36.8uW 。
8. Leakage power
MUX器件的leakage加上Reg的leakage:0.03738+0.09871 = 0.136nW 。
与PrimePower结果对比
序号 |
分类 |
总功耗 |
internal |
switch |
上跳沿 |
下跳沿 |
泄漏功耗 |
1 |
pp工具 |
37.66 |
37.51 |
0 |
25.2 |
37.3 |
0.1477 |
2 |
手算结果 |
44 |
37 |
7.042 |
36.8 |
36.8 |
0.136 |
计算结果与PP跑出来结果基本相同,除了两处区别:
1、结果中没有包含输入port的switch power。因此导致总功耗、switch功耗、上跳沿功耗均比手算结果小了 7nW 。这是因为此switch行为源自前级输入,对工具理解该switch功耗实际为前级消耗,故没有算在此电路中,报的total power也不会包含此处功耗。如果需要评估此类功耗,可以用report_power ‐input_net来单独报出。

结果如上,可见7.042nW与估算的7nW也十分接近。
2、泄漏功耗略有区别,这是因为估算时没有考虑MUX和Reg的输入输出状态。