賈 勤,馬馳遠,彭書濤
(國防科技大學(xué)計算機學(xué)院,湖南 長沙 410073)
近年來,集成電路行業(yè)的迅速發(fā)展和設(shè)計規(guī)模的不斷增大,使芯片總功耗大幅提升,功耗的提升可能導(dǎo)致芯片運行時溫度急劇上升,最終可能影響芯片正常工作。因此,如何有效地降低功耗成為了集成電路設(shè)計流程中一個急需解決的問題[1]。
在集成電路設(shè)計的整個流程中,每個階段都可以有針對性地進行功耗優(yōu)化,然而在設(shè)計流程的不同階段對功耗優(yōu)化的收益是不同的。在相同工藝實現(xiàn)的前提下,在設(shè)計流程中越早介入功耗優(yōu)化獲得的收益越大。如圖1所示,在系統(tǒng)設(shè)計階段和體系結(jié)構(gòu)規(guī)劃階段進行功耗優(yōu)化,都可以得到比較可觀的收益。反之,在設(shè)計完成后的生產(chǎn)階段,功耗優(yōu)化收益則極其有限。
Figure 1 Benefits of power consumption optimization at various stages
在芯片的設(shè)計階段,針對系統(tǒng)設(shè)計,可以通過優(yōu)化算法來達到降低功耗的目的;針對體系結(jié)構(gòu),可以使用多電壓域和增加睡眠模式等具體手段來有針對性地對某部分部件進行功耗優(yōu)化[3]。在芯片實現(xiàn)階段,針對代碼綜合,可在過程中加入時鐘門控和多閾值VT(Voltage Threshold)單元來降低功耗;針對布局布線,可以通過優(yōu)化時鐘樹、控制線長和單元VT比例對設(shè)計的功耗進行優(yōu)化[4]。
Figure 2 Power consumption calculation method of design tool
在現(xiàn)今較先進的工藝下,標(biāo)準(zhǔn)單元的功耗與時序是矛盾的[5]。因此,在優(yōu)化功耗的同時如何兼顧時序,成為功耗優(yōu)化過程中的關(guān)鍵問題[6]。本文重點關(guān)注物理設(shè)計階段的功耗優(yōu)化方法,采用先進工藝,在一個完成布局布線的高頻模塊上,通過2種不同的標(biāo)準(zhǔn)單元替換方法達到降低模塊功耗的目的,并從多個方面比較了2種方法的優(yōu)劣。
圖2所示為設(shè)計工具計算功耗的方法,一個單元的總功耗(Total Power)由3部分組成:開關(guān)功耗(Switching Power)、內(nèi)部功耗(Internal Power)和泄漏功耗(Leakage Power)。其中開關(guān)功耗的大小與翻轉(zhuǎn)率和單元連線的寄生參數(shù)有關(guān)[7]。而內(nèi)部功耗和泄漏功耗則是由工具從標(biāo)準(zhǔn)單元庫中獲得[8]。一般的標(biāo)準(zhǔn)單元庫中,單元的內(nèi)部功耗值是一個7×7的表格,同一標(biāo)準(zhǔn)單元在不同的輸入跳變延時(Transition)和輸出負(fù)載(Load)情況下,從標(biāo)準(zhǔn)單元庫中獲得的內(nèi)部功耗值不同。而通常情況下,同一標(biāo)準(zhǔn)單元處于同一模式下時,從標(biāo)準(zhǔn)單元庫中獲取的泄漏功耗值則是相同的[9]。
通過上述單元功耗組成可以看出,在模塊布局布線完成之后,如需要優(yōu)化功耗,則只能通過替換單元來實現(xiàn),由于決定開關(guān)功耗的線的寄生參數(shù)和翻轉(zhuǎn)率能改變的可能性極小,因此此階段只能改變單元的內(nèi)部功耗和泄漏功耗。不同的單元類型在標(biāo)準(zhǔn)單元庫中的內(nèi)部功耗和泄漏功耗的值是不一樣的,可以選擇功耗較小的單元替換設(shè)計中同等邏輯功能功耗較大的單元,從而達到優(yōu)化功耗的目的[10]。
時序與功耗關(guān)系的普遍規(guī)律是,在驅(qū)動足夠的情況下,一個單元的功耗越小,其在同等情況下的單元延時越大,反之,則單元延時越小。在高性能集成電路的實現(xiàn)過程中,時序是最關(guān)鍵的因素之一,但是在性能提升的同時,功耗也隨之增大[11]。
單元的功耗、延時和驅(qū)動力大小與VT類型有關(guān),不同類型的VT單元對應(yīng)著不同的閾值電壓。在先進工藝下,提供了3種不同閾值的單元,分別是標(biāo)準(zhǔn)閾值SVT(Standard VT)、低閾值LVT(Low VT)和超低閾值ULVT(Ultra Low VT)。同時還提供了不同驅(qū)動力的單元。相同的邏輯功能的單元可以被替換成不同驅(qū)動力和不同VT類型的單元。
圖3~圖5所示為先進工藝下普通緩沖器(Buffer)的單元延時、內(nèi)部功耗和泄漏功耗的柱狀圖。圖中的數(shù)據(jù)采用了同類型單元并給定任意輸入Transition,多次一驅(qū)四后單元的延時會達到一個恒定的值,此時單元的內(nèi)部功耗和泄漏功耗也變成了一個固定值,圖中的這3類值都是取的該情況下的數(shù)值。從圖3中可以看出,在這種計算方式下,驅(qū)動在D0~D4時,單元延時是逐漸減小的,但從D5開始單元延時沒有明顯的下降趨勢。
Figure 3 Cell delay of ordinary Buffer
Figure 4 Internal power of ordinary Buffer
Figure 5 Leakage power of ordinary Buffer
從圖4中可以看出,單元內(nèi)部功耗的變化規(guī)律遵循如下特點:相同驅(qū)動情況下,不同VT單元之間內(nèi)部功耗的變化不明顯,但當(dāng)驅(qū)動力變化時,內(nèi)部功耗的變化較為明顯。
從圖5中可以看出,單元的泄漏功耗在驅(qū)動變化和VT變化時都很明顯,但VT變化時,泄漏功耗的變化比例比驅(qū)動變化的比例更大,且呈現(xiàn)出階躍式變化。
在高性能集成電路的實現(xiàn)中,多工作模式多工藝角下的時序是重點,在進行功耗優(yōu)化時,也需要兼顧單元替換后在每個工作模式(Mode)和工藝角(Corner)下的時序,以最大限度地減少時序閉合的工作量。圖6是普通Buffer的單元延時在典型Corner和慢速Corner下的比例。從圖6中可以看出,若將一個Buffer單元從ULVT換成SVT,其單元延時的Corner之間比例從1.23左右變成了1.55左右。而不同驅(qū)動大小Buffer的單元延時在 Corner之間的比例波動不明顯。因此,在替換單元時,只改變驅(qū)動能力能更好地保持原有Corner之間的一致性。
Figure 6 Ratio of ordinary Buffer cell delay under SS Corner and TT Corner
在完成布局布線后,模塊級通常需少量手工設(shè)計修改工作,以修復(fù)時序、電壓降(IR drop)和設(shè)計規(guī)則檢查DRC(Design Rule Check)過程中發(fā)現(xiàn)的違反設(shè)計要求的情況。在這個階段,會通過替換單元的方式進行1~2輪功耗優(yōu)化。具體做法是,將時序不關(guān)鍵的數(shù)據(jù)路徑上的單元替換成功耗較低的單元,從而達到降低模塊整體功耗的效果。
本文研究基于先進工藝下的一個高頻互連模塊,典型Corner下主頻2.5 GHz,模塊內(nèi)不包含硬宏,全部由標(biāo)準(zhǔn)單元組成。面積為3 505.408 um× 300.0 um,總的邏輯單元數(shù)量為773 325。
由于該模塊在功能模式下有多個時序Corner需要檢查,其中1/3為Setup Corner,2/3為Hold Corner。為方便統(tǒng)計和比較分析,在功耗優(yōu)化前后,取時序較為關(guān)鍵的2個Corner:典型的一個Setup Corner和慢速的一個Setup Corner的最大違反量和違反條數(shù)為表征來衡量功耗優(yōu)化對時序的影響程度。下文中的各類功耗數(shù)據(jù)都是基于上述Corner,并使用同一版本時序檢查工具得出的結(jié)果。
基礎(chǔ)數(shù)據(jù)的功耗信息如表1所示,模塊的初始總功耗為0.907 2 W,其中開關(guān)功耗為0.297 2 W,內(nèi)部功耗為0.589 0W,泄漏功耗為0.038 9 W,可以看出,內(nèi)部功耗占比較大為64.93%。SVT、LVT和ULVT單元數(shù)量分別為439 509,84 934和248 882,SVT、LVT和ULVT單元數(shù)量和占比情況如表2所示,分別占56.83%,10.98%和32.18%。時序結(jié)果如表3所示,典型Corner下有49條違反路徑,最大違反為-0.009 ns;而慢速Corner下時序是干凈的狀態(tài)。
Table 1 Power data of based data block
Table 2 Number and ratio of standard cell class of based data block
Table 3 Timing violations of based data block in 2 Corners
以下基于上述模塊進行2組功耗優(yōu)化實驗,實驗具體過程如下所示:
實驗1在基礎(chǔ)數(shù)據(jù)的基礎(chǔ)上,以替換單元VT的方式對不滿足Setup 檢查的數(shù)據(jù)路徑上的單元進行替換。
在工程實踐中,設(shè)計工具對替換單元的VT情況下的時序預(yù)估比較準(zhǔn)確,因此,在這個實驗中,工具設(shè)置Setup 余量為0.005 ns,能確保工具預(yù)估的時序與實際替換單元之后的實際時序相差較小。
從表4中可以看出,模塊的總功耗下降了21.1 mW,其中,開關(guān)功耗下降了0.5 mW,內(nèi)部功耗下降了6.2 mW,泄漏功耗下降最多,達到14.3 mW,占基礎(chǔ)數(shù)據(jù)泄漏功耗的36.8%。表5所示為模塊完成功耗優(yōu)化后,SVT、LVT和ULVT單元的占比情況分別為69.75%,15.96%和14.29%,可以看出,ULVT單元數(shù)量比例下降較為明顯。實驗1中,共有182 990個標(biāo)準(zhǔn)單元被替換,占模塊中總單元數(shù)的23.66%。而其對時序的破壞程度如表6所示,典型Corner下,功耗優(yōu)化后模塊的時序違反情況是55條,且最差-0.008 ns,慢速Corner下時序違反情況是373條,且最差-0.023 ns,該結(jié)果在工程上是可以接受的。
Table 4 Power data of block in experiment 1
Table 5 Number and ratio of standard cell class of block in experiment 1
Table 6 Timing violations of block in 2 Corners in experiment 1
為分析其功耗的具體來源,本文研究了實驗1中替換的182 990個單元中每個單元的功耗變化情況,按照總功耗下降量從大到小排序后,將排在1001~1500的500個單元作為樣本分析每個單元的總功耗下降量的具體來源。如圖7所示,500個單元的總功耗下降量差不多處于同一水平,從總功耗下降量的組成可以看出,絕大部分下降量來自單元泄漏功耗的下降,只有少數(shù)單元的內(nèi)部功耗占比明顯,而大部分單元的開關(guān)功耗下降量幾乎為零。
Figure 7 Distribution of power consumption decreasement of 500 cells in experiment 1
由于對功耗優(yōu)化的需求比較大,在完成布局布線后的設(shè)計修改階段需要回收更多的功耗,因此進行了如下實驗:
實驗2不限定設(shè)計工具替換單元的方式,使其在保證時序的情況下,盡可能多地降低功耗,但是由于在單元驅(qū)動大小變化的情況下,工具對時序的預(yù)估準(zhǔn)確度會大大降低,因此,經(jīng)過反復(fù)實驗后,給工具設(shè)置的Setup余量增大到0.015 ns,使其在功耗優(yōu)化的同時減少對時序的影響。
從表7中可以看出,總功耗下降了24.6 mW,其中開關(guān)功耗下降3.1 mW,內(nèi)部功耗下降12.2 mW,泄漏功耗下降9.1 mW,可以看到內(nèi)部功耗的下降幅度比實驗1的內(nèi)部功耗下降幅度大,而泄漏功耗的下降幅度比實驗1的泄漏功耗下降幅度小,總功耗下降幅度比實驗1的總功耗下降幅度略大。如表8所示,模塊中SVT、LVT和ULVT單元的占比變成了58.48%,12.78%和27.78%,其UVLT比例也有所下降,但沒有實驗1中的ULVT比例下降大,且實驗2中一共替換了286 707個單元,占到單元總數(shù)的37.07%。如表9所示,實驗2的功耗優(yōu)化對時序的影響也在可接受的范圍內(nèi),典型Corner下違反21條,且最大違反為-0.031 ns;慢速Corner下違反109條,且最大違反為-0.094 ns,違反條數(shù)比實驗1的違反條數(shù)少,但最大違反量比實驗1的最大違反值大。
Table 7 Power data of block in experiment 2
Table 8 Number and ratio of standard cell class of block in experiment 2
Table 9 Timing violations of block in 2 Corners in experiment 2
和實驗1相同,取總功耗下降量排在1001~1500的500個單元為樣本,分析其總功耗的下降量的具體來源。從圖8中可以看出,這500個單元大部分的總功耗下降量來自內(nèi)部功耗。由此可見,減小單元驅(qū)動的功耗優(yōu)化方式能獲得更多的內(nèi)部功耗下降收益。
Figure 8 Distribution of power decreasement of 500 cells in in experiment 2
圖9為單元總功耗下降量的每個數(shù)量級中的單元數(shù)量分布。實驗1中單元總功耗的下降量分布相對集中在1.0E-8~1.0E-6。而實驗2中單元總功耗的下降量分布沒有實驗1中分布那么集中,1.0E-9及以下數(shù)量級的下降量也有不少。
Figure 9 Distribution of power consumption decreasement magnitude in 2 experiments
這種現(xiàn)象的出現(xiàn)是因為實驗1中,單元只替換了VT,從對不同VT的Buffer泄漏功耗的變化圖(如圖5所示)中可以看出,改變單元VT時,泄漏功耗呈階躍式變化,而內(nèi)部功耗變化不明顯,呈現(xiàn)出來的總功耗變化量會集中分布在某一區(qū)間內(nèi)。實驗2中的單元大部分替換了驅(qū)動,而改變單元驅(qū)動時,泄漏功耗和內(nèi)部功耗的變化都是比較連續(xù)的,因此總功耗的變化量就會分散在各個數(shù)量級。
2個實驗替換的單元個數(shù)相差非常大,但總功耗下降的量差不多,對時序造成的影響也不相同。實驗1由于只替換單元的VT,因此功耗下降大部分來自泄漏功耗,而內(nèi)部功耗的下降量占比較小。由于不同VT單元Corner間的單元延時比例差異較大,導(dǎo)致功耗優(yōu)化后Corner間時序差異較大。實驗2主要進行單元驅(qū)動的替換,只要時序滿足,且邏輯等價,工具就會對其進行最大限度的優(yōu)化,因此其總功耗的下降量主要來源于內(nèi)部功耗。且由于不同驅(qū)動單元Corner間的單元延時比例差不多,因此在保持Corner間時序一致性方面,實驗2的方式比實驗1的略好。
2種實驗方法在工程實踐中都是可取的,在完成布局布線后的設(shè)計修改階段,功耗優(yōu)化時如果側(cè)重優(yōu)化單元的泄漏功耗,則可以采取替換VT的方式;如果側(cè)重優(yōu)化單元的內(nèi)部功耗,則可以采用替換驅(qū)動的方式。
本文將2種不同的標(biāo)準(zhǔn)單元替換策略運用到先進工藝下的高頻互連模塊,研究比較了2種策略的功耗優(yōu)化效果。研究結(jié)果表明,只替換VT的優(yōu)化方法對泄漏功耗的優(yōu)化效果較好,而替換驅(qū)動的優(yōu)化方法對內(nèi)部功耗的優(yōu)化效果較好,二者對時序的影響差別不大。該研究結(jié)論對物理設(shè)計中的設(shè)計修改具有指導(dǎo)意義,能夠在保證性能的前提下最大限度地降低模塊功耗,為先進工藝節(jié)點下高頻模塊的功耗優(yōu)化工作提供指導(dǎo)。