本文轉自:自己的微信公眾號《集成電路設計及EDA教程》
概念:
Power/Ground Gating是集成電路中通過關掉那些不使用的模塊的電源或者地來降低電路漏電功耗的低功耗設計方法。該方法能降低電路在空閑狀態下的靜態功耗,還能測試Iddq。
理論:
在電路中的某些模塊進入休眠或者空閑模式時,我們可以使用之前講過的Clock Gating技術來降低它們的動態功耗,但是無法降低它們的靜態功耗。而Power/Ground Gating技術可以在它們休眠的時候完全關掉它們的電源從而消除它們的靜態功耗。
理想情況下,Power gating可以完全消除電路的靜態功耗,可實際電路中Power gating只能完全關掉dynamic的power消耗,而leakage卻只會減少,不會消失,因為power gating技術仍需要加入一些Always On的Cell(比如switching cell、isolate cell和retention cell,它們都是一直開啟的,它們的電源不能被關斷,會帶來leakage)。
如下圖所示為采用了Power gating的電路動態功耗與靜態功耗在active模式以及sleep模式下功耗的變化曲線。
Power gating中用到的幾種Cell
接下來將對幾種Cell分別介紹。
由於內容非常多,非常詳細,所以本推文先介紹第一個--Power Switching Cell。
Power Switching Cell
Power Gating或者Ground Gating相應Switching Cell的選取:
Power Gating -> Header -> PMOS
Ground Gating -> Footer -> NMOS
由於Power Switching Cell是Always On Cell,因此為了降低它上面的功耗,一般采用高閾值MOS管實現。下面的圖中MOS管上面黑線加粗表示高閾值器件。
下面給出兩種方案各自的特點,優缺點以及兩種門控方案在SLEEP模式下哪種功耗更低。
下圖是Power Gating方案:
特點:
用PMOS實現的Header,用來控制電源的接通與否。
優點:
比Footer實現的Ground Gating功耗更低,因為Header下方的PMOS(在實際電路中會有很多)體端接Virtual VDD,在SLEEP模式下約為0V,不存在PN節反偏注入電流。
缺點:
PMOS驅動能力弱,與Footer相比需要占用更大的面積。
注意:該缺點在先進工藝下已經不存在,由於鍺硅工藝的引入,PMOS可能比NMOS驅動還要強一些。由於該缺點已經不存在,因此先進工藝下更多采用Header,也就是Power Gating。
Ground Gating方案:
特點:
用NMOS實現的Footer,用來控制GND的接通與否。
優點:
在之前的老工藝中,相同尺寸的NMOS驅動能力比PMOS要強,因此與Header相比采用Footer的Ground Gating更省面積。
但是在先進工藝中,該優點也逐漸喪失了,原因前面已經解釋過了。
缺點:
在SLEEP模式下,漏電功耗比較大。
因為如下:Footer上方的NMOS(在實際電路中會有很多)體端是P襯底,在單阱工藝下只能接GND,在SLEEP模式下NMOS源漏兩端的電位都差不多是VDD,此時NMOS存在很大的PN節反偏注入電流。
Power Switching Cell的啟動與關閉
Power Switching Cell的個數、分布以及啟動、關閉上都有講究。
這對IR-drop、Timing、漏電流、啟動及關閉的速度等都有影響。
另外,所有的Header或者Footer也不能同時一起打開或者關閉,因為這樣在電源或者地上會有很大的開關噪聲,如下圖所示:
為了避免這種現象,目前的集成電路設計中廣泛采用如下圖所示的Daisy Chain結構,多個Footer或者Header之間插入Buffer,每隔一段時間開啟/關閉一組,再隔一段時間開啟/關閉另外一組……直到最后所有的Switching Cell開啟/關閉為止。
Power Switching Cell的種類與分布
前面我們根據Power或者Ground Gating來將Switching Cell分為兩種:Header和Footer。
另外,我們還可以根據Switching Cell控制Cell的形式將它分為兩種:Coarse Grain Power Switch Cell和Fine Grain Power Switch Cell。
后者是專門在一些邏輯單元內設計的電源控制邏輯,控制簡單,但是面積比較大,如下圖所示:
而前者是分立的Switching Cell,可以在版圖中控制它們的分布,設計復雜度大一點,但是面積開銷比較小,現在廣泛采用這種形式。
根據前面講述的內容,Power Switching Cell在物理版圖中的分布有一定的要求。
有列狀分布:
還有環狀分布:
考慮到前面講的Daisy Chain結構以及IR-drop等因素,目前廣泛采用列狀排布。
Power Switching Cell的lib描述
前面講到,Power Switching Cell有兩種,分別為Coarse Grain Power Switch Cell和Fine Grain Power Switch Cell。
下面是一個Coarse Grain Power Switch Cell的Liberty格式描述:
library(<coarse_grain_library_name>) { #library 描述開始 … lu_table _template ( template_name ) #電壓狀態template描述,dc_current組中會使用 variable_1 : input_voltage; variable_2 : output_voltage; index_1 ( <float>, … ); index_2 ( <float>, … ); } … cell(<cell_name>) { #某個Power Switching Cell描述開始 switch_cell_type : coarse_grain; #Switching Cell類型是coarse_grain,暫時只支持該類型 … pg_pin ( <VDD/VSS pin name> ) { #聲明電源和地的pg_pin格式 pg_type : primary_power | primary_ground; #他們是主電源和主地 direction : input ; #方向是輸入 … } /* Virtual power and ground pins use “switch_function” to describe the logic to shut off the attached design partition */ pg_pin ( <virtual VDD/VSS pin name>) { #聲明內部電源和地,這就是輸出電源/地的端口 pg_type : internal_power | internal_ground; direction: output; #方向是輸出 … switch_function : “<function_string>”; #定義開斷控制功能,例如SLEEP pg_function : “<function_string>”; #內部電源或地功能與輸入的pg_pin一致,對於header switch來說就是premary_power的Pin Name,對於Footer Switch來說就是primary_ground的Pin Name } dc_current ( <dc_current_name> ) { #定義不同條件下輸出Pin的穩定電流值,EDA工具利用該數據計算IR Drop,並進行Switch的優化。 related_switch_pin : <input_pin_name>; #定義控制開斷的Pin related_pg_pin : <VDD pin name>; #定義可以被控制開斷的電源Pin,如果是Footer Switch則是地Pin related_internal_pg_pin : <Virtual VDD>; #定義不會被關閉的內部電源Pin,Footer Switch則是地Pin values(”<float>, …”); #定義不同狀態下的該Cell輸出的電流值 } pin (SLEEP) { #Pin SLEEP定義開始,SLEEP只是舉例 direction : input; switch_pin : true; #表示該輸入Pin是switch pin,控制電源/地的開斷 … /* The acknowledge output pin uses “function” to represent the propagated switching signal */ pin(<acknowledge_output_pin_name>) { #定義應答輸出Pin開始,完成開斷后,與switch pin狀態一致,有的Switch Cell可能沒有該pin … function : “<function_string>”; #功能定義,應該與SLEEP狀態一致 power_down_function : “function_string”; #定義關斷后電源狀態,如對於Header switch來說可以是!VDD+VSS,而Footer Switch來說可以是!VSS+VDD direction : output; … } /* end pin group */ } /* end cell group */ |
Fine Grain Power Switch Cell的Liberty格式描述:
cell(<cell_name>) { #Fine Grain Power Switch Cell都是某個Cell內的一部分,不單獨出現 is_macro_cell : true; #定義是不是macro cell switch_cell_type : coarse_grain | fine_grain; #多數設置為fine_grain pg_pin ( <power/ground pin name> ) { #定義電源信號,primary_是可以斷開的,backup_是不會斷開的。 pg_type : primary_power | primary_ground | backup_power | backup_ground; direction: input | inout | output; … } /* This is a special pg pin that uses “switch_function” to describe the logic to shut off the attached design partition */ pg_pin ( <internal power/ground pin name>) { #定義內部電源/地 direction: internal | input | output | inout; pg_type : internal_power | internal_ground; switch_function : “<function_string>”; pg_function : “<function_string>”; … } pin (<input_pin_name>) { direction : input | inout; switch_pin : true | false; #如果是switch pin就是true … } … pin(<output_pin_name>) {s direction : output | inout; power_down_function : <function_string>; … } /* end pin group */ } /* end cell group */ |
參考文獻:
Dr. Hailong Jiao, Low Power and Variations-Tolerant Digital IC Design in Nanoscale Regime
Power Gating的設計(概述),https://www.cnblogs.com/-9-8/p/5487239.html
S. Kim, S. V. Kosonocky, and D. R. Knebel, “Understanding and minimizing ground bounce during mode transition of power gating structures,” Proceedings of the IEEE/ACM International Symposium on Low Power Electronics and Design, pp. 22-25, August 2003.
孫軼群 ,國民技術股份有限公司,數字集成電路低功耗物理實現技術與UPF
崔義智,復旦大學,低功耗技術在后端設計中的應用