隨著制造工藝水平的提升,F(xiàn)PGA密度和復(fù)雜程度不斷提高,功耗也在越來越多的設(shè)計(jì)中成了一個(gè)必須要考慮的要素。如何在器件結(jié)構(gòu)和工藝中對(duì)功耗進(jìn)行優(yōu)化,如何在設(shè)計(jì)前期盡可能準(zhǔn)確的估計(jì)功耗,如何在設(shè)計(jì)中運(yùn)用合理的設(shè)計(jì)方法和器件結(jié)構(gòu)降低功耗,綜合工具如何針對(duì)功耗進(jìn)行優(yōu)化,這些都對(duì)FPGA生產(chǎn)廠家、EDA工具提供商和設(shè)計(jì)工程師提出了新的挑戰(zhàn)。
FPGA功耗的構(gòu)成
由圖1我們可以看到功耗基本上可以分成3部分:管腳觸發(fā)器翻轉(zhuǎn)的動(dòng)態(tài)功耗,芯片內(nèi)部觸發(fā)器翻轉(zhuǎn)的動(dòng)態(tài)功耗和芯片靜態(tài)功耗。在這三部分當(dāng)中靜態(tài)功耗是由芯片本身的生產(chǎn)工藝決定,不會(huì)隨著設(shè)計(jì)和溫度的變化而變化;內(nèi)部和管腳的動(dòng)態(tài)功耗來源于在高低電平翻轉(zhuǎn)過程中對(duì)電容的充電,并且這一部分可以由如下公式進(jìn)行計(jì)算:

P=kCV2f
由此公式我們可以看到影響動(dòng)態(tài)功耗的因素包括:介質(zhì)介電常數(shù)k,電容包括負(fù)載電容以及各種寄生電容c,電壓V和觸發(fā)器翻轉(zhuǎn)頻率f
基于90納米工藝的功耗優(yōu)化
如今半導(dǎo)體廠商們使用了很多種技術(shù)去降低功耗,比如使用Low-k電介質(zhì)材料可以降低大約10%的10及內(nèi)部晶體管的功耗,從圖1中,我們可以看到10及內(nèi)部晶體管的功耗占據(jù)了芯片總功耗的大部分,由此可見,采用Low—k電介質(zhì)降低的10%的功耗是非常可觀的;另外還有一些技術(shù)既可以降低動(dòng)態(tài)功耗,也可以降低靜態(tài)功耗,比如調(diào)整晶體管的閡值電壓,當(dāng)然這種調(diào)整是基于功耗與性能間的平衡,為每個(gè)晶體管設(shè)置閾值電壓。又比如使用三層氧化物技術(shù)降低靜態(tài)功耗,尤其在可配置RAM中比較明顯。
下面主要以ALTERA 90nm工藝的StratixlI器件為例介紹半導(dǎo)體制造工程中的技術(shù):
FPGA功耗的預(yù)測

在FPGA上板驗(yàn)證之前就對(duì)其功耗進(jìn)行準(zhǔn)確預(yù)測對(duì)系統(tǒng)的供電和散熱設(shè)計(jì)的重要性自不言而喻。針對(duì)這點(diǎn),Altera不僅提供了單獨(dú)的EPE(EarlyPower Estimator)工具可以針對(duì)FPGA在不同的環(huán)境溫度,散熱片大小,風(fēng)速等各種條件下的功耗進(jìn)行評(píng)估,也在QuartuslI軟件中集成了Power Play這一功耗分析工具。并且在Power Play中可以導(dǎo)入后仿真時(shí)的VCD文件,從中提取出各個(gè)觸發(fā)器的翻轉(zhuǎn)率,從而使分析結(jié)果更加接近于實(shí)際情況。
綜合工具對(duì)功耗的影響
同樣的RTL代碼,使用不同的工具或者同一工具的不同選項(xiàng)綜合出的邏輯結(jié)構(gòu)不盡相同,這些也都會(huì)影響的整個(gè)器件的最終功耗。一個(gè)典型的例子就是RAM結(jié)構(gòu)的編譯。FPGA內(nèi)部的RAM是固定大小的塊RAM,如果要實(shí)現(xiàn)一個(gè)超出單個(gè)塊RAM大小的RAM時(shí)往往需要將多個(gè)塊RAM拼湊而成。比如在Cyclone器件中實(shí)現(xiàn)一個(gè)4K'4大小的RAM,需要4個(gè)M4K塊RAM來實(shí)現(xiàn);但是這個(gè)實(shí)現(xiàn)又有著兩種不同的結(jié)構(gòu)(見圖2)。
如圖2A,采用了拼深度的辦法,將高位地址線Addr[10:11]作為片選信號(hào)和數(shù)據(jù)輸出Mux的選擇信號(hào),雖然額外多了一個(gè)譯碼器和一個(gè)Mux,但是確保了每次讀寫有且僅有一個(gè)M4K在工作。再看圖2B,采用了拼數(shù)據(jù)位寬的辦法,雖然省掉了額外的譯碼器和Mux,但是每次讀寫時(shí)每一個(gè)M4K都在工作。顯然,采用圖2A的方式多用了資源,但是降低了功耗;采用圖2B的方式節(jié)省了資源,但是缺浪費(fèi)了功耗。
針對(duì)綜合工具對(duì)功耗的影響,QuartusII從5.1開始在綜合設(shè)置上除了面積優(yōu)先和速度優(yōu)先之外增加了一個(gè)功耗優(yōu)化選項(xiàng),當(dāng)選擇功耗優(yōu)先時(shí),QuartusII工具會(huì)自動(dòng)針對(duì)當(dāng)前的RTL設(shè)計(jì)選擇一個(gè)功耗最優(yōu)的結(jié)構(gòu)。
代碼風(fēng)格對(duì)動(dòng)態(tài)功耗的影響
如圖l所示,動(dòng)態(tài)功耗占用了整個(gè)芯片功耗的大部分,而動(dòng)態(tài)功耗與芯片內(nèi)部的資源密切相關(guān)。如圖3所示在在StratixlI和CyclonelI器件中的動(dòng)態(tài)功耗源的分布情況,通過對(duì)功耗源分布的理解有助于我們?cè)诖a設(shè)計(jì)階段就考慮到如何降低功耗。圖3中所有的設(shè)計(jì)都是在200MHz頻率下使用多種邏輯資源產(chǎn)生的功耗。

可以看到在StratixII和CycloneII器件中大部分的功耗都是消耗在布線資源中,其余的分布在邏輯、時(shí)鐘和內(nèi)嵌RAM中。
時(shí)鐘功耗管理
時(shí)鐘由于具有高的翻轉(zhuǎn)率和很長的分布路徑,在動(dòng)態(tài)功耗中占據(jù)了較大的比例,從圖3中可以看出在StratixlI中平均有7%的功耗是由全局時(shí)鐘布線帶來的,而在CyclonelI中則高達(dá)15%。實(shí)際中與時(shí)鐘有關(guān)的功耗可能更高,因?yàn)樵谶壿嫛AM和DSP模塊內(nèi)部的局部時(shí)鐘也會(huì)消耗大量功耗。
時(shí)鐘布線功率可以通過QuartusII軟件自動(dòng)優(yōu)化,這里我們主要介紹在設(shè)計(jì)中利用Clock Control模塊降低功耗的方法。Clock control模塊是一個(gè)時(shí)鐘驅(qū)動(dòng)器,它可以由設(shè)計(jì)者動(dòng)態(tài)的使能或關(guān)斷時(shí)鐘網(wǎng)絡(luò),或者在多個(gè)時(shí)鐘源之間切換。其結(jié)構(gòu)如圖4所示:
用戶可以利用ena信號(hào)動(dòng)態(tài)關(guān)閉指定的時(shí)鐘網(wǎng)絡(luò),使得由其驅(qū)動(dòng)的所有邏輯單元停止翻轉(zhuǎn),從而起到降低整個(gè)芯片功耗的作用。
另一種時(shí)鐘功耗是LAB內(nèi)部驅(qū)動(dòng)觸發(fā)器的時(shí)鐘所產(chǎn)生。如圖3所示,在StratixII器件中每個(gè)LAB中的Clock和Clock enable都物理上連接在一起的,比如:使用labclk1信號(hào)的同時(shí)labclkenal信號(hào)也是使能的。因此,為了降低LAB-wide的時(shí)鐘功耗,又不用關(guān)閉整個(gè)時(shí)鐘樹的話,就可以考慮用Clock enable信號(hào)控制內(nèi)部觸發(fā)器的翻轉(zhuǎn)。參考的HDL代碼如表2所示。
此處的時(shí)鐘門控邏輯將會(huì)被QuartuslI軟件自動(dòng)的轉(zhuǎn)為LAB-level的clock enable信號(hào)。從而減少時(shí)鐘樹分支的數(shù)量,降低時(shí)鐘功耗。

PipeLining和Retiming對(duì)功耗的影響
帶有大量毛刺的設(shè)計(jì)將會(huì)消耗更多的功耗,因?yàn)槊瘫旧砭哂懈叻D(zhuǎn)率。毛刺的產(chǎn)生是由于輸入信號(hào)傳輸路徑的差異所帶來的,它使得組合邏輯的輸出產(chǎn)生了不確定的同時(shí)也是不必要的電平翻轉(zhuǎn)。設(shè)計(jì)中如果使用了大量的組合邏輯將會(huì)使毛刺傳播的更廣泛,繼而帶來大量的功耗。使用Pipeling結(jié)構(gòu)可以有效的阻止毛刺的傳播,在復(fù)雜的組合邏輯中使用觸發(fā)器隔離的Pipeling結(jié)構(gòu),可將組合邏輯的復(fù)雜度降低,也同時(shí)將毛刺可傳播的范圍也縮小了。Retiming功能同樣可以調(diào)整組合邏輯的復(fù)雜度。
下面我們通過一個(gè)實(shí)際例子來看,實(shí)驗(yàn)用到的三個(gè)例子的算法都是依賴于異或門功能,具體的資源使用情況如表3。使用PowerPlay功耗分析工具估算功耗,StratixII器件動(dòng)態(tài)功耗的最大降幅達(dá)到了31%。
下一代降低功耗的工藝展望
眾所周知,功耗隨著器件密度和時(shí)鐘頻率的提升而加倍的增加,降低功耗將對(duì)芯片工藝技術(shù)和軟件優(yōu)化算法等提出了更高的要求,目前工業(yè)界領(lǐng)先的65nm降低功耗的技術(shù)如表4所示,在即將推出的6 5nm的下一代StratixIII產(chǎn)品中,將采用這些技術(shù)降低功耗。