数字电路到了一定规模,把数字电路网表转成原理图,通过跑spectre/ultramsim仿真来获得功耗就变得mission impossible了。 新的运算工具应运而生。voltus的前生是eps (encounter power system),是一款非常优秀的功耗分析工具。
数字电路功耗包括下面三个部分。
1. switching power
这部分功耗来自各个标准元之间的连线interconnect的充放电。描述这部分功耗的经典公式是。这里f代表频率,a代表average switching activity。
从这个经典公式可以衍生出有趣的问题?如何降低switching power呢?通常cl在前端设计中无法控制。电路的f是设计指标决定的,也改不了。前端设计能改变的只有a。这时前端设计中引入clock gating就很有必要了。 当然,有些使用场景可以降低v,但实现起来有些困难的,需要供电电路能配合,需要库在不同电压下characterize。总体来说,降低a是前端设计最直接最有效的降低switching power的方法。
2. internal power
这部分是标准元内部由switching造成的功耗。 工具根据.lib里的数据计算这部分功耗。 下面是一个and gate的例子。
输入a变化引起的功耗。工具根据输入a的transition time查询rise_power, fall_power 表。这个例子简化了一些。通常这两个表中的数据多几个,工具插值计算更精确一些。
输出y的变化可以是输入a变化引起的,也可以是输入b变化引起的。y的internal power相对复杂一些。 这里rise_power,fall_power的表是二维的。工具根据相关输入的input_transition_time,y输出的total_output_capacitance来查询这几个表。
标准元的internal power本质上依然是电路中各个节点的switching引起的。 设计中尽量降低各个节点的switching可以有效地降低相联标准元地internal power。
3. leakage power
这部分就是常说的漏电。 即使电路处于静止状态,没有时钟,没有任何switching,这部分功耗依然存在。 在低功耗待机状态下,如何降低漏电功耗是设计挑战。
工具计算漏电功耗也是根据.lib中的数据。下面是一个and gate例子。 这里可以看到leakage power是和a,b输入的状态有关的。a,b同时为高电平时leakage power最大,43.7371。如果a,b电平无法确定,工具取平均值,即第二个框里的33.4556。
voltus虽然有几个工作模式,但各个模式下功耗的算法依然遵循上面分的三类。 各个模式的区别只是设置而已。
voltus static power
voltus static power 本质上算的是电路的平均功耗。
voltus static power 要求用户提供各个输入的activity。工具根据用户提供的activity,加上sdc文件内时钟的定义,就可以推算出内部各个节点的activity,再配合spef文件内各个连线的rc,就可以算出这个电路的switching power。同时,工具也知道内部每个标准元的输入输出特性,各个标准元的internal power也就可以算出来了。
voltus static power理论上可以算得蛮准的,但实际操作上是有陷阱的。如果用户提供的activity不准,计算的结果就偏离了。很多时候,默认的activity 0.1可能过于悲观,造成static power 也过于悲观。
voltus dynamic power
voltus dynamic power本质上是计算瞬时峰值功耗,分两种方法,vectorless 或 vector-driven。 vectorless 估算每个节点的activity,意义不大,这里就略过了。 vector-driven采用vcd标注内部各个节点的activity。vcd来自于后仿。vcd中每个节点的activity和实际电路时一一对应的。显然,使用vcd的dynamic power可以算得很准。 通常vcd文件可以记录整个电路完整的运行过程。 但对于峰值功耗,通常只需要取vcd中的一小段时间。 这里需要注意的是,指定的这一小段时间必须对应的是activity最集中的时间段。 如果自己是电路的设计者,应该知道哪一段时间activity最多。另一个方法是先取比较长的一段时间跑一次dynamic power,在voltus里调用simvision打印出vdd 电流,根据vdd电流波形选择峰值时间段。随后在这个缩短的时间段再跑一下dynamic power,生成power database,供后续的ir drop分析使用。
这里引申出一个有趣的问题。voltus dynamic power能否像s家的ptpx一样用来算电路的功耗呢?当然是可以的。功耗基本的算法就是那三类,本质上是一样的。voltus dynamic power里vcd时间段取得和ptpx功耗分析vcd时间段一样,两者计算出来的结果在2-3%以内。 个人认为voltus dynamic power设置对了,voltus static power就没必要了,ptpx也可以替代了。 这样做有个小小的缺陷。通常算average power需要取比较长的时间段。这样跑voltus dynamic power 生成的power database非常庞大。后续的voltus ir如果还用这个庞大的power database,基本就跑不动了。 解决方法也很简单。 就像上面提到的,取缩短的时间段再跑一次dynamic power,生成对应峰值电流的power database,随后用这个小很多的power database跑ir。
英特尔存储技术新突破 耗电将降低至少25倍
运动控制器的通信功能有哪些呢?
解析程序员为什么需要理解 CPU?
中国安防行业企业排名
一文详解FC和FB的区别与用法
简单的Voltus功耗分析
矢量控制器和正弦波控制器的区别
电池修复技术—短路故障通过电压可以解决吗
全球OLED显示面板出货量占比持续提高,国内OLED产线建设加快
苹果公司正在开发MagSafe电池组
浅议通信网络优化解决方案
NSA发布IPSec虚拟专用网络安全指南,预先配置的加密套件和IPSec策略
e络盟为亚太区提供备受赞誉的Harwin Gecko G125连接器
苹果多米诺骨牌倒下 代工厂的消亡史
百度或为一家独立的人工智能芯片公司融资
澳洲创企UCOT通过基于区块链的溯源技术打击假货 获400万美元融资
protel PCB设计使用手册
高压电源转换的电源效率?影响高压电源转换效率的主要因素
关于“数字化转型”对IT产业转型的介绍和应用
关于集电环线捲固定不动方式的详细介绍