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