你可能不知道的leakage功耗計算

本文總結工具中進行leakage功耗計算的通常方法。微信

背景

leakage power在深亞微米下佔比愈來愈高。在不少狀況下,leakage power可能會佔到芯片總功耗的30~50%。工具

即便在standby模式之下,leakage power也沒法減小。圖片

最有效的方法是關閉電源,可是並不是全部應用場合都適用,由於啓動的時間相對較長,也須要額外的面積來放置power switch。it

以前我曾寫過文章介紹leakage power的重要性。io

這裏稍做回顧。原理

動態功耗能夠經過降頻來調整。例如系統中主控芯片若是發現溫度太高,能夠下降頻率,來減小散熱壓力。gc

並且動態功耗與溫度無關,而是與頻率,負載,電壓相關。方法

可是leakage則相反,和頻率無關,而與溫度成指數關係。im

Leakage power depends exponentially on temperature

想象一下,若是芯片中leakage佔比較高的話,一旦某種緣由,溫度升高,可能leakage增大數倍。總結

而leakage的增大,進一步致使芯片溫度的升高。

從而造成一個"溫度-功耗-溫度"的正反饋,致使芯片因過熱而沒法工做,甚至燒燬芯片。

leakage的計算

言歸正傳。

咱們得到芯片的leakage power很是容易,可能只是一個命令。可是原理,可能並非你想的那麼簡單。

以標準單元爲例,leakage和標準單元自己的狀態相關。

當stdcell有多個輸入的時候,可能產生幾十種狀態,而每種狀態leakage也是不一樣的。

stdcell lib中的leakage

這就涉及到了當咱們進行leakage計算的時候,如何選擇這些值。

以ICC2爲例,

leakage power的計算方式分爲三種

  • average

  • unconditional

  • state

當以average模式進行計算時,工具會將全部狀態的leakage取平均值。

當以unconditional模式進行計算時,工具會在lib中找到一個跟cell的狀態無關的leakage值來進行功耗計算。

mark

當以state模式進行計算時,則須要工具來判斷cell所處的狀態。某些狀態能夠經過set_case_analysis來推斷。若是沒有case語句,則按照每種狀態出現的可能性相同來加權平均,最終值可能與average相同。

那麼若是lib中沒有leakage值怎麼辦?

你能夠看一下lib的開頭部分,還有個default_cell_leakage_power

若是用這個值產生的report,你有什麼感想?

end

leakage計算中有不少假設和trade off,但這並不妨礙咱們用這些值進行參考。

若是瞭解char-lib過程,你會發現,僅僅如何把total power分爲dynamic power和leakage power,也並非件容易的事情。

工程中,完成比完美更重要,況且完美並不存在。

掃碼關注我