EDA工具里的功耗分析方法(上)
时间:2025-11-17 23:00:48
手机看文章
扫描二维码
随时随地手机看文章
在当下的芯片设计中,工艺越先进,芯片规模越大,功耗就越发敏感,降低功耗的诉求越来越紧迫。在小编过往的文章中,有过低功耗设计实现的一些讨论,具体猛戳如下链接:浅谈芯片低功耗的设计实现(上)浅谈芯片低功耗的设计实现(下)
优化一定是建立在计算和数据的基础上的,那么对于EDA而言,功耗是怎么算出来的呢?今天,就让小编带领大家一起从EDA的视角,来洞察功耗计算的零零总总。
开篇之前,先复习一下功耗的计算公式:
注解


注释:SDPD是一种瞬态值。在芯片常规的工作中,某一时刻,芯片是某一种固定的SDPD,所以一个芯片的实际工作状态(功耗)是由各种SDPD按照出现的比率描述的一个完备值(各种SDPD出现概率总和是100%)
据上,器件的功耗的相关性可以用如下的表格来归类
EDA工具提供了相应的信息和抽取方式来拟合library的描述。以常用的DC工具里的report_power命令为例,工具会罗列出下面的功耗信息:
表头解析:
DC也会把器件分类进行功耗报告打印:
对于器件的分类方法见下表:
通常,report_power默认行为是打印类似上述的芯片功耗的总和结果,这些都是每一个器件单独功耗的合计值,当然,也可以使用一些选项打印出某一个cell或者net或的功耗细节。
但是通常不太会这么做,因为去看每一个cell或者net的功耗意义并不很大,反而是找到芯片里边的最差功耗的cell或者net会比较有趣(设计里的功耗大户)。
譬如关心cell的动态功耗,这时可以使用下列命令来罗列:

如果用户对功耗最大的cell比较感兴趣,可以使用-verbose的选项
罗列出更多的细节:

类似的也可以针对net类型进行sort、verbose的报告。

对于internal power,其在在library里的描述是pin based的
在report_power命令里边,internal power被整合为cell类型,但是本质上就是所有pin在SDPD下的总和表达。为了方便表达,工具使用了上述三种对象对功耗进行了分拆,总结如下
可以看出,EDA工具为了简化对功耗的核算,使用了归一化的操作,这样可以大大减少报告数量和歧义,这个对library的诉求也是得到了一致限于篇幅。上文提到的SDPD、toggle rate和state probability等和功耗计算细节相关的属于,放在下一篇文章中讨论,敬请期待。
优化一定是建立在计算和数据的基础上的,那么对于EDA而言,功耗是怎么算出来的呢?今天,就让小编带领大家一起从EDA的视角,来洞察功耗计算的零零总总。
开篇之前,先复习一下功耗的计算公式:
注解
EDA对功耗评估的分类
基于上述功耗的计算理论,为了方便计算,EDA工具对功耗的评估分为如下几类基于library非功耗的信息,计算功耗

基于SDPD的功耗查看
leakage power可以基于SDPD,直接查看library获取功耗- 基于器件输入状态进行功耗查看:器件状态决断SDPD (Status Dependency Path Dependency)
- library同时提供默认的leakage power的功耗信息
基于SDPD和pin的属性查找表
internal power可以基于SDPD和input/outputl 的RC属性查找表来获取- 基于SDPD的数据查询
- input pin:基于input transiton的查找表
- output pin:基于input transiton和output cap的查找表
- cel的internal power是所有pin在SDPD下的总和

注释:SDPD是一种瞬态值。在芯片常规的工作中,某一时刻,芯片是某一种固定的SDPD,所以一个芯片的实际工作状态(功耗)是由各种SDPD按照出现的比率描述的一个完备值(各种SDPD出现概率总和是100%)据上,器件的功耗的相关性可以用如下的表格来归类
EDA的功耗计算示例
EDA工具提供了相应的信息和抽取方式来拟合library的描述。以常用的DC工具里的report_power命令为例,工具会罗列出下面的功耗信息:

DC也会把器件分类进行功耗报告打印:

对于器件的分类方法见下表:
通常,report_power默认行为是打印类似上述的芯片功耗的总和结果,这些都是每一个器件单独功耗的合计值,当然,也可以使用一些选项打印出某一个cell或者net或的功耗细节。但是通常不太会这么做,因为去看每一个cell或者net的功耗意义并不很大,反而是找到芯片里边的最差功耗的cell或者net会比较有趣(设计里的功耗大户)。
譬如关心cell的动态功耗,这时可以使用下列命令来罗列:

如果用户对功耗最大的cell比较感兴趣,可以使用-verbose的选项
罗列出更多的细节:

类似的也可以针对net类型进行sort、verbose的报告。

cell、net和pin的功耗归一化:
从上文描述中可以看到,net会描述switching power,cell对标的则是internla power和leakage power。但是工具在产生报告的时候,无论是net还是cell都会把三类功耗打印完全,这里是使用output pin对应的net来做的cell、net归一化处理
对于internal power,其在在library里的描述是pin based的
在report_power命令里边,internal power被整合为cell类型,但是本质上就是所有pin在SDPD下的总和表达。为了方便表达,工具使用了上述三种对象对功耗进行了分拆,总结如下
可以看出,EDA工具为了简化对功耗的核算,使用了归一化的操作,这样可以大大减少报告数量和歧义,这个对library的诉求也是得到了一致限于篇幅。上文提到的SDPD、toggle rate和state probability等和功耗计算细节相关的属于,放在下一篇文章中讨论,敬请期待。
本章词汇





