數字電路到了一定規模,把數字電路網表轉成原理圖,通過跑Spectre/Ultramsim仿真來獲得功耗就變得mission impossible了。新的運算工具應運而生。Voltus的前生是EPS (Encounter Power System),是一款非常優秀的功耗分析工具。
數字電路功耗包括下面三個部分。
1. Switching power
這部分功耗來自各個標準元之間的連線interconnect的充放電。描述這部分功耗的經典公式是。這里F代表頻率,A代表average switching activity。
從這個經典公式可以衍生出有趣的問題?如何降低switching power呢?通常CL在前端設計中無法控制。電路的F是設計指標決定的,也改不了。前端設計能改變的只有A。這時前端設計中引入clock gating就很有必要了。當然,有些使用場景可以降低V,但實現起來有些困難的,需要供電電路能配合,需要庫在不同電壓下characterize。總體來說,降低A是前端設計最直接最有效的降低switching power的方法。
2. Internal power
這部分是標準元內部由switching造成的功耗。工具根據.lib里的數據計算這部分功耗。下面是一個AND gate的例子。
輸入A變化引起的功耗。工具根據輸入A的transition time查詢rise_power, fall_power表。這個例子簡化了一些。通常這兩個表中的數據多幾個,工具插值計算更精確一些。
輸出Y的變化可以是輸入A變化引起的,也可以是輸入B變化引起的。Y的internal power相對復雜一些。這里rise_power,fall_power的表是二維的。工具根據相關輸入的input_transition_time,Y輸出的total_output_capacitance來查詢這幾個表。
標準元的internal power本質上依然是電路中各個節點的switching引起的。設計中盡量降低各個節點的switching可以有效地降低相聯標準元地internal power。
3. Leakage power
這部分就是常說的漏電。即使電路處于靜止狀態,沒有時鐘,沒有任何switching,這部分功耗依然存在。在低功耗待機狀態下,如何降低漏電功耗是設計挑戰。
工具計算漏電功耗也是根據.lib中的數據。下面是一個AND gate例子。這里可以看到leakage power是和A,B輸入的狀態有關的。A,B同時為高電平時leakage power最大,43.7371。如果A,B電平無法確定,工具取平均值,即第二個框里的33.4556。
Voltus雖然有幾個工作模式,但各個模式下功耗的算法依然遵循上面分的三類。各個模式的區別只是設置而已。
Voltus static power
Voltus static power本質上算的是電路的平均功耗。
Voltus static power要求用戶提供各個輸入的activity。工具根據用戶提供的activity,加上SDC文件內時鐘的定義,就可以推算出內部各個節點的activity,再配合SPEF文件內各個連線的RC,就可以算出這個電路的switching power。同時,工具也知道內部每個標準元的輸入輸出特性,各個標準元的internal power也就可以算出來了。
Voltus static power理論上可以算得蠻準的,但實際操作上是有陷阱的。如果用戶提供的activity不準,計算的結果就偏離了。很多時候,默認的activity 0.1可能過于悲觀,造成static power也過于悲觀。
Voltus dynamic power
Voltus dynamic power本質上是計算瞬時峰值功耗,分兩種方法,vectorless或vector-driven。Vectorless估算每個節點的activity,意義不大,這里就略過了。Vector-driven采用VCD標注內部各個節點的activity。VCD來自于后仿。VCD中每個節點的activity和實際電路時一一對應的。顯然,使用VCD的dynamic power可以算得很準。通常VCD文件可以記錄整個電路完整的運行過程。但對于峰值功耗,通常只需要取VCD中的一小段時間。這里需要注意的是,指定的這一小段時間必須對應的是activity最集中的時間段。如果自己是電路的設計者,應該知道哪一段時間activity最多。另一個方法是先取比較長的一段時間跑一次dynamic power,在Voltus里調用Simvision打印出VDD電流,根據VDD電流波形選擇峰值時間段。隨后在這個縮短的時間段再跑一下dynamic power,生成power database,供后續的IR drop分析使用。
這里引申出一個有趣的問題。Voltus dynamic power能否像S家的PTPX一樣用來算電路的功耗呢?當然是可以的。功耗基本的算法就是那三類,本質上是一樣的。Voltus dynamic power里VCD時間段取得和PTPX功耗分析VCD時間段一樣,兩者計算出來的結果在2-3%以內。個人認為Voltus dynamic power設置對了,Voltus static power就沒必要了,PTPX也可以替代了。這樣做有個小小的缺陷。通常算average power需要取比較長的時間段。這樣跑Voltus dynamic power生成的power database非常龐大。后續的Voltus IR如果還用這個龐大的power database,基本就跑不動了。解決方法也很簡單。就像上面提到的,取縮短的時間段再跑一次dynamic power,生成對應峰值電流的power database,隨后用這個小很多的power database跑IR。
審核編輯:黃飛
-
原理圖
+關注
關注
1294文章
6313瀏覽量
233001 -
VCD
+關注
關注
0文章
37瀏覽量
34688 -
數字電路
+關注
關注
193文章
1600瀏覽量
80504 -
前端設計
+關注
關注
0文章
19瀏覽量
10041
發布評論請先 登錄
相關推薦
評論