通過功耗驅動的新型后端流程可降低 Virtex-4、Virtex-5 和 Spartan-3 設計中的功耗。
自從 Xilinx 推出 FPGA 二十多年來,研發(fā)工作大大提高了 FPGA 的速度和面積效率,縮小了 FPGA 與 ASIC 之間的差距,使 FPGA 成為實現(xiàn)數(shù)字電路的優(yōu)選平臺。今天,功耗日益成為 FPGA 供應商及其客戶關注的問題。
降低 FPGA 功耗是縮減封裝和散熱成本、提高器件可靠性以及打開移動電子設備等新興市場之門的關鍵。
Xilinx 在提供低功耗 FPGA 解決方案方面一馬當先。本文說明如何應用計算機輔助設計 (CAD) 技術,如 Xilinx® ISE™ 9.2i 軟件中采納的技術,來有效降低功耗。
CMOS 電路中的功耗由靜態(tài)(漏電)功耗和動態(tài)功耗兩部分組成。動態(tài)功耗是由電路信號上的躍遷所致,符合以下公式:
其中,Ci 表示信號 i 的電容;fi 稱為“開關活動率”,表示信號 i 上的躍遷速率;V 是電源電壓。
靜態(tài)功耗是電路在靜止、空閑狀態(tài)下的功耗。靜態(tài)功耗是由截止晶體管中的漏電流引起,主要是亞閾值漏電流和柵極氧化層漏電流。截止 MOS 晶體管屬不完全絕緣體,允許其漏極與源極之間有亞閥值漏電流。柵極氧化層漏電流是由通過晶體管柵極流向其管體、漏極和源極的隧道電流所致。
工藝尺寸縮?。ㄈ缃诓杉{ 65 納米工藝的趨勢)意味著更低的電源電壓和更小的晶體管尺寸,致使導線長度縮短、電容量減小以及總體動態(tài)功耗降低。較小的工藝幾何尺寸還意味著較短的晶體管溝道和較薄的柵極氧化層,致使靜態(tài)功耗隨著工藝尺寸縮小而增加。
FPGA 中的功耗
對于實現(xiàn)給定的邏輯電路而言,F(xiàn)PGA 的可編程性和靈活性使其功耗效率比定制 ASIC 要低。FPGA 的配置電路和配置存儲器占用硅片面積,致使導線延長和互連電容增加。在 FPGA 中,預制金屬導線段上附加的可編程布線開關產(chǎn)生互連,從而加重了信號產(chǎn)生的電容性負載。
FPGA 中的動態(tài)功耗大部分消耗在可編程布線架構中。同理,靜態(tài)功耗與晶體管總寬度成正比。FPGA 的晶體管有相當一部分是互連架構,這是造成漏電流的主要因素。因此,互連架構應該是 FPGA 功耗優(yōu)化的主要攻關目標。
當然,可以通過工藝技術、硬件架構或電路級修改來解決功耗問題。例如,Virtex™-5 FPGA 含有“對角線”互連資源,允許用較少的布線導體構成連接,從而減少互連電容。在晶體管級,Virtex-4 和 Virtex-5 兩種 FPGA 都是采用三柵極氧化層工藝技術來抑制漏電流。根據(jù)其速度、功耗和可靠性要求,可以為每個晶體管使用三倍氧化層厚度。與在標準 FPGA 架構中實現(xiàn)同樣功能相比,DSP 和處理器等硬 IP 模塊的數(shù)量激增和推廣使用也可以降低功耗。
也有可能,不必耗費巨資更改硬件,就可以降低功耗。您可以通過功耗驅動的新型 CAD 算法和設計流程(如 ISE 9.2i 軟件中采納的算法和設計流程)來解決功耗問題。
ISE 9.2i 設計工具中的功耗優(yōu)化
ISE 9.2i 軟件在布局布線中體現(xiàn)了功耗優(yōu)化,并且通過一種后期布線技術來降低邏輯塊的內(nèi)部功耗。
布局
Xilinx 布局器中的核心算法采用了解析(數(shù)學)技術。這種算法以有重疊的初始設計布局開始,然后使用強行抽象法從高度擁擠區(qū)去除邏輯塊,最終形成可行的無重疊布局。一旦完成解析布局,便在已布局的設計上運行交換式局部優(yōu)化,以進一步細化布局。本布局器中使用的傳統(tǒng)成本函數(shù)按以下公式考慮導線長度和時間:
其中,W 和 T 分別是導線長度成本和時間成本,a 和 b 是標量加權系數(shù)。a 和 b 的值可以根據(jù)時間對導線長度的相對優(yōu)先級設定。布局器的成本核算方案如圖 1 所示。
因為進行布局時還沒有實際線路,所以導線長度成本是依據(jù)導線長度估算。同理,時間成本是依據(jù)用戶提供的限制條件和連接延遲的估算值。為了優(yōu)化功耗,我們用為成本函數(shù)增加功耗成分的方法擴展了解析布局和局部優(yōu)化,如圖 1 右側所示。修改后的成本函數(shù)如下:
其中,Pdynamic 是估算的動態(tài)功耗(如前述定義),c 是標量加權系數(shù)??梢詮姆抡嬷刑崛⌒盘栭_關活動率數(shù)據(jù),然后將其提供給工具。反之,如果不提供任何開關活動率數(shù)據(jù),則工具根據(jù)邏輯功能為初始輸入和后續(xù)輸出假定一個默認的開關活動率,并且將活動率推廣到其余信號。要獲得最佳結果,需要有用戶提供的開關活動率數(shù)據(jù)。
本文討論的布局和布線優(yōu)化旨在降低互連架構中的功耗。
在布局過程中,信號的電容是未知的,因此必須估算。根據(jù)布局過程中已有的信號參數(shù),我們建立了一個電容估算經(jīng)驗模型:
其中,f 表示普通數(shù)學函數(shù);Ci 是信號 i 的電容;FOi 是信號 i 的扇出數(shù);XSi 和 YSi 分別是布局中信號 i 的 X 跨度和 Y 跨度。這些參數(shù)獨立于架構,并且在布局過程中已經(jīng)具備。
為建立此模型,我們提取了從 Xilinx 的客戶那里收集的一組設計中每個信號的電容、扇出數(shù)、X 跨度和 Y 跨度。
然后,我們用最小平方回歸分析法將電容整理成模型參數(shù)的一個二次函數(shù)。就各種設計平均而言,該解析公式的誤差為 30%。
布線
一旦將邏輯塊分配到 FPGA 上的物理位置,我們就必須為各塊之間的連接進行布線。布線器采用一種協(xié)商擁塞布線算法,該算法在初始迭代中允許信號間短路。在后續(xù)迭代中,對短路的產(chǎn)生逐漸加大處罰,直到僅剩一個信號使用布線導體。對時間關鍵型連接布線的方式,應盡量縮短其延遲,這涉及到計算密集型 RC 延時計算。不過,大多數(shù)連接并非時間關鍵型。
在功耗監(jiān)控型布線器中,我們選擇優(yōu)化這類非關鍵型連接的電容。為達到這一目的,我們針對非時間關鍵型連接修改了布線器的成本函數(shù),以便考慮電容,這與上述根據(jù)其他因素(如估算的延遲或不足)的方法截然相反。為了解這種算法,請看圖 2 中的布線圖。
該布線圖中的每個節(jié)點表示一個布線導體或邏輯塊引腳,每條邊線表示一個可編程布線開關。布線器必須在源引腳和目標引腳之間選擇一條路徑。圖中各節(jié)點內(nèi)部所示為該節(jié)點的原始成本和電容成本。若要盡量降低原始成本,源引腳和目標引腳之間的布線就應采納藍色路徑。然而,在功耗監(jiān)控型流程中,布線器會使用綠色路徑,因為這條路徑的總體電容較低。
功耗監(jiān)控型布局與布線的結果
我們使用傳統(tǒng)布局布線流程和上述功耗型流程兩種方法對一組工業(yè)設計進行了布局布線。這些設計的初始輸入附加一個基于線性反饋移位寄存器 (LFSR-based) 的偽隨機矢量生成器,從而增加了內(nèi)置的自動輸入矢量生成功能。這樣,我們無需大量使用外部波形就能完成動態(tài)功耗的板級測量。
我們把這些工業(yè)設計映射到了 Spartan-3、Virtex-4 和 Virtex-5 器件中。結果顯示,動態(tài)功耗降低率對于 Spartan-3 FPGA 達 14%,對于 Virtex-4 FPGA 達 11%,對于 Virtex-5 FPGA 達 12%。就所有設計平均而言,動態(tài)功耗降低率對于 Spartan-3 FPGA 為 12%,對于 Virtex-4 FPGA 為 5%,對于 Virtex-5 FPGA 為 7%。就所有系列平均而言,速度性能下降在 3% 和 4% 之間,我們認為這樣小的性能損失在注重功耗的設計中是可以接受的。考慮到這些僅僅是軟件修改的初始結果,我們認為所取得的功耗效益是令人振奮的。
降低邏輯塊內(nèi)部功耗
本文討論的布局和布線優(yōu)化旨在降低互連架構中的功耗。我們還設計了一種降低邏輯塊內(nèi)部功耗的方法,尤其是在未使用全部查找表 (LUT) 時,降低 LUT 中的功耗(圖 3)。K 輸入 LUT 是一種小存儲器,用區(qū)區(qū)幾 K 輸入即可實現(xiàn)任意邏輯功能。圖 3 所示為用一個假設的三輸入 LUT(具有輸入 A1、A2 和 A3)實現(xiàn)二輸入邏輯“與”功能的過程。多路復用器樹左側的 LUT SRAM 所示內(nèi)容為邏輯“與”的真值表。
請注意,圖 3 中的輸入 A3 未使用。通常,未使用的輸入作為“無關項”處理,假設為 0 或 1。所以,為了在圖 3 所示的情況下說明這一點,Xilinx 軟件在 LUT SRAM 存儲器內(nèi)容的上下兩半部分中“重復”了該邏輯功能。客戶設計中經(jīng)常出現(xiàn)未使用的 LUT 輸入,特別是 Virtex-5 設計,其中的 LUT 有六個輸入。
在 Virtex-5 硬件中,把未使用的 LUT 提升為邏輯 1;這一特性是我們優(yōu)化的根本。如果把 A3 提升為邏輯 1,那么對樹中最深層二輸入多路復用器的下半部輸入就永遠不會被選中。不過,因為邏輯功能在 LUT 存儲器內(nèi)容的上下兩半部分重復,所以內(nèi)部多路復用器節(jié)點 n1 和 n2 會根據(jù)信號輸入 A1 和 A2 的變化發(fā)生翻轉。這種翻轉白白耗費動態(tài)功率,因為 n1 和 n2 上的躍遷永遠不會傳輸?shù)?LUT 的輸出端。
這種優(yōu)化需要在后期布線階段檢測未使用的 LUT 輸入,并且將 LUT 存儲器內(nèi)容設置為邏輯 0,從而在不破壞邏輯功能的情況下排除不必要的內(nèi)部翻轉?;氐綀D 3 的例子,LUT 存儲器內(nèi)容的下半部分將設置為邏輯 0。內(nèi)部節(jié)點 n1 和 n2 上不會發(fā)生翻轉,因此不會由于對 n1 和 n2 充放電而消耗動態(tài)功耗。
為了評價在工業(yè)設計上進行的這一優(yōu)化,我們進行了板級功耗測量,發(fā)現(xiàn)動態(tài)功耗節(jié)省了若干個百分點。這些結果說明大有前途,因為可以在布線后進行優(yōu)化,不會造成面積或性能損失,從這種意義上講,這種優(yōu)化是“免費”的。
結論
在用設計工具進一步降低功耗方面,存在著多種發(fā)展趨勢。在前端 HDL 綜合中,F(xiàn)PGA 可以借鑒 ASIC 領域中成熟的優(yōu)化方法,如時鐘門控法和運算元隔離法。也可以使用針對 FPGA 的功耗優(yōu)化方法,例如,將邏輯映射到可用的 Block RAM(可以用作大型 ROM)中,以此取代使用 LUT 和普通架構的方法。
將功耗監(jiān)控型邏輯綜合和活動率驅動的工藝映射到 LUT 的方法在文獻中已有充分報道,這些方法將使 Xilinx FPGA 大大降低功耗。在布局方面,電容估算精度的提高會更大幅度地降低功耗。
我們感覺特別有潛力的兩個方面是偽信號優(yōu)化和漏電流優(yōu)化。偽信號是由電路中路徑延遲不均衡所致在信號上發(fā)生的偽躍遷。這種躍遷是不必要的,但在動態(tài)功耗中卻占據(jù)著重要位置。抑制偽信號的 CAD 技術包括均衡路徑延遲或者沿偽信號最多的路徑插入寄存器。數(shù)字 CMOS 電路中的漏電路在很大程度上取決于電路使用的輸入狀態(tài)。因此,在 CAD 中減少漏電流的一種方法是自動修改電路,使其信號值在漏電流狀態(tài)下保持較長時間。
結果顯示,在通過 ISE 設計工具降低功耗方面已經(jīng)取得長足的進步。在用軟件進一步降低功耗方面,我們認為前景一片光明。注重功耗的解決方案由功耗監(jiān)控型 CAD 算法和功耗優(yōu)化器件(如 Virtex-5 FPGA)組成,這一成功故事本身就頗為耐人尋味。低功耗軟硬件的不斷進步將為 Xilinx FPGA 打開進入新興功耗敏感型市場的大門。