芯片中的功耗分为两大类:
•静态功耗 •动态功耗
静态功耗是指逻辑门在不切换时消耗的功耗,其主要由源极到漏极亚阈值泄漏电流引起的,即逻辑门未完全关闭。因此,静态功耗通常称为泄漏功耗。
动态功耗是电路进行切换时消耗的功耗,其主要是由于电路切换过程中需要对内部电容(短路电流,内部功耗)和外部负载电容(开关功耗)进行充放电。所以,动态功耗也会随着外部负载电容的增加而增加。
EDA工具使用工艺库中建模的功耗信息来计算设计的功耗。
Leakage Power Calculation
EDA工具通过计算设计中所有Cell的泄露功耗的总和作为设计的泄露功耗,如以下公式所示:
工艺库通过default\_cell\_leakage\_power为库中的所有Cell提供同样大小的泄漏功耗属性,也可以通过cell\_leakage\_power每个Cell提供各自的泄漏功耗属性。
如果缺失cell\_leakage\_power属性,则该Cell的泄漏功耗属性设置为
default\_cell\_leakage\_power。
对于仿真时间600,假设Cell处于A&B状态占33%,其它状态占67%。则总泄露功耗为
(.33* .2nW) + (.67*.5nW)=.4nW
静态功耗与阈值电压呈指数关系。为了解决低功耗设计问题,很多Foundry提供了多阈值电压工艺库。每种逻辑门都有两个或更多不同的阈值电压(Vth)。设计者根据设计需求选用不用阈值电压的Cell,取得性能和功耗的折中。
对于多阈值电压工艺库,也会有更多的属性(Attributes)支持。
Internal Power Calculation
在计算短路电流引起的内部功耗时,EDA工具需要索引工艺库中的二维查找表,其中的input transition time替换为加权平均input transition time
Internal Power的状态/路径依赖性
内部功耗通常取决于Cell的状态(state)和路径(path)。
上面的设计具有多个输入引脚
输入A和输入D均可导致Z处的输出翻转。但是,输入D仅影响Z处的翻转,而输入A会影响所有3个Cell输出的翻转,即由A处的输入翻转产生的内部功耗要比由输入D产生的内部功耗大。
也就是说,针对不同的输入翻转,Cell可能就有不同的内部功耗二维查找表。这在工艺库建模时,需要增加related\_pin属性以解决这个问题。这样EDA工具就可以基于不同输入信号翻转的百分比贡献,访问各自的内部功耗二维查找表来计算设计总的内部功耗。
还有一个展示内部功耗状态依赖性的示例是RAM。 RAM的内部功耗取决于它是处于读取还是写入状态。在工艺库中,针对读取和写入都会有各自的内部功耗模型。
和时序模型一样,内部功耗除了和状态和路径相关,还有信号翻转相关,即信号上升(rise)和下降(fall)也具有不同的内部功耗模型值。
Switching Power Calculation
下面是开关功耗的计算公式,其和电源电压、负载电容和翻转率相关。
最终的动态功耗为内部功耗和开关功耗之和,即
Power consumption
= Static power+Dynamic power
= Static power + Switching power + Internal power
本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/4TzyFawo8uAseDZkDgVUgw
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏