功耗影響
便攜性
功耗越低,同等電量下電子產品工作時間越長,便攜性設備的電池容量和體積設計的困難度也會降低。例如,手機越做越薄,性能還不受影響,就是因為低功耗設計發揮了至關重要的作用。
性能
功耗越大,耗能越多,產生的熱量越多,各器件的工作性能就會受到影響。例如,手機使用時間較長時,會感覺手機發熱,而且各應用軟件也會出現卡頓的現象。
成本
不考慮低功耗設計時,一個功能的實現方法可能較為繁瑣,實現的器件增多,產品面積增大;同時,功耗過大時,就要考慮散熱裝置,這又增加了組裝成本。
總之,低功耗設計有很多的優點,也是以后數字設計的發展趨勢。
功耗類型
功耗類型一般可分為動態功耗、靜態功耗和浪涌功耗。
動態功耗
動態功耗主要包括開關功耗(又稱為翻轉功耗)和短路功耗(又稱為內部功耗)。
1> 開關功耗
在數字 CMOS 電路中,對負載電容進行充放電時消耗的功耗為開關功耗。如下 CMOS 非門:
當 Vin = 0 時,上面的 PMOS 導通,下面的 NMOS 截止;VDD 對負載電容 Cload 進行充電。充電完成后,Vout 的電平為高。
當 Vin = 1 時,上面的 PMOS 截止,下面的 NMOS 導通,負載電容通過 NMOS 進行放電。放電完成后,Vout 的電平為低。
這樣一開一閉的變化,即電源的充放電,就形成了開關功耗。開關功耗的計算公式如下所示:
其中,VDD 為供電電壓,Cload 為后級電路等效的負載電容大小,Tr 為輸入信號的翻轉率。
2>短路功耗
信號的翻轉不是在瞬時完成的。因此,在輸入信號進行翻轉時,PMOS 和 NMOS 總有一段時間是同時導通的,那么從電源 VDD 到地 VSS 之間就有了通路,形成短路電流,產生短路功耗。如下反相器電路圖所示:
短路功耗的計算公式如下:
其中,Vdd 為供電電壓,Tr 為翻轉率,Q 為一次翻轉過程中從電源流到地的電荷量。
靜態功耗
在 CMOS 電路中,靜態功耗主要是漏電流引起的功耗,往往與工藝有關。
漏電流的組成主要為:PN 結反向電流 I1、源極和漏極之間的亞閾值漏電流 I2、柵極漏電流(包括及柵極和漏極之間的感應漏電流 I3)、柵極和襯底之間的隧道漏電流 I4。
一般情況下,漏電流主要是指柵極泄漏電流和亞閾值電流。對于超深亞微米工藝的,隧道漏電流成為主要電流之一。
1>在 PN 結兩端加反向電壓時,P 區空穴和 N 區電子的運動相反,沒有電流通過,二極管處于截止狀態,部分能量較大的空穴和電子會掙脫反向電場的束縛而形成微弱的漂移電流。
2> 柵極泄漏功耗:在柵極上加信號后(即柵壓),從柵到襯底之間存在電容,因此在柵襯之間就會存在有電流,由此就會存在功耗。
3> 亞閾值電流:使柵極電壓低于導通閾值,仍會產生從漏極到源極的泄漏電流。此電流稱為亞閾值泄漏電流。在較狹窄的晶體管中,漏極和源極距離較近的情況下會產生亞閾值泄漏電流。晶體管越窄,泄漏電流越大。要降低亞閾值電流,可以使用高閾值的器件,還可以通過襯底偏置增加閾值電壓,這些也屬于低功耗設計的考慮范疇。
4>隧道漏電流:屬于量子力學范疇,感興趣的同學可自行查閱。
靜態功耗的計算公式如下:
浪涌功耗
浪涌功耗是浪涌電流引起的功耗。浪涌電流是指開機或者喚醒時,器件流過的最大電流,因此浪涌電流也稱為啟動電流。一般情況下,浪涌功耗不是本次所討論的內容。
功耗模型
library 信息
下面是一種 library 工藝的前幾行代碼描述,包含功耗有關的參數,具體含義在注釋中說明。
library (xxx) {
/* library head: xxx */
technology (cmos) ;
simulation : true ;
nom_process : 1 ;
nom_temperature : -40; //默認溫度
nom_voltage : 0.81; //默認電壓
voltage_map(VDD, 0.81); //定義lib中多個電壓,包括以下幾行
voltage_map(TVDD, 0.81);
voltage_map(VDDDST, 0.81);
voltage_map(VDDGR, 0.81);
voltage_map(VDDSRC, 0.81);
voltage_map(VSS, 0);
operating_conditions("ssg0p81vm40c"){ //一種corner定義
process : 1; /* SSGlobalCorner_LocalMC_MOS_MOSCAP-SSGlobalCorner_LocalMC_RES_BIP_DIO_DISRES */
temperature : -40;
voltage : 0.81;
tree_type : "balanced_tree";
}
default_operating_conditions : ssg0p81vm40c ;
capacitive_load_unit (1,pf) ; //定義電容單位
voltage_unit : "1V" ; //定義電壓單位
current_unit : "1mA" ; //定義電流單位
time_unit : "1ns" ; //定義時間單位
pulling_resistance_unit : "1kohm";
define_cell_area (pad_drivers,pad_driver_sites) ;
……
cell 信息
一個 library 中會有多個基本功能單元,用關鍵字 cell 聲明,也包含了多種的功耗信息。
cell (AN2D0BWP7T40P140) {
area : 0.392;
cell_footprint : "an2d1";
pg_pin (VDD) { //電源引腳
pg_type : primary_power;
voltage_name : VDD;
}
……
pin(A1) { //輸入信號引腳
driver_waveform_fall : "tcbn22ullbwp7t40p140ssg0p81vm40c:fall";
driver_waveform_rise : "tcbn22ullbwp7t40p140ssg0p81vm40c:rise";
direction : input;
related_ground_pin : VSS; //輸入引腳地端
related_power_pin : VDD; //輸入引腳電壓
capacitance : 0.000418924 ; //輸入引腳電容
……
}
pin(Z) {
direction : output;
power_down_function : "!VDD + VSS";
function : "(A1 A2)";
related_ground_pin : VSS; //輸出引腳地端
related_power_pin : VDD; //輸出引腳電壓
max_capacitance : 0.04182; //輸出引腳最大電容
min_capacitance : 0.00013; //輸出引腳最小電容
……
}
此時,如果再知道翻轉率,就可以計算出動態功耗。
翻轉率(Toggle rate,Tr),指單位時間內信號(包括時鐘、數據等信號)的翻轉次數。如下所示,信號在 40ns 時間內跳轉了 4 次,則翻轉率為 Tr = 4/4ns = 0.1GHz。
內部功耗信息
cell 定義中,內部功耗會有如下定義。
internal_power() {
related_pin : "A1" ;
related_pg_pin : VDD ;
rise_power(power_template_8x8) { //內部功耗查找表
index_1("0.0026, 0.0101, 0.0252, 0.0553, 0.1155, 0.236, 0.4769, 0.9587");
index_2("0.00013, 0.00046, 0.00112, 0.00243, 0.00506, 0.01031, 0.02081, 0.04182");
values ( "0.000249215, 0.000254481, 0.000262354, 0.000261007, 0.00026381, 0.000277799, 0.000304295, 0.000345046", "0.000239751, 0.000248667, 0.000255454, 0.0002551, 0.000268563, 0.000275995, 0.000294669, 0.000336529", ……
);
}
fall_power(power_template_8x8) { //內部功耗查找表
index_1("0.0026, 0.0101, 0.0252, 0.0553, 0.1155, 0.236, 0.4769, 0.9587");
index_2("0.00013, 0.00046, 0.00112, 0.00243, 0.00506, 0.01031, 0.02081, 0.04182");
values ( "0.000577367, 0.000584652, 0.000589472, 0.000591623, 0.000592223, 0.000591943, 0.00059185, 0.000592132", "0.000563896, 0.000570743, 0.000576589, 0.000579818, 0.000580794, 0.00057962, 0.000579997, 0.000579136", "0.000550059, 0.000555794, 0.00056188, 0.000565568, 0.000567663, 0.000567231, 0.000567712, 0.00056745", ……
);
}
}
cell 的內部功耗與其轉換時間和輸出電容負載有關。根據輸入轉換時間和輸出電容的大小,在工藝庫中進行查表,得到上升功耗和下降功耗,再根據下面公式進行計算,可得到總的內部功耗:
靜態功耗信息
cell 定義中,靜態功耗(漏電功耗)會有如下定義。
leakage_power () {
value : 0.059561;
related_pg_pin : VDD;
}
leakage_power () {
value : 0.048082;
when : "!A1 !A2 !Z";
related_pg_pin : VDD;
}
leakage_power () {
value : 0.053318;
when : "!A1 A2 !Z";
related_pg_pin : VDD;
}
……
靜態功耗跟 cell 的狀態有關,也就是輸入輸出信號在不同的狀態下,功耗也會有所差異。通過狀態進行查表,就可以得到相應的靜態功耗了。
實際分析功耗時,不會手動的去查找相關參數來計算功耗,因為工作量將大到難以估量。往往是借助一些功耗分析工具,提取這些標準單元庫的功耗信息進行整合計算。
-
CMOS
+關注
關注
58文章
5680瀏覽量
235140 -
NMOS
+關注
關注
3文章
290瀏覽量
34291 -
低功耗
+關注
關注
10文章
2362瀏覽量
103594 -
PMOS
+關注
關注
4文章
244瀏覽量
29488 -
負載電容
+關注
關注
0文章
137瀏覽量
10426
發布評論請先 登錄
相關推薦
評論