SoC設計流程中的功耗管理
長(cháng)期以來(lái),降低功耗一直是芯片設計中的重要需求。隨著(zhù)更大、更快的集成電路應用于便攜式產(chǎn)品中,這個(gè)需求變得日益重要。因此,貫穿整個(gè)設計流程的功率管理技術(shù)也在不斷改進(jìn),以確保產(chǎn)品的各個(gè)部分均得到適當、高效的功率供應,同時(shí)保證產(chǎn)品的可靠性。諸如多電壓島,以及時(shí)鐘頻率和閾值電壓的動(dòng)態(tài)調整等技術(shù),均有助于在提供高性能的同時(shí),節省便攜產(chǎn)品中的電池能量。
本文引用地址:http://dyxdggzs.com/article/201706/349098.htm更為重要的是,SOC在尺寸和速度方面的增長(cháng)已經(jīng)給大量的設計帶來(lái)了功耗方面的挑戰,而這些挑戰并不屬于傳統的受供電限制的范疇。在這些設計中,熱耗散和可靠性方面的問(wèn)題,例如電遷移和電壓降已經(jīng)變得極為關(guān)鍵。深亞微米設計中的功率問(wèn)題可能會(huì )限制設計的功能或性能,并嚴重影響到芯片的可制造性和良率。較高的功耗會(huì )造成結點(diǎn)區溫度上升,導致晶體管動(dòng)作速度變慢,并增加互連電阻。如果不考慮功率問(wèn)題,會(huì )導致器件性能低于預期,進(jìn)而使得器件良率下降。此外,較高的功耗會(huì )要求在溫度管理方面采取更多的系統級措施??偠灾?,這些功率問(wèn)題正在造成SoC和系統成本的增加。在SoC設計流程中進(jìn)行功耗管理,能夠有效控制這些成本。
SoC中的功耗
芯片的總功率等于動(dòng)態(tài)功率加上靜態(tài)功率。動(dòng)態(tài)功率是指在開(kāi)關(guān)邏輯狀態(tài)轉換過(guò)程中所消耗的功率,包括單元內部(內部功率)和驅動(dòng)芯片節點(diǎn)及外部負載的功率(開(kāi)關(guān)功率)。動(dòng)態(tài)功率 = CV2F其中,C為負載,V為電壓擺幅,F為邏輯狀態(tài)轉換的頻率。隨著(zhù)半導體器件結構日趨小型化,器件和互連電容降低,芯片獲得了更高的性能和更低的功耗。而更大規模的設計以及更高的開(kāi)關(guān)速率將會(huì )導致功率增加。靜態(tài)功率(泄漏功率)是指在晶體管不進(jìn)行開(kāi)關(guān)動(dòng)作時(shí)消耗的功率。
靜態(tài)功率=VISTAT盡管在晶體管漏極和襯底之間的一些反向偏置二極管中存在著(zhù)漏電流,但大部分泄漏功率來(lái)自晶體管關(guān)斷時(shí)的亞閾值電流。由于亞閾值漏電流隨著(zhù)晶體管閾值電壓(Vth)的降低而增大,從而帶來(lái)了一定的麻煩。隨著(zhù)工藝技術(shù)向130nm及以下不斷發(fā)展,泄漏功率可能會(huì )占到芯片總功率的50%(見(jiàn)圖1)。泄漏功率的增加,會(huì )使得芯片中與可靠性相關(guān)的故障(即使是在待機狀態(tài)下)呈指數增長(cháng)。
隨著(zhù)CMOS工藝尺寸的減小,降低功率的主要方法轉為降低供電電壓VDD。由于功率和電壓的平方成正比,所以降低電壓對于控制芯片的動(dòng)態(tài)功率極為有效。但是,由于開(kāi)關(guān)延遲時(shí)間與負載電容和Vth/VDD成正比,因此,僅降低供電電壓會(huì )導致電路速度降低。為了保證快速開(kāi)關(guān)所需的足夠的驅動(dòng)能力,Vth必須與VDD成正比下降,這又會(huì )導致泄漏功率的增加。較好的方式是采用考慮了功率管理的設計流程,在時(shí)序要求和各類(lèi)功耗目標之間取得平衡。
功率解決方案
設計抽象層次越高,對功耗的影響也就越大。例如,在系統級和算法級上,采用并行實(shí)現而非串行實(shí)現能夠降低時(shí)鐘頻率,從而顯著(zhù)降低功耗。但并行方法的低功率可能要以面積增加或性能降低為代價(jià)。
以一個(gè)用于串行接收數據樣本的芯片為例,來(lái)說(shuō)明并行架構與串行架構的不同效果。將數據樣本并行處理,可將芯片邏輯電路的時(shí)鐘從80MHz降低至10MHz,供電電壓也可從1.8V降低至1.25V。并行處理邏輯電路要比相同的串行處理電路的面積大得多,但較低的電壓和工作頻率可將功耗降低75%。在其它一些設計中,占用面積上付出的代價(jià)較小,而功率節省效果卻很明顯,所以這是值得探索的一種折衷方案。圖2中介紹了幾種功率優(yōu)化和分析的技術(shù),這些技術(shù)在SoC的整個(gè)設計流程中均可得到應用。本文所涉及的功率解決方案如下:(1)模塊門(mén)控時(shí)鐘(2)多供電電壓;(3)多閾值電壓;(4)綜合過(guò)程中的功率優(yōu)化,包括RTL級門(mén)控時(shí)鐘。
功率估計和分析
設計過(guò)程中,在如表1所示的4個(gè)階段內進(jìn)行功耗估計是非常有用的。每個(gè)階段所估計的功耗準確度隨增補設計和可利用的庫信息的增加而提高。
RTL級功率分析
在設計流程早期,功率分析可對設計的功耗進(jìn)行粗略估計。此時(shí)可能尚未選擇庫,所以庫數據有限,這時(shí),電子數據表(spreadsheet)分析可以用于找出最佳的注重功率的庫和設計架構。在選定庫之后,即可用Design Compiler和Power Compiler來(lái)代替電子數據表,或向電子數據表提供數據。
功率分析的電子數據表中包含了大致的門(mén)數和每個(gè)模塊的活動(dòng)值、mW/MHz數據以及相關(guān)的功率估計。這時(shí)進(jìn)行的分析也有助于確認一項設計的功耗是否過(guò)大而不現實(shí),從而可避免花費數周時(shí)間來(lái)實(shí)現一個(gè)根本無(wú)法制造的設計方案。
為了使用電子數據表分析方法,有必要對每一模塊的門(mén)數(每一種類(lèi)型的庫單元數量)和活動(dòng)水平進(jìn)行估計。同時(shí)還需知道每種類(lèi)型的單元在開(kāi)關(guān)時(shí)所耗費的能量,庫供應商手冊中的數據可用于確定正確的功率速度比(mW/MHz)。一個(gè)模塊內每種類(lèi)型的單元的內部功耗可由下式計算:功耗=門(mén)數×mW/MHz×活動(dòng)×頻率。將一個(gè)模塊內所有不同類(lèi)型的單元的功率加在一起,就可得出這一模塊總的內部動(dòng)態(tài)功率的估計值。在綜合前,可根據所選擇的體系結構和對設計本身的理解來(lái)對門(mén)數進(jìn)行估計。例如,從總線(xiàn)寬度、字長(cháng)、控制層和存儲器深度等可得出大致的門(mén)數。在選擇了庫以后,模塊的門(mén)數就可以利用Design Compiler的report-reference命令在初期綜合后進(jìn)行估計,這項功能將報告設計中每個(gè)例化設計的數量。功率計算的一個(gè)關(guān)鍵方面是指定活動(dòng)水平。設計中的門(mén)電路都具有不同的活動(dòng)水平,在對設計進(jìn)行仿真提取開(kāi)關(guān)動(dòng)作或不進(jìn)行仿真的情況下進(jìn)行估計均可。但在選擇了庫之后,推薦進(jìn)行功能仿真來(lái)確定開(kāi)關(guān)動(dòng)作。
開(kāi)關(guān)動(dòng)作以翻轉率(TR)衡量。翻轉率是指在單位時(shí)間內,一個(gè)設計對象(如節點(diǎn)、引腳或端口)從邏輯0至邏輯1以及從邏輯1至邏輯0進(jìn)行轉換的次數。對于一個(gè)節點(diǎn)來(lái)說(shuō),如果它在100ns的時(shí)間間隔內有50次從邏輯1至邏輯0的轉換,以及50次從邏輯0至邏輯1的轉換,則其翻轉率為1,表示每ns有1次動(dòng)作轉換。功率與轉換率之間的關(guān)系可以理解為,在狀態(tài)改變的時(shí)間間隔內,為了完成內部電路的狀態(tài)轉換,就必須提供一定的能量,因此,每次轉換都會(huì )消耗功率。
重要的是,只有在開(kāi)關(guān)動(dòng)作代表了芯片的實(shí)際工作狀態(tài)的情況下,在任何抽象層次上的功率估計才有意義。常見(jiàn)的錯誤是在試圖確定活動(dòng)時(shí),使用一個(gè)向量來(lái)仿真系統啟動(dòng)序列。此項活動(dòng)極少能夠代表真實(shí)的工作狀況,因而會(huì )導致不準確的功率估計。采用RTL級仿真能夠自動(dòng)生成一個(gè)SAIF(Switching Activity Interchange Format)文件,但是活動(dòng)值只有在此向量現實(shí)時(shí)才是準確的。目前的工具尚不能自動(dòng)生成這樣的向量,因為它需要對電路的實(shí)質(zhì)有明確的理解。
圖3所示為可以在VCS內使用的編程語(yǔ)言接口(PLI)系統任務(wù),用于在仿真期間生成SAIF文件。Power Compiler提供了一項power_estimate功能,這項功能使用SAIF文件來(lái)定義庫和約束條件,以及對設計進(jìn)行注釋?zhuān)杂糜诠β使烙?。Power Compiler針對未注釋端口的默認開(kāi)關(guān)動(dòng)作是,每個(gè)上升沿有1/4的概率翻轉,此數值在整個(gè)模塊內應用和傳送。
表2和表3所示為采用上述方式的估計結果。計算出內部功率之后,開(kāi)關(guān)功率可以按內部功率的30%進(jìn)行估計。由于沒(méi)有精確的負載和開(kāi)關(guān)數據,此數值僅為粗略的估計值。這樣的估計主要用于對不同設計方案的功耗進(jìn)行比較,而非用于預測芯片的實(shí)際功耗。但是,正如前文所述,RTL級的近似估計的確能夠在早期對芯片設計的可實(shí)現性提供參考意見(jiàn)。
泄漏功率可以根據每種單元類(lèi)型的泄漏數據進(jìn)行估算。由于高態(tài)和低態(tài)下的泄漏不同,所以泄漏功率分析必須在信號處于一定邏輯狀態(tài)的靜態(tài)概率的基礎上進(jìn)行。靜態(tài)概率表示為0至1之間的一個(gè)數,該數值可以根據信號的功能進(jìn)行估計。例如,一般情況下,一個(gè)低態(tài)有效的復位信號的邏輯“1”靜態(tài)概率(SP1)等于或接近1.0(100%)。對于一個(gè)數據總線(xiàn)信號而言,除非某些架構特性建議有其它概率,其SP1通??梢?假設為0.5(50%)。在選定了庫之后,靜態(tài)概率可在仿真期間,通過(guò)將信號處于某一特定邏輯狀態(tài)下的時(shí)間和總仿真時(shí)間進(jìn)行比較來(lái)計算得到。
門(mén)電路級功率分析
在綜合完成后,有可能根據實(shí)際門(mén)數和仿真得到的活動(dòng)來(lái)從Power Compiler中獲得相當精確的功率估計值。這時(shí)估計的不準確性來(lái)自活動(dòng)以及布局前的線(xiàn)負載值。通過(guò)從門(mén)級仿真中生成SAIF文件,準確性可以得到改善。在VCS中,與圖3中相同的指令可用于生成SAIF文件,只是其中的第一條指令應當改為:
$set_gate_level_monitoring (on);
這里必須再次強調,只有在仿真向量代表了真實(shí)的應用行為時(shí),活動(dòng)值才是準確的。Physical Compiler工具在物理優(yōu)化后使用write_parasitics -distributed指令用于改善負載的準確性,這項指令能夠產(chǎn)生注釋了Steiner路徑和寄生電阻、電容估計值的SPEF文件。
布局完成后,門(mén)級仿真能夠生成VCD(Value Change Dump)文件,用于PrimePower分析。VCD文件的記錄在仿真過(guò)程中變?yōu)橐粋€(gè)信號值,并提供了設計的節點(diǎn)活動(dòng)、結構數據體系連接性、路徑延遲、時(shí)序和事件方面的信息。
如果芯片的I/O數量眾多、在高速下切換開(kāi)關(guān)并驅動(dòng)很長(cháng)的線(xiàn)路,那它將有可能成為造成估計不準確的重要因素。如果設計目標要求得到準確而非最壞情況下的功率估計時(shí),I/O的集總負載模型可能會(huì )產(chǎn)生過(guò)分悲觀(guān)的估計結果。要想獲得更為準確的結果,可以在關(guān)鍵的I/O單元類(lèi)型中利用精確的分布阻抗模型進(jìn)行HSPICE仿真。然后,I/O單元的功率即可采用確定每次上升/下降沿的電荷和能量的數值性方法來(lái)進(jìn)行計算。在得到HSPICE的電流和時(shí)間輸出后,每個(gè)瞬態(tài)的內部功率就可以利用梯形積分法(如在Matlab軟件中)來(lái)進(jìn)行計算。在PrimePower分析中記錄的I/O活動(dòng)可以用于對I/O功率按比例進(jìn)行調整,同時(shí)總的I/O功率可與核心功率相結合,用于整體功率估計。為了表明在采用本文所述的不同設計階段和實(shí)施循環(huán)中的估計方法所獲得的功率估計值的差別,圖4列舉了在DSP設計中的一個(gè)高速FIR濾波器模塊的實(shí)例。這一實(shí)例驗證了,根據所提供的信息準確度的不同,功率估計值會(huì )有所差異。此圖也表明了范例模塊在設計流程中的4個(gè)不同階段下功率估計值的變化情況:
(1)示例1-采用最壞情況下的開(kāi)關(guān)動(dòng)作和線(xiàn)負載估計值所得到的功率估計值;
(2)示例2-采用較為準確的線(xiàn)負載估計值和最壞情況下的開(kāi)關(guān)動(dòng)作所得到的功率估計值;
(3)示例3-采用準確的線(xiàn)負載估計值和實(shí)際活動(dòng)所得到的功率估計值;
(4)示例4-采用精確的線(xiàn)負載(提取后)和基于SPICE準確仿真的實(shí)際活動(dòng)所得到的功率估計值。
評論