顧東華 ,曾智勇 ,余金金 ,黃徐輝 ,朱嘉駿 ,何湘君 ,陳澤發(fā)
(1.燧原科技上海有限公司,上海 200000;2.上海楷登電子科技有限公司,上海 200000)
芯片設(shè)計一直在追求最好的PPA,在28 nm 之前的技術(shù)節(jié)點上,很多時候更多地優(yōu)先考慮性能和面積。隨著技術(shù)節(jié)點向7 nm 進化,標準單元的密度不斷提升,隨之而來的功耗密度也越來越大。因此作為PPA 之一的功耗在設(shè)計中變得尤為重要。設(shè)計芯片需要在流程的各個節(jié)點盡量對功耗進行精確評估并進行優(yōu)化,否則最終芯片的性能很可能由于功耗過大而無法充分發(fā)揮。
首先來看下從原理上芯片的功耗的計算方式。集成電路的功耗一般分為靜態(tài)功耗和動態(tài)功耗。如圖1 所示,靜態(tài)功耗又稱為泄露功耗(leakage power),是指電路處于等待或不激活狀態(tài)時泄漏電流所產(chǎn)生的功耗。
圖1 中箭頭表明了在通電狀態(tài)下PMOS 內(nèi)主要的泄漏電流及其走向,意即:
圖1 靜態(tài)功耗示意圖
泄漏電流(Leakage Current)=漏極->N-Well+Gate->N-Well+源極->漏極
泄漏電流存在的原因在于,MOS 管中的多種摻雜區(qū)形成導電區(qū)域,同時這些區(qū)域會組成多個PN 節(jié),從而在通電后形成一系列微小的電流。
盡管在現(xiàn)今芯片的工作電壓已經(jīng)很低的前提下每個MOS 管的漏電流很小,但由于每顆芯片中集成的晶體管多至幾億甚至幾百億,積少成多,導致芯片的整體泄露功耗變得越來越恐怖。
在后端設(shè)計中,由于每個標準單元(standard cell)的leakage 都集成在其liberty 庫文件(.lib)中,因此計算leakage power 只需在制定條件下將design 中所有的標準單元(包括各種Macro)的leakage 值相加即可。
目前所有的主流PR 工具對此都有支持。需要指出的是,由于一個標準單元的leakage power 和其面積成正比,因此在實際后端設(shè)計的各個階段,尤其是low power設(shè)計中,一般會重點關(guān)注芯片中邏輯門的面積變化并以此快速推斷design 的leakage 功耗變化。
另一部分稱為動態(tài)功耗,是指芯片在工作過程中晶體管狀態(tài)跳變所產(chǎn)生的功耗。當把反相器簡化成一個簡單的RC 電路時,就可以清晰地看出充放電時的電流走向。當芯片處于工作狀態(tài)時,每一個工作中的標準單元都會隨著時鐘以及數(shù)據(jù)的翻轉(zhuǎn)而不斷重復上述過程,從而產(chǎn)生大量的動態(tài)功耗。
在實際后端設(shè)計時,動態(tài)功耗由于和芯片的功能息息相關(guān),因此在計算的時候會引入翻轉(zhuǎn)率(toggle rate)的概念。翻轉(zhuǎn)率是指單位時間內(nèi)標準單元上信號翻轉(zhuǎn)的次數(shù),翻轉(zhuǎn)率的高低直接影響到標準單元上的動態(tài)功耗開銷。
在實際計算動態(tài)功耗的時候,又會分成兩個部分。一部分為標準單元內(nèi)部的動態(tài)功耗,一般叫做短路功耗,又可以稱為內(nèi)部功耗(Internal Power),如圖2 所示,這部分的計算是嵌入liberty 庫文件內(nèi)部,通過標準單元的input transition 和output load 來查表得到的。
圖2 內(nèi)部功耗示意圖
另一部分為互連線(net)上的動態(tài)功耗,也稱為翻轉(zhuǎn)功耗(Switching Power),這部分的計算通過將所有net上每個翻轉(zhuǎn)周期的功耗乘以其翻轉(zhuǎn)率并相加得到。
翻轉(zhuǎn)率通過某種固定格式的文件傳入EDA 工具,比較常用的格式有SAIF (Switching Activity Interchange Format)、VCD(Value Change Dump)以及FSDB(Fast Signal Database)文件。
目前主流的PR 工具均支持此類用法,但是簽核signoff 時仍然需要比較專業(yè)的power 計算工具如Synopsys PrimeTime PX 或Cadence Palladium 等。
至此,我們基本了解了一顆芯片整體功耗的計算方法。而在現(xiàn)今十分重要的低功耗設(shè)計中,所有的手法都是從降低以上兩個方面(Static,Dynamic)的功耗著手的:比如應(yīng)用多個power domain 以便在芯片的某一部分功能不用的時候?qū)⑵鋽嚯婈P(guān)閉;或者通過升級更先進的工藝來降低每個晶體管的尺寸從而降低整體面積;抑或通過改善時鐘樹綜合手段來降低芯片中占比很大的時鐘網(wǎng)絡(luò)功耗。
傳統(tǒng)的功耗優(yōu)化方案一般會采用減少ULVT cell 的使用率來優(yōu)化靜態(tài)功耗,另外引入無向量模式(vector-less)設(shè)置一個大概的switching activity 如15%,然后進行動態(tài)功耗優(yōu)化。但是這樣的優(yōu)化就要一定的隨機性因此目標不明確,效果不明顯。
在7 nm 的AI 類芯片中,動態(tài)功耗占據(jù)了主體,僅靠對于靜態(tài)功耗的優(yōu)化,無法滿足功耗優(yōu)化的目的。因此帶入能表征芯片實際工作的工況波形,再進行精確的動態(tài)功耗優(yōu)化更具有決定作用。
一般模塊設(shè)計者會對模塊進行功能驗證,某些工況下該模塊的功耗會達到峰值。此時通過驗證工具可以給出峰值功耗波形。該波形會記錄該模塊所有信號的翻轉(zhuǎn)信息。這里的驗證工具可以是Cadence 的Palladium(如圖3 所示)。當然有些模塊的峰值功耗可能有多個情況,并且會涉及不一樣的邏輯空間,那么就需要一組波形來表征該模塊的功耗行為。但是一般驗證工具是基于RTL設(shè)計給出來的RTL 波形,它雖然可以直接用于網(wǎng)表的優(yōu)化,但由于它只能一定程度地映射網(wǎng)表中的寄存器,而無法精確匹配寄存器中間的大量組合邏輯。因此僅僅依賴RTL 波型進行優(yōu)化不能達到最優(yōu)效果。
圖3 Palladium 示意圖
Cadence 在其功耗計算工具Joules 中集成了Joulesreplay,該功能可以將RTL 波形轉(zhuǎn)換到與之相對應(yīng)的門級網(wǎng)表(Gate Level Netlist)并且進行仿真,產(chǎn)生所有組合邏輯的詳細波形。有了這一功能就可以在優(yōu)化過程中使用更為精確的網(wǎng)表波形。
當拿到RTL 設(shè)計,并利用Genus 進行綜合時,可以利用對應(yīng)的RTL 波形開始進行功耗優(yōu)化。Genus 綜合可以分為3 個步驟:syn_gen、syn_map 和syn_opt。因此,可以形成如圖4 所示Genus 結(jié)合FSDB 的綜合流程圖。
圖4 Genus 結(jié)合FSDB 綜合流程
如圖5 所示,在Innovus 中實現(xiàn)Place 和Routing 也分為3 個階段:place_opt、cts_opt 和route_opt。同樣每一步都加入Joules-replay 來實現(xiàn)優(yōu)化所需的網(wǎng)表波形。同時可以通過設(shè)定weight 值來實現(xiàn)引入多個波形同時優(yōu)化。
圖5 PR 各階段結(jié)合FSDB 功耗優(yōu)化流程
·Innovus:
如圖6 所示,在Signoff 階段,通過IPA 工具進行power的signoff,可以了解到最終power 的靜態(tài)功耗和動態(tài)功耗的大小。引入IPA 產(chǎn)生的FSDB 至IR 仿真中,得到vector 的IR 結(jié)果。
圖6 sigoff 流程圖
選取了三個case 作為比較對象,如表1 所示,case 0為不引入FSDB 的base 情況,case 1 為由Genus 綜合開始至Innovus PR 各階段均引入FSDB 的全流程功耗優(yōu)化,case 2 為在case 1 的基礎(chǔ)上同時使用MBB cell。
表1 實驗設(shè)定
如表2 所示,對比case0、case1 和case2 的QOR 結(jié)果可以發(fā)現(xiàn):(1)三個case 時序結(jié)果都比較一致,且在安全范圍;(2)case1 和case 2 的DRC 數(shù)量有增多,但增加的DRC 主要集中在IO ports 附近,核心區(qū)域的DRC 沒有明顯變化;(3)case 1 和case 2 的IR 結(jié)果變好,這是引入FSDB 的case,平均功耗更優(yōu)化。總的來看,引入FSDB 全流程功耗優(yōu)化對PR 的QOR 影響不是很大,而且對IR還有提升。
表2 實驗QOR 結(jié)果對比
Joules-replay 可以具體表征每個階段功耗的數(shù)值,為此總結(jié)了引入FSDB 后各階段功耗優(yōu)化的比例,如圖7所示,在綜合階段有7%的優(yōu)化效果,當?shù)竭_signoff 時有10.5%的優(yōu)化,此外,當FSDB 結(jié)合MBFF cell 使用時,功耗優(yōu)化效果會進一步提升,在簽核階段達到19.8%的比例。
圖7 各階段功耗優(yōu)化的比例
表3 列舉了簽核signoff 階段,這三個case 的具體功耗組成,結(jié)果顯示,case1 和case 2 的功耗優(yōu)化主要是由于內(nèi)部功耗和開關(guān)功耗大幅度降低。
表3 各case 功耗組成占比
為進一步優(yōu)化功耗,在Tempus timing signoff 的流程中進行PowerECO,如圖8 所示,PowerECO 能夠進一步優(yōu)化1.8%的功耗,最終全流程功耗優(yōu)化能夠達到21%的優(yōu)化效果。
圖8 Joules-replay+MBB 各階段功耗優(yōu)化的比例
綜上所述,本文使用了帶FSDB Genus 綜合流程,帶FSDB Innovus PR 實現(xiàn)流程,以及Tempus Power ECO 簽核優(yōu)化流程,并在整個實現(xiàn)與優(yōu)化流程中結(jié)合MBFF 技術(shù),可以實現(xiàn)從RTL 到GDS 的21%的功耗優(yōu)化,這為大芯片的功耗優(yōu)化帶來全新的選擇,為芯片的PPA 的提升提供了一種全新的方法。