數字後端基礎之:晶元的整體功耗是如何計算出來的?
本文首發於知乎專欄【數字IC後端設計工程師修鍊之路】,作者閻浮提。轉載請事先聯繫。
功耗是衡量一款晶元優劣的重要指標之一。在實際的晶元後端設計中,功耗究竟是如何計算的呢?
功耗本質上就是電學術語中的功率,不同於一般簡單的電學器件,晶元的整體功耗很難通過簡單的電流,電壓或者電阻值的的相乘來計算。其原因在於,由於晶元作為具有複雜功能的器件,其功耗會根據其不同時段的不同行為,不同的外部條件而發生很大的變化。
在實際設計中,一般會選取一些特定的條件,並輔以特定的功能設定來計算晶元的功耗。
那麼,晶元的整體功耗都有哪些組成部分呢?最根本的組成部分有兩個,即靜態功耗和動態功耗。
1. 靜態功耗(Static Power),又稱漏電流功耗(Leakage Power)。其原理請參見下圖:
上圖中紅色箭頭表明了在通電狀態下PMOS內主要的泄露電流及其走向,意即:
泄漏電流(Leakage Current) = 漏極->N-Well + Gate->N-Well + 源極->漏極
泄露電流存在的原因在於,MOS管中的多種摻雜區形成導電區域,同時這些區域會組成多個PN節,從而在通電後形成一系列微小的電流。
儘管在現今晶元的工作電壓已經很低的前提下,每個MOS管的漏電流很小,但由於每顆晶元中集成的晶體管至多幾億甚至幾十億,積少成多,導致晶元的整體leakage power變得越來越恐怖。
在後端設計中,由於每個標準單元(standard cell)的leakage都集成在其liberty庫文件(.lib)中,因此計算leakage power只需在制定條件下將design中所有的標準單元(包括各種Macro)的leakage值相加即可。目前所有的主流PR工具對此都有支持。需要指出的是,由於一個標準單元的leakage power和其面積成正比,因此在實際後端設計的各個階段,尤其是low power設計中,一般會重點關注晶元中邏輯門的面積變化並以此快速推斷design的leakage功耗變化。
2. 動態功耗(Dynamic Power),主要是由於晶元中的寄生RC電路的充放電引起的。換言之,當晶元中的電路出現任何信號翻轉,都將會產生dynamic power,其中所佔最大比例的就是clock信號的翻轉。下圖展示了一個反相器(inverter)在信號翻轉時的簡單模型:
當我們把反相器簡化成一個簡單的rc電路時,就可以清晰的看清充放電時的電流走向。當晶元處於工作狀態時,每一個工作中的標準單元都會隨著clock or/and data的翻轉而不斷重複上述過程,從而產生大量的動態功耗。
在實際後端設計時,動態功耗由於和晶元的功能息息相關,因此在計算的時候會引入翻轉率(toggle rate)的概念。翻轉率是衡量單位時間內device上信號翻轉時間所佔的比率。在實際計算dynamic功耗的時候,又會分成兩個部分。一部分為標準單元內部的dynamic功耗,又名Internal Power,這部分的計算是嵌入liberty庫文件內部,通過標準單元的input transition和output load來查表得到的;另一部分為互連線(net)上的dynamic功耗,這部分的計算通過將所有net上每個翻轉周期的功耗乘以其翻轉率並相加得到。反轉率通過某種固定格式的文件傳入EDA工具,比較常用的格式有SAIF(Switching Activity Interchange Format)、VCD(Value Change Dump)以及FSDB(Fast Signal Database)文件。
目前主流的PR工具均支持此類用法,但是signoff時仍然需要比較專業的power計算工具如Synopsys PrimeTime PX或Cadence Palladium等。
至此,我們基本了解了一顆晶元整體功耗的計算方法。而在現今十分重要的低功耗設計中,所有的手法都是從降低以上兩個方面(Static, Dynamic)的功耗著手的:
比如應用多個power domain以便在晶元的某一部分功能不用的時候將其斷電關閉;或者通過升級更先進的工藝來降低每個晶體管的size從而降低整體面積;抑或通過改善時鐘樹綜合手段來降低晶元中佔比很大的clock network power。
往期問題以及回答:
問:library setup time和library hold time應該都是正值,但是它們是否有可能是負值?如果有可能,在什麼情況下會為負呢?
答:在實際設計中,它們均可能為負值,其根本原因在於當前很多DFF的標準單元中並非純粹的D觸發器結構,而是會包含數量不等的buffer/inverter。詳細的內容請參看我收藏的這篇文章:https://pan.baidu.com/s/1xLbwl1KnbuOUSZtiIBnmSw
如果大家有任何後端技術與職業發展方面的問題,抑或關於數字後端感興趣的技術話題想要了解和探討,歡迎關注我的知乎專欄: 【數字IC後端設計工程師修鍊之路】
同時歡迎關注微信公眾號:數字後端芯講堂,一起探討技術,共同提升!
看完不要忘了點贊喲!
推薦閱讀: