本公众号【读芯树:duxinshu_PD】主要介绍数字集成电路物理设计相关知识,才疏学浅,如有错误,欢迎指正交流学习。 这是集成电路物理设计的第四个系列【Power】的第四篇文章,本篇文章主要介绍Internal Power相关内容: 01 — 什么是Internal Power? Internal Power: cell内部消耗的动态功耗,包括internal switching power和short-circuit power,还包括hidden power。 Internal Switching Power: cell内部节点的充放电,由input transition time和output load决定。 Short-Circuit Power: cell在翻转过程中,瞬态同时开启PMOS和NMOS产生的功耗。 Hidden Power: 当输入信号发生翻转,但输出信号没有翻转时产生的功耗,只与input transition time有关。时序逻辑器件一般都会存在hidden power。 Internal Power一般可以通过.lib/.db得到,其大小和are/pin上的有效toggle, 输入pin的transition以及输出负载大小有关系。internal switching power还与cell type有关系。 02 — 如何计算Internal Power? internal power的大小依赖于cell的state和path。 internal power一般是通过input transition和output load capacitance的二维查找表得到,在先进工艺库中,为提高精度会使用三维查找表:input slew, output load capacitance和second output load capacitance。 与cell的input pin相关的power只与input transition time相关: ![]() ![]() 与cell的output pin相关的power与input transition time和output net capacitance相关 ![]() ![]() 一个cell的power会包含两部分:rise transition power和fall transition power。 Example: 以AND2D1为例,lib中定义了A1 pin到Z pin的内部功耗,设A1的transition为18ps, Z的load为0.336pf,A1的toggle rate为0.5, 通过插值计算得到18ps&0.336pf对应的rise_power和fall_power rise_power=0.0061 fall_power=0.0059 cell_internal_power = 0.5*0.0061 + 0.5*0.0059 ![]() 03 — 为何有时.lib中的Internal Power为负值? Internal Power的负值是由不同的K-lib建模方式决定的。 一般有三种建模方式(liberate):pin_based_power=0, pin_based_power=1, pin_based_power=2。 pin_based_power = 0,只对positive supply node建模,不适用于先进power模型,如CCSP/ECSMP。Rise Energy为实测值减去C*V*V,可能为负值,Fall Energey为实测值,一定为正值。internal_rise_ennergy = dynamic_rise_energy_measured - C*V*Vinternal_fall_ennergy = dynamic_fall_energy_measured pin_based_power = 1 (default)对所有的power pin(VDD&VSS)进行建模,Rise Energy为实测值减去0.5*C*V*V,一般为正值,Fall Energey为实测值减去0.5*C*V*V,可能为负值。internal_rise_ennergy = dynamic_rise_energy_measured - 0.5*C*V*Vinternal_fall_ennergy = dynamic_fall_energy_measured - 0.5*C*V*V pin_based_power = 2,对所有的power pin进行建模,同时考虑了输入pin的状态。Rise Energy为正值,Fall Energey可能为负值。internal_rise_ennergy = dynamic_rise_energy_measured - 0.5*C*V*Vinternal_fall_ennergy = dynamic_fall_energy_measured - 0.5*C*V*V 无论K-lib是哪种模型,总的能量 > 0rise_internal_power = rise_internal_energy * rise_toggle_ratefall_internal_power = fall_internal_energy * fall_toggle_rateTotal_internal_energy = dyanmic_rise_energy_measured + dynamic_fall_energy_measured - C*V*V ![]() 04 — 参考文献 1,Synopsys Solvnet 2,Liberate Useguide 3,Techfile library |
|