PCB低功耗基礎理解以及設計

NO IMAGE

晶片功耗的問題最近幾年得到了越來越多的重視,主要來源於以下幾個方面:

1、90nm以下,隨著設計流程的發展,晶片的整合度達到了上千萬門級。一顆最頂級的晶片總功耗可以達到驚人的

100-150W(可以煮雞蛋了),單位面積功耗可以達到50-75W/cm^2,而區域性熱點的功耗更大。這就產生了晶片封裝

成本、電源成本和可靠性問題,估計還要有大得像磚頭一樣的散熱片。

2、對於需要電池供電行動式裝置和無源晶片類(非接觸電子標籤)來說,功耗則意味著電池壽命和工作距離。

現象一:我們這系統是220V供電,就不用在乎功耗問題了
點評:低功耗設計並不僅僅是為了省電,更多的好處在於降低了電源模組及散熱系統的成本、由於電流的減小也減少了電磁輻射和熱噪聲的干擾。隨著裝置溫度的降低,器件壽命則相應延長(半導體器件的工作溫度每提高10度,壽命則縮短一半)

現象二:這些匯流排訊號都用電阻拉一下,感覺放心些
點評:訊號需要上下拉的原因很多,但也不是個個都要拉。上下拉電阻拉一個單純的輸入訊號,電流也就幾十微安以下,但拉一個被驅動了的訊號,其電流將達毫安級,現在的系統常常是地址資料各32位,可能還有244/245隔離後的匯流排及其它訊號,都上拉的話,幾瓦的功耗就耗在這些電阻上了(不要用8毛錢一度電的觀念來對待這幾瓦的功耗)。

現象三:CPU和FPGA的這些不用的I/O口怎麼處理呢?先讓它空著吧,以後再說
點評:不用的I/O口如果懸空的話,受外界的一點點干擾就可能成為反覆振盪的輸入訊號了,而MOS器件的功耗基本取決於閘電路的翻轉次數。如果把它上拉的話,每個引腳也會有微安級的電流,所以最好的辦法是設成輸出(當然外面不能接其它有驅動的訊號)

現象四:這款FPGA還剩這麼多門用不完,可盡情發揮吧
點評:FGPA的功耗與被使用的觸發器數量及其翻轉次數成正比,所以同一型號的FPGA在不同電路不同時刻的功耗可能相差100倍。儘量減少高速翻轉的觸發器數量是降低FPGA功耗的根本方法。

現象五:這些小晶片的功耗都很低,不用考慮
點評:對於內部不太複雜的晶片功耗是很難確定的,它主要由引腳上的電流確定,一個ABT16244,沒有負載的話耗電大概不到1毫安,但它的指標是每個腳可驅動60毫安的負載(如匹配幾十歐姆的電阻),即滿負荷的功耗最大可達60*16=960mA,當然只是電源電流這麼大,熱量都落到負載身上了。

現象六:儲存器有這麼多控制訊號,我這塊板子只需要用OE和WE訊號就可以了,片選就接地吧,這樣讀操作時資料出來得快多了。
點評:大部分儲存器的功耗在片選有效時(不論OE和WE如何)將比片選無效時大100倍以上,所以應儘可能使用CS來控制晶片,並且在滿足其它要求的情況下儘可能縮短片選脈衝的寬度。

現象七:這些訊號怎麼都有過沖啊?只要匹配得好,就可消除了
點評:除了少數特定訊號外(如100BASE-T、CML),都是有過沖的,只要不是很大,並不一定都需要匹配,即使匹配也並非要匹配得最好。象TTL的輸出阻抗不到50歐姆,有的甚至20歐姆,如果也用這麼大的匹配電阻的話,那電流就非常大了,功耗是無法接受的,另外訊號幅度也將小得不能用,再說一般訊號在輸出高電平和輸出低電平時的輸出阻抗並不相同,也沒辦法做到完全匹配。所以對TTL、LVDS、422等訊號的匹配只要做到過沖可以接受即可。

現象八:降低功耗都是硬體人員的事,與軟體沒關係
點評:硬體只是搭個舞臺,唱戲的卻是軟體,匯流排上幾乎每一個晶片的訪問、每一個訊號的翻轉差不多都由軟體控制的,如果軟體能減少外存的訪問次數(多使用暫存器變數、多使用內部CACHE等)、及時響應中斷(中斷往往是低電平有效並帶有上拉電阻)及其它爭對具體單板的特定措施都將對降低功耗作出很大的貢獻。

 功耗的組成:

 功耗分為動態功耗和靜態功耗兩大部分。

    動態功耗是電路在工作時(翻轉時)所消耗的能量。對於CMOS電路來說,它又分為開關功耗和短路功耗。開

關功耗為電路翻轉時對負載電容充電的功耗,短路功耗為輸入翻轉時,PMOS和NMOS同時開啟的瞬間電流形成的功

耗。用公式描述可寫為:

   
  Pdyn = (CL * Vdd2 * Ptran * F) (ttran * Vdd * Ipeak * F)

其中,CL為電路總負載電容;Vdd為工作電壓;Ptran為工作電路所佔比例;F為工作時脈頻率;ttran為PMOS,

NMOS同時導通時間;Ipeak為短路電流。

公式中前半部分為開頭功耗,後半部分為短路功耗。一般來說,只要gate輸入斜率足夠小,也就是ttran足夠短,

短路功耗一般可以忽略。

 從公式中可以看到降低動態功耗的思路,無非是從Vdd、F、CL和降低gate翻轉次數的方向出發。由此會帶來一

系列架構設計上、設計流程上、時序分析上、電路設計上、後端佈局上的考慮,以及由於工藝的發展帶來的一系

列問題。在後續章節中會詳細討論這些內容。

再來說說靜態功耗。靜態功耗是電路在沒有翻轉時,只有供電的情況下,電晶體中漏電流造成的功耗。根據重要

性可以分為以下四個部分:

1、
      亞域值漏電流Isub: 從Drain經過弱反形層流向Source的電流

2、
      柵電流:Igate: 由於隧道效應和熱載流子效應,由Gate經薄柵氧流向Sub的電流

3、
      由Gate引起的Drain電流IGIDL:由於Drain端的強電場引起的由Drain流向Sub的電流

4、
      結反偏電流Irev:反偏結耗盡區少子漂移和電子空穴對產生形成的由Drain、Source到Sub的電流。

 其餘電流還好理解,就是IGIDL沒搞清楚是怎麼來的。查了一些資料,看起來應該是這樣形成的,是由於工藝尺

寸降到90nm以下後,在Drain端會形成超強的反偏電場,而在Gate和Drain的overlap區域,Sub的參雜濃度偏大

(為了防止punchthrough),在這裡會容易發生band-band tunneling或者avalanche,因此會形成較大的Drain到

Sub的漏電流。

 深亞微米下,Vdd降低,為了提高效能會同時降低管子Vt,而Isub和Vt是指數反比關係,會造成Isub急劇增大。

45nm下Isub會是90nm下Isub的6.5倍。同時Isub也會隨溫度上升指數增加。

 90nm工藝下,柵氧厚度只有幾個nm(幾個原子的厚度),柵氧的隧穿電流Igate在90nm下可以達到Isub的1/3,在65nm下可以等於Isub電流。

降低靜態功耗的方法:

 有幾種方法可以降低靜態功耗,其中Multi-Vt和power gating的方法後面會詳細介紹。其它還有VTCMOS、Stack

Effect和Long channel器件的方法。

VTCMOS(Variable Threshold CMOS)是在SUB上加上一個反偏電壓,從而提高管子的 VT,以減小Isub。這樣會

額外增加兩條power rails,增加了建庫的難度,而且在小尺寸下,這種作法的作用也不明顯了。

 Stack Effect就是採用疊加的gate,如果疊加的gate中有兩個輸入都是關閉狀態,則流過兩個gate的靜態電流

會很小。在理論上,應該在關閉時鐘前將所有gate輸入置為關閉狀態,但在現實中,這是不可實現的。

 長溝道器件:長溝道器件可以有效降低靜態電流,但同樣會影響動態響應,降低電路效能。同時長溝通也會增

加柵電容,對動態功耗不利。因此可以考慮在開頭次數較小或者對效能要求不高的地方採用長溝器件。

四種低功耗技術,clock gating, gate level power optimization, Multi-VDD, Multi-Vt。

1、       clock gating
    門控時鐘的基本思想是在暫存器不工作時(使能訊號無效時),把clock關掉,從而clock tree上的buffer及

register都不會再有動態功耗。現在單元庫中會有專門提供用於gate clock的cell,這種cell可以檢查

setup/hold的violation,工具可以保證時鐘上不會出現glitch。如果庫中沒有這樣的單元,也可以手動的在RTL

中插入門控電路,或者在DC中用命令自動插入門控電路,或者是二者混合應用。一般會有兩種門控電路,一種是

基於latch+一個邏輯閘(and/or gate),一種是就用一個邏輯閘。如果電路中全部採用的同相時鐘,最好使用第

一種電路,可以用latch保證邏輯閘的輸出不會出現glitch(當然也要用STA分析相應的時序)。如果採用雙相時

鍾,用第二種電路也可,同樣需要用STA報告setup/hold violation。

插入門控時鐘可以極大降低電路動態功耗,可以節省50%以上動態功耗。同時還有一個附加好處是可以

顯著減小電路area。因為如果一組暫存器的EN電路被一個clock enable電路取代,會減小相應的面積。同時如果

這個clock tree上還需要串入delay cell的話,也由於gate cell引入的delay而減少delay cell的數量。書中的

例子說完成clock gating後,電路面積減小20%左右。(記得一次面試還被問過這方面內容,可惜當時理解還不

深,沒回答好,呵呵)

DC中自動插入門控單元的命令為:
set_clock_gating_style -sequential latch -positive_edge_logic {and} -negative_edge_logic {or} -setup 0.5 -hold 0.5 -minimum_bitwidth 3
在compile前執行
insert_clock_gating -module_level
-sequential latch指定DC用基於latch的門控電路型別。-positive_edge_logic指定時鐘rising edge觸發的暫存器所用的門控單元。-negative_edge_logic指定時鐘falling edge觸發的暫存器所用的門控單元。-setup/-hold指定setup/hold 約束。-minimum_bitwidth指定一組最少多少個暫存器共用一個門控單元,預設值是3。據分析至少是3個暫存器共用一個門控單元才能達到節省功耗及面積的目的。
-module_level選項可以指定DC自動替換在RTL中手動插入的門控單元為DC認為安全的門控單元。

2、門級功率優化
這一級優化是由工具自動完成的,對設計者和後端工程師都是透明的,設計者可以不用關心具體細節。其基本思想包括:把翻轉頻率高的net在path早期和翻轉頻率低的net運算,高翻轉率net的傳播路徑;高翻轉率net接到低輸入電容的門輸入端,低翻轉率net接到高輸入電容的門輸入端等。

3、Multi Vdd
  其基本思想就是SOC中,不同模組根據其效能要求不同採用不同電源供電。書裡的例子,Cache RAM需要工作在最高時鐘,因此分配的電壓值最高,為1.2V;CPU的電壓值次之,保證整個系統的效能還是取決於高速RAM的速度;其餘部分的電路工作在最低頻,因此電壓最低為0.9V。
這樣做會得到最好低功耗效果,但也會較大影響設計流程。設計需要在模組間額外增加power rails和level shifters,各個模組介面之間的時序可能也要嚴格保證。

4、Multi-VT
  降低VT也是把雙刃劍。由於深亞微米下,工作電壓降低,降低VT是勢在必行。降低VT可以提高動態電流也就是可以提高電路工作速度,但VT是和靜態漏電成指數反比關係,基於這個原理,在設計中我們就可以對於效能要求高的電路,採用low Vt的管子;對於效能要求不高,頻率低的電路可以用高VT的管子。書中說現在工具可以利用庫中給出的不同域值的單元自動優化timing和power。
如果專案的目標是追求最高效能,則第一遍實現時用low VT單元庫。然後再用high VT單元庫進行優化,把非關鍵路徑中的cell替換為high VT的cell,從而實現在滿足效能的同時,功耗最低。反之則順序相反。