數(shù)字IC低功耗設(shè)計(jì)入門(mén)(三)——系統(tǒng)與架構(gòu)級(jí)低功耗設(shè)計(jì)
時(shí)間:2025-10-22 00:12:42
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
前面講解了使用EDA工具(主要是power compiler)進(jìn)行功耗分析的流程,這里我們將介紹在數(shù)字IC中進(jìn)行低功耗設(shè)計(jì)的方法,同時(shí)也結(jié)合EDA工具(主要是Design Compiler)如何實(shí)現(xiàn)。我們的講解的低功耗設(shè)計(jì)主要是自頂向下的設(shè)計(jì),也就是說(shuō),我們首先介紹在系統(tǒng)架構(gòu)層面上如何進(jìn)行低功耗設(shè)計(jì)(或者可以從哪些方面進(jìn)行低功耗設(shè)計(jì));然后我們?cè)赗TL層面和門(mén)級(jí)層面上介紹低功耗設(shè)計(jì)的方法,這兩個(gè)種方法主要是依靠RTL代碼和Design Compiler實(shí)現(xiàn)的,這是我們前端設(shè)計(jì)人員進(jìn)行低功耗設(shè)計(jì)與優(yōu)化所需要知道的,我們會(huì)著重介紹;最后我們簡(jiǎn)單介紹在物理設(shè)計(jì)層次上面降低功耗的方法。今天我們記錄系統(tǒng)與架構(gòu)級(jí)的低功耗設(shè)計(jì)。
1.系統(tǒng)與架構(gòu)級(jí)低功耗設(shè)計(jì)
系統(tǒng)與架構(gòu)層次的低功耗設(shè)計(jì),可以節(jié)省70%以上的功耗。這個(gè)層次上的設(shè)計(jì)往往是由系統(tǒng)和架構(gòu)設(shè)計(jì)人員進(jìn)行的,這些人員往往是有著豐富經(jīng)驗(yàn)的設(shè)計(jì)人員。他們制定了低功耗設(shè)計(jì)方案,由下一級(jí)的設(shè)計(jì)人員(比如做前端設(shè)計(jì)、做Flow的人員)進(jìn)行具體實(shí)現(xiàn)。下面就來(lái)介紹一下在系統(tǒng)架構(gòu)方面,可以從哪些方面進(jìn)行低功耗設(shè)計(jì),由于我只是只菜鳥(niǎo),因此這些內(nèi)容只是我在前人的經(jīng)驗(yàn)中進(jìn)行總結(jié)學(xué)習(xí)的筆記,僅供參考。
(1)多電壓設(shè)計(jì)技術(shù)(Multi-VDD)
①多電壓設(shè)計(jì)技術(shù)介紹
從前面的功耗方程中,我們可以知道,電壓與功耗有著密切的聯(lián)系。因此功耗的降低可以考慮使用低一點(diǎn)的電壓。多電壓設(shè)計(jì)技術(shù)有三種方式:
A:各電壓區(qū)域有固定的電壓,如上圖(a)所示 ;B:各電壓區(qū)域具有固定的多個(gè)電壓,由軟件決定選擇哪一個(gè)電壓,如上圖(b)所示;C:自適應(yīng)的方式,各電壓域具有可變的,由軟件決定選擇哪一個(gè)電壓,如上圖(c)所示。A是固定分配的電壓;而B(niǎo)和C為動(dòng)態(tài)電壓管理,涉及到軟硬件協(xié)同設(shè)計(jì),這里我們放到后面進(jìn)行介紹。這里主要是從整體上進(jìn)行介紹多電壓設(shè)計(jì)技術(shù)及其要求,然后給出A方式的一個(gè)例子以及一個(gè)多電壓低功耗設(shè)計(jì)的腳本示例。 ②多電壓綜合庫(kù)及電壓模式控制單元無(wú)論是哪一種低電壓設(shè)計(jì)方式,都需要綜合庫(kù)的支出。這低功耗設(shè)計(jì)的綜合庫(kù)中,需要包含同一個(gè)單元在不同電壓下的描述。此外綜合庫(kù)還要多電壓設(shè)計(jì)的特殊單元,這些單元主要是:
電平轉(zhuǎn)換器(level shifter):把高(低)電壓區(qū)域的信號(hào)轉(zhuǎn)換到低(高)電壓區(qū)域。信號(hào)通常包括數(shù)據(jù)、時(shí)鐘、掃描鏈數(shù)據(jù)等。電平轉(zhuǎn)換器的示意圖如下所示:
電源隔離單元(power isolation cell):主要用于模塊的輸入、輸出。它可以關(guān)掉電源時(shí),將信號(hào)保持為常數(shù),從而避免單元的輸入懸空。電源隔離單元如下圖所示:
保持寄存器(retention register):在不工作的情況下,將寄存器的狀態(tài)保留下來(lái)。電源隔離單元和保持寄存器我們將在后面的電源門(mén)控中進(jìn)行詳細(xì)介紹,這里先給出一個(gè)概念。
為了實(shí)現(xiàn)電壓的動(dòng)態(tài)管理——無(wú)論是使用硬件還是軟件進(jìn)行動(dòng)態(tài)管理,都需要在設(shè)中加入電壓模式控制單元。一個(gè)電壓模式控制單元的例子如下所示:

該模塊的功能是:系統(tǒng)不工作時(shí), 進(jìn)入IDLE模式, 這時(shí)候可以關(guān)掉不工作模塊的電源;當(dāng)系統(tǒng)工作時(shí), 給工作模塊提供正常電壓。這個(gè)模塊可以是軟件實(shí)現(xiàn),也可以是硬件實(shí)現(xiàn)。 ③多電壓設(shè)計(jì)舉例
對(duì)于多電壓設(shè)計(jì)(尤其是A設(shè)計(jì)),關(guān)鍵是電壓分配。在劃分供電區(qū)域時(shí), 要盡量與設(shè)計(jì)的層次結(jié)構(gòu)一致, 并且要考慮到設(shè)計(jì)復(fù)雜性。下面例子(左圖)中(電壓分配采用固定分配方案), 存儲(chǔ)器、 處理器核 、 其他邏輯用不同的工作電壓。

圖中的設(shè)計(jì)有3個(gè)工作頻率,分別為300,250和400MHz。由于單元的延遲與供電電壓成相反關(guān)系,即供電電壓越高,單元的延遲越小。因此為了滿足時(shí)序的要求,對(duì)于工作頻率高的模塊,使用供電電壓高的電源,以降低時(shí)序路徑中單元的延遲,從而降低整條時(shí)序路徑的延遲。上例中,工作頻率為400MHz的模塊,時(shí)序要求最高,因此供電電壓最高,為1.2V。工作頻率為250 MHz的模塊,時(shí)序要求最低,因此供電電壓最低,為0. 8V。通過(guò)對(duì)不同的模塊設(shè)置不同的供電電壓,可以使整個(gè)設(shè)計(jì)既能滿足時(shí)序的要求,又可以降低其功耗。使用多電壓技術(shù),版圖設(shè)計(jì)時(shí),要產(chǎn)生多個(gè)電壓區(qū)域(Voltage Area),把供電不同的模塊,分配到不同的電壓區(qū)域。
在power compiler中,可以使用"Top Down Compile"的方法進(jìn)行多電壓的功耗設(shè)計(jì),一個(gè)示例腳本如下所示:
(2)軟/硬件協(xié)同設(shè)計(jì)前面介紹了多供電電壓設(shè)計(jì),同時(shí)介紹了使用EDA工具實(shí)現(xiàn)的一個(gè)示例腳本。多供電電壓設(shè)計(jì)中涉及到電壓的動(dòng)態(tài)管理,而動(dòng)態(tài)管理可以使用軟件實(shí)現(xiàn),這就設(shè)計(jì)到了軟硬件協(xié)同設(shè)計(jì)的問(wèn)題。在這里,我們主要介紹軟硬件協(xié)同設(shè)計(jì)中的軟硬件劃分以及電壓的動(dòng)態(tài)管理技術(shù)。
①軟硬件劃分
系統(tǒng)中的功耗都是硬件單元消耗的,但是軟件組織對(duì)硬件的功耗有著很大的影響。在設(shè)計(jì)過(guò)程中,系統(tǒng)的功能可以用硬件實(shí)現(xiàn),也可以使用使用軟件進(jìn)行實(shí)現(xiàn)。低功耗軟件的設(shè)計(jì)需要注意:在滿足系統(tǒng)應(yīng)用的基礎(chǔ)上,速度應(yīng)該盡可能慢,電壓應(yīng)該盡可能低,盡可能滿足時(shí)間要求。系統(tǒng)設(shè)計(jì)者根據(jù)規(guī)范和自身經(jīng)驗(yàn)對(duì)系統(tǒng)性能進(jìn)行推測(cè)(仿真建模),決定哪一部分使用硬件來(lái)實(shí)現(xiàn),哪一部分使用軟件來(lái)實(shí)現(xiàn),從而達(dá)到性能和功耗最佳平衡。這些是系統(tǒng)設(shè)計(jì)者需要考慮的,這里不進(jìn)行詳細(xì)敘述,只需要知道,軟硬件劃分可以很大程度上降低功耗。 ②動(dòng)態(tài)電壓頻率調(diào)節(jié)DVFS技術(shù)
DVFS技術(shù):dynamic voltage dynamic frequency scaling,動(dòng)態(tài)電壓頻率技術(shù),是一種通過(guò)將不同電路模塊的工作電壓及工作頻率降低到恰好滿足系統(tǒng)最低要求,來(lái)實(shí)時(shí)降低系統(tǒng)中不同電路模塊功耗的方法。
電路模塊中的最大時(shí)鐘頻率和電壓緊密相關(guān),如果一個(gè)電路能夠估算出它必須做多少工作才能完成當(dāng)前的任務(wù),那么理論上講就可以將時(shí)鐘頻率調(diào)低到剛好能適時(shí)完成該任務(wù)的水平。降低時(shí)鐘頻率意味著可以同時(shí)降低供電電壓。頻率和電壓同時(shí)降低,功耗就大大降低了。這個(gè)是DVFS的原理。
DVFS技術(shù)這個(gè)種方法屬于電壓的動(dòng)態(tài)管理,可以通過(guò)軟件和硬件的方式實(shí)現(xiàn)。將DVFS合并到操作系統(tǒng)的調(diào)度程序和實(shí)時(shí)嵌入式任務(wù)管理服務(wù)當(dāng)中,利用一個(gè)可編程的DC-DC開(kāi)關(guān)電壓調(diào)節(jié)器、一個(gè)可編程的時(shí)鐘產(chǎn)生器和一個(gè)寬操作域的高性能處理器等資源進(jìn)行實(shí)現(xiàn)。這種技術(shù)的使用需要系統(tǒng)使用者決定,這里不進(jìn)行詳述,只需要知道在系統(tǒng)層面可以考慮使用這種方法進(jìn)行降低功耗。 ③低功耗軟件(操作系統(tǒng))的動(dòng)態(tài)功耗管理
前面也說(shuō)了,可以使用軟件的方式進(jìn)行自適應(yīng)地選擇功耗。在系統(tǒng)軟件過(guò)程運(yùn)行過(guò)程中,可以在操作系統(tǒng)中加入功耗管理機(jī)制,把沒(méi)有使用到的硬件單元關(guān)掉,這便是系統(tǒng)功耗的動(dòng)態(tài)管理。加入功耗管理機(jī)制的操作系統(tǒng)的示意圖如下所示:
這種功耗的動(dòng)態(tài)管理依賴(lài)于前面描述的電壓模式控制單元,只不過(guò)個(gè)單元是用軟件進(jìn)行實(shí)現(xiàn)的(因?yàn)槭遣僮飨到y(tǒng)進(jìn)行動(dòng)態(tài)功耗管理)。具體的功耗動(dòng)態(tài)管理實(shí)現(xiàn)這里就不詳細(xì)說(shuō)明,這應(yīng)該是屬于系統(tǒng)設(shè)計(jì)者和軟件設(shè)計(jì)人員考慮的。 (3)系統(tǒng)時(shí)鐘分配
系統(tǒng)時(shí)鐘的分頻也是系統(tǒng)層面降低功耗可以考慮的方面。時(shí)鐘是系統(tǒng)中頻率最高的信號(hào),其功耗功之高是不容置疑的。在系統(tǒng)設(shè)計(jì)層面,可以考慮應(yīng)用要求,將系統(tǒng)設(shè)置為不同的工作模式,加入時(shí)鐘控制模塊,在不同的工作模式下選用不同頻率的時(shí)鐘,并且將一些不需要的模塊時(shí)鐘關(guān)閉。時(shí)鐘的分配可以使用內(nèi)部的狀態(tài)機(jī)實(shí)現(xiàn),也可以使用軟件實(shí)現(xiàn)。
例如,可以將系統(tǒng)分為4種工作模式:normal 、 slow、idle、sleep。在不同的模式下,器分頻的時(shí)鐘如下所示:
(4)算法與IP選擇在系統(tǒng)設(shè)計(jì)層次上面,還可以通過(guò)算法和IP這兩個(gè)方面降低功耗。
算法:算法級(jí)在算法級(jí)降低功耗是非常有價(jià)值的。在設(shè)計(jì)算法時(shí), 要分析該算法需要多少ALU操作, 需要多少次存儲(chǔ)器訪問(wèn), 要盡量使那些耗能多的操作最小化。算法級(jí)低功耗設(shè)計(jì)跟具體設(shè)計(jì)有關(guān)。比如,對(duì)于大規(guī)模運(yùn)算的應(yīng)用(比如FFT),使用對(duì)數(shù)系統(tǒng)(logarithmic number system,lns)比使用線性系統(tǒng)更好。lns在降低平均位元活躍度(也就是降低0和1的變化程度)的同時(shí)使用加法和減法實(shí)現(xiàn)乘除法,使效率比線性系統(tǒng)更高。因此基于lsn算法來(lái)實(shí)現(xiàn)FFT可以節(jié)省大量的功耗,但是加法器和乘法器的寬度會(huì)增加,使用FPGA實(shí)現(xiàn)時(shí)就會(huì)需要更大的LUT(查找表),而且這個(gè)查找表的大小是以指數(shù)增長(zhǎng)的。
在一些行為綜合工具中,可采用延時(shí)功耗乘積表示系統(tǒng)的優(yōu)化目標(biāo),以降低完成特定計(jì)算所需的狀態(tài)轉(zhuǎn)換數(shù),生成高效的計(jì)算結(jié)構(gòu)。算法這一方面的低功耗設(shè)計(jì)讓算法工程去考慮吧,我們來(lái)了解一下就可以了。
IP:現(xiàn)在的SoC設(shè)計(jì)依賴(lài)于IP的集成。在選擇IP時(shí),除了考慮到性能要求,還需要考慮到功耗問(wèn)題。例如,在選擇CPU時(shí),可以分析在完成相同的功能時(shí),哪種CPU功耗更大。 (5)其他
在系統(tǒng)層次上,除了可以上面那些因素外,我們還可以考慮異步設(shè)計(jì)。在現(xiàn)在的系統(tǒng)設(shè)計(jì)中,一個(gè)系統(tǒng)可能使用多個(gè)時(shí)鐘,但是在每個(gè)時(shí)鐘控制的區(qū)域內(nèi)部都設(shè)計(jì)成一個(gè)同步的子系統(tǒng)。通過(guò)時(shí)鐘樹(shù)綜合、插入緩沖器減少時(shí)鐘的偏移。這種方法在時(shí)鐘網(wǎng)絡(luò)上添加了大量的緩沖器,時(shí)鐘網(wǎng)絡(luò)消耗的功耗也增加。在異步設(shè)計(jì)里面,不需要全局時(shí)鐘,兩個(gè)模塊通過(guò)握手信號(hào)進(jìn)行交互,這時(shí)候就可以減少功耗。因此異步設(shè)計(jì)也是降低功耗的一種方法。
在大多是DSP中,需要用到FFT算法。FFT算法需要頻繁訪問(wèn)存儲(chǔ)器,我們可以在存儲(chǔ)器和處理器之間添加緩存,在處理器需要之前,預(yù)先將相關(guān)數(shù)據(jù)從存儲(chǔ)器中取到緩存里面。使用小范圍的緩存能夠使計(jì)算能耗大量下降,提高的FFT的效能。因此在系統(tǒng)設(shè)計(jì)的時(shí)候,特別是系統(tǒng)架構(gòu)設(shè)計(jì)的時(shí)候,可以考慮基于緩存的系統(tǒng)體系結(jié)構(gòu)進(jìn)降低功耗。
系統(tǒng)層次上面的低功耗設(shè)計(jì)方法還有很多,比如說(shuō)可測(cè)性設(shè)計(jì)上進(jìn)行低功耗設(shè)計(jì)、存儲(chǔ)器(內(nèi)存)的低功耗設(shè)計(jì)等,這些都可以在系統(tǒng)層次上面進(jìn)考慮,這里就不一一列出來(lái)了。





