靜態功耗 計算


 

 

大概在遙遠的90nm之前,leakage power在library里確實是被描述成一個常值的。但從90nm開始,為了更加精確,library里的leakage power不再是個常值了,而是被模擬成一個輸入狀態的函數。所以基礎還是library,在一個library里跟leakage相關的變量大致有:

library(my_lib) {

leakage_power_unit :"1nW";

default_leakage_power_density :0.0;

default_cell_leakage_power :0.0;

cell_leakage_power :53057.365200; 

leakage_power(){

when :"!A & !B & !CI";

value: ...;

power_level:"VDD";}

}

  • Leakage_power_unit:標示leakage power的單位,如果所有庫里都沒有該變量的定義,每個工具都會有自己默認的單位,如Genus默認用nW。

 

  • cell_leakage_power:標示固定的leakage power值,如果library里沒有該變量的定義,或者該變量是個負值,工具會用default_cell_leakage_power的值,如果default_cell_leakage_power也沒有指定,則用default_leakage_power_density的值乘以該cell的面積來計算得出一個leakage值,如果這三個變量都沒有定義,則leakage的值為0。

 

  • leakage_power(){}:這一部分就是用來定義跟輸入狀態相關的leakage power,其中"when"用於定義輸入的狀態,如果某種狀態沒有定義,則用cell_leakage_power定義的值來計算leakage;power_level用於多電壓cell中指定是跟哪個電壓相關的leakage power。

 

1.如果library里既沒有定義cell_leakage_power也沒有定義default_cell_leakage_power而只定義了default_leakage_power_density,則:

cell_leakage_power= area *default_leakage_power_density

 

 2.

 

 

拿AND2X2這個cell為例,它的輸入總共有四種組合狀態,在lib中只定義了三種狀態,同時還定義了cell_leakage_power,所以對於沒定義的狀態,在計算時用cell_leakage_power指定的值。假設,A處在狀態"1"的概率是0.6,B處在狀態"1"的概率是0.3,則該cell的leakge power為:

prob(!A) x prob(!B) x yy11+ prob(!A) x prob(B) x yy22 +prob(A) x prob(!B) x yy33 +prob(A) x prob(B) x YYYY=0.4 x 0.7 x yy11 +0.4 x 0.3 x yy22 + 0.6 x 0.7 x yy33 +0.6 x 0.3 x YYYY

 

 

在實際項目中,如果沒有讀入activity的文件,不同的工具都會有根據默認或指定的probability來計算每個cell輸入pin的probability,不同工具也會有相應的命令來report出當前的probability是多少,如Genus可以用命令:report instance –power,也可以通過以下attribute得到相關信息:

lp_probability_type

lp_default_probability

lp_computed_probability

 

不成熟的小建議:找一個cell在不同的工具里分別去報它的leakage,再根據本文陳述的內容,去觀摩工具的行為,這一點就會盡在你的掌握之中了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM