一、低功耗設計
隨著手持便攜式設備及物聯應用的推廣,低功耗設計的問題變得越來越重要。更低的芯片功耗,意味著手持便攜設備的使用時間更長、功耗的降低使得芯片的壽命得以提高、散熱問題得到控制,設備的體積可以做到更小等等之類的各種好處。低功耗設計是一個整體的概念,意思是它在每個設計層次上都可以進行功耗的優化——算法層次的優化、RTL級代碼的優化、門級網表的優化、版圖布局的優化等等。而且,抽象層次越高,功耗優化的程度也就越高,例如算法層次的優化可以降低70%以上的功耗,而版圖布局的優化大概只有10%的優化效果。
數字集成電路功耗優化集中體現在兩個方面,一是電路的低功耗優化設計,二是EDA工具的優化設計。而電路的低功耗優化設計前者是重點,即綜合考慮電路性能、面積、功耗來進行功耗的優化設計。
低功耗設計的方法有很多種,就筆者所了解的信息大致分為如下幾種。
a、多閾值工藝方法:不同的電路模塊采用不同閾值的基本門級電路;
b、電源門控:將某一部分電路的電源通過特殊邏輯門控制,需要時再啟動該電路的電源,達到降低功耗的目的;
c、多電壓域:不同區域的電路模塊采用不同的供電電壓,比如,頻率高的電路采用高電壓,頻率要求低的電路采用低電壓;
d、門控時鐘:用邏輯門控制模塊時鐘的停止或者開啟,門控時鐘可以通過DC命令的方式直接插入;
e、操作數分離;
f、門級電路優化;
g、版圖優化;等等。
對于Asic設計人員來說,不同的工作崗位,所采取的優化辦法并不相同。a-c是系統級設計人員的優化方法,d-f是RTL和門級設計人員的優化方法,g屬于版圖人員能夠掌握的分析方法。這些概念太過于寬泛,如果不是親自參與到某項應用該低功耗技術的項目中去是很難有深刻體會的,對于Asic設計者來說,無法全面掌握這些低功耗技術。
在筆者推薦的書中,有基于Power Complier(從屬于DC),PTPX(Prime Time-PX)這兩種軟件的功耗優化流程。學習的理論大致需要掌握功耗的種類分為,
1、靜態功耗-泄露功耗,
2、動態功耗-開關功耗,翻轉功耗,總功耗等于以上三種功耗的總和。
軟件是通過何種途徑分析這三類功耗的呢?答案依然是工藝庫。在綜合庫.lib文件中,有許多項參數都是有關于這三類功耗的,如下所示。
某個單元的泄露功耗:
cell_leakage_power : 330.503175;
leakage_power() {
when :"!A & !B & !CI";
value : 318.529800;
}
leakage_power() {
when :"!A & !B & CI";
value : 375.946200;
}
leakage_power() {
when :"!A & B & !CI";
value : 347.668200;
}
leakage_power() {
when :"!A & B & CI";
value : 309.481200;
}
leakage_power() {
when :"A & !B & !CI";
value : 312.384600;
}
leakage_power() {
when :"A & !B & CI";
value : 352.481400;
}
leakage_power() {
when :"A & B & !CI";
value : 324.199800;
}
leakage_power() {
when :"A & B & CI";
value : 303.334200;
}
某單元(!A & B) | (A & !B)情況下的內部功耗,上升沿,下降沿功耗:
internal_power() {
related_pin : "CI";
equal_or_opposite_output : "CO";
when : "(!A & B) | (A & !B)";
rise_power(energy_template_7x3x3) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.00035, 0.0385, 0.3115");
index_3 ("0.00035, 0.0385, 0.3115");
values ( \
"0.067236, 0.068853, 0.068513", "0.071757, 0.070275, 0.070806", "0.080913, 0.079223, 0.078953", \
"0.067380, 0.068914, 0.068524", "0.071910, 0.070393, 0.070843", "0.081073, 0.079343, 0.079093", \
"0.072993, 0.073749, 0.073240", "0.077639, 0.075163, 0.075587", "0.086943, 0.084212, 0.084302", \
"0.088698, 0.085346, 0.084064", "0.090733, 0.087112, 0.086360", "0.100492, 0.096672, 0.095842", \
"0.104666, 0.099420, 0.097897", "0.105970, 0.100660, 0.100035", "0.115422, 0.109742, 0.108342", \
"0.123420, 0.117165, 0.114921", "0.125151, 0.118985, 0.116790", "0.133612, 0.127112, 0.125132", \
"0.145380, 0.138042, 0.134921", "0.147057, 0.139940, 0.136555", "0.155522, 0.148222, 0.145332");
}
fall_power(energy_template_7x3x3) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.00035, 0.0385, 0.3115");
index_3 ("0.00035, 0.0385, 0.3115");
values ( \
"0.050492, 0.055945, 0.064903", "0.053891, 0.055156, 0.063903", "0.053922, 0.056074, 0.063853", \
"0.050468, 0.055859, 0.064843", "0.053846, 0.055057, 0.063833", "0.053880, 0.056027, 0.063783", \
"0.055162, 0.059927, 0.068953", "0.058462, 0.058987, 0.067812", "0.058500, 0.059918, 0.067832", \
"0.071414, 0.070694, 0.079333", "0.069997, 0.069600, 0.078113", "0.069993, 0.070503, 0.078113", \
"0.087095, 0.085894, 0.093292", "0.085467, 0.084469, 0.091692", "0.085322, 0.084670, 0.091722", \
"0.105947, 0.103948, 0.110322", "0.104070, 0.102399, 0.108522", "0.103914, 0.102131, 0.108572", \
"0.127727, 0.124621, 0.130342", "0.125641, 0.122880, 0.128522", "0.125412, 0.122591, 0.128302");
}
}
信息來源于前文提供的simc工藝庫。
更多有關于對綜合庫.lib文件內容的介紹,請參閱《數字IC系統設計》,這里不再贅述。
這再次驗證了之前介紹工藝庫的文章中說的,綜合庫.lib文件真的非常重要,使用軟件對RTL代碼和門級網表做功耗分析都需要這些綜合庫參與,才能對芯片的功耗進行分析,進而優化。
二、推薦書籍:
《Soc設計方法與實現》
《數字IC系統設計》
《ptpx user guide 2016》
(此外建議看一下論壇關于low power RTL 設計優化的帖子,里面推薦了一些相關資料。http://bbs.eetop.cn/thread-636337-1-1.html)
三、工具
在綜合的時候就可以對產生的門級網表進行初步優化,所使用的工具為DC內置程序Power Complier,通過相關命令啟用功耗優化功能。該工具的使用示例請參閱《專用集成電路設計實用教程》。
門級網表優化工具,PrimeTime PX。該工具的使用示例請參閱《ptpx user guide 2016》
四、示例
由于目前并未使用到低功耗的相關技術,因此對于基于Power Complier(從屬于DC),PTPX(Prime Time-PX)軟件的低功耗分析流程,了解的不是很多,待以后再把這個坑填上。
-
asic
+關注
關注
34文章
1199瀏覽量
120434 -
低功耗
+關注
關注
10文章
2396瀏覽量
103670
原文標題:ASIC低功耗設計實例分析及書籍推薦
文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論