工具报出的power包含三部分:internal power,switch power,leakage power。
switch power是指wire上的翻转功耗。
internal power是指cell本身的功耗,其包含短路功耗和翻转功耗(?);
有的lib里面的internal只包含短路电流功耗,有的lib里面包含了短路电流功耗和cell的翻转功耗。
ptpx中有这样一个命令 power_table_include_switching_power 默认情况是true就是说包含了cell内部的翻转功耗。详细可见ptpx ug 区别的方法文中如是说:
“The best way of finding out the formula used in the characterization is to consult the library
vendor. A workaround is to inspect the falling power tables. If most of them have negative
numbers, it is likely that formulas 1 and 2 are used in characterization.”
以上1和2是说在产生lib时所使用的参数模型:
下图是library中一个寄存器Q pin 的internal_power table, 表中该pin 的internal power 大多都是负值。其实library 中的internal_power 不是功率,而是热量,单位是焦耳不是瓦特.
原因:
Internal power 为负值是由Liberate K 库的建模方式决定的,Liberate K 库的时候,对internal power 的建模有三种模式,由变量 pin_based_power 的值控制。
pin_based_power=1, Default值,monitor Vdd and Gnd, 这种建模方式,上升『热量』跟下降『热量』分别是上升/下降的实测『热量』减去1/2*CVout^2, 在该模式下,上升『热量』永远都是正值,因为上升过程对电容进行充电,负载看到的Vout 不可能超过Vdd; 但是下降功耗可能为负,因为有时一些电流会由于耦合电容而流回电源,导致输出节点的电压过冲,在输出电压开始下降之前Vout超过Vdd, 从而下降『热量』为负。
pin_based_power=0, monitor Vdd only, 这种建模方式,上升『热量』是实测上升『热量』减去负载消耗的『热量』CVout^2, 下降『热量』就是实测热量。所以该模式下,上升『热量』可能为负,但下降『热量』永远为正。
pin_based_power=2, also monitor current on side inputs, 这种建模方式跟第一种建模方式情况一致,只是在K 库的时候考虑了输入pin 的状态。
不论哪种建模方式,虽然上升『热量』或下降『热量』有可能为负,但是总的『热量』(Edyn,fall + Edyn,rise ) 肯定是正的。