一張紙對折,紙上兩點的距離會隨之縮短。晶片也是如此——當平面微縮(x、y方向)走到物理極限,將設計折向Z軸,互連變短,延遲與功耗隨之下降。這便是「邏輯折疊」(LogicFolding)技術的起點。
如今,LogicFolding 被列為“韜定律”的實現路徑之一:讓7奈米工藝通過設計創新,獲得接近1.4奈米等級的系統能力。
作為全球最早一批研究LogicFolding的學者,IEEE Fellow、南加州大學教授Sung Kyu Lim受邀來到上海新江灣黃大年茶思屋,與我們分享:LogicFolding會給晶片設計帶來什麼?代價幾何?又依靠什麼完成這場“折疊”?
以下為 Lim 教授本次分享的文字實錄——
我做3D IC已經很久了。坦白說,在很長一段時間裡,並沒有取得太大的成功。直到幾個月前,我在上海聽到了“韜定律”和“LogicFolding”(邏輯折疊),當時的第一反應就是:這就是我一直在等的東西。
我一直堅持一個判斷:當摩爾定律停下來,也就是x、y方向的微縮停下來時,唯一還能繼續微縮的方向就是z方向。這正是我當年投身3D IC,並且主要從EDA和設計角度切入的動機。
但問題在於,大家並沒有停止x、y方向的微縮,現在已經做到了埃米級。所以除了中國之外,產業界其實並沒有真正強烈的動力去往垂直方向走。中國因為EUV禁令,摩爾定律被迫停下,這時候你們必須走向z方向。而這恰恰就是我一直希望看到的事情,現在它在這裡發生了。今天我會講清楚:走向 z 方向、做LogicFolding和細粒度 3D IC,究竟能帶來什麼。
韜定律要解決的問題
“韜定律”的要點,大家應該已經看過很多遍了:用7奈米工藝,做出1.4奈米(14埃)的性能。怎麼做到?靠LogicFolding設計。今天我要講的,就是LogicFolding如何讓“成熟節點的3D IC”打敗“先進節點的2D IC”。
3D IC 的殺手級應用
我每次講3D IC,總會被問到兩個問題:殺手級應用在那裡?散熱怎麼辦?關於殺手級應用,過去已經有一些商業產品:
索尼圖像感測器:很早就採用了3D IC,上層是光電二極體等感光部分,下層是記憶體器,再下面是訊號處理電路。
- AMD 3D V-Cache:在CPU之上堆疊末級快取,提升遊戲體驗。
- 英特爾 Foveros:通過堆疊22奈米與10奈米晶片,來改善10奈米工藝的良率。
但這些都還屬於小規模應用。真正的轉折是HBM。這段時間韓國之所以這麼高興,原因就在於此。HBM本質上就是把多顆DRAM堆疊起來,底部是邏輯基底晶片。大家每次使用AI服務時,存放在HBM中的資料,就是你們拿到token的來源。所以,3D IC終於有了一個人人都在用的殺手級應用,那就是HBM。
不過,只有當3D IC真正進到大家手裡的手機中,我們才能說它已經進入日常生活、實現了普及。而我聽到了“韜定律”的發佈——他們要用7奈米交付1.4奈米等級的能力,實現路徑就是LogicFolding。
什麼是 LogicFolding
用最直觀的方式來理解:LogicFolding就像摺紙。假設一張長寬比2:1的紙,把它對折。很多指標都會改善,尤其是連線長度。比如紙上的A、B兩點,對折之後距離直接變成零;而對角的A到C,折疊後距離也大幅縮短。所以,折疊帶來一個非常確定的收益:互連長度縮短。
這一點在IC設計中極其重要。電路的延遲,很大程度上取決於訊號在器件之間傳輸所花的時間,也就是連線帶來的延遲。連線變短,延遲就改善。這正是“韜定律”所期待的:與其繼續研究如何驅動長連線,不如通過折疊設計,直接把連線延遲降下來。
3D IC 的三種設計粒度
- 粗粒度(die級):把2D IC直接一層層堆起來,形成多層3D IC。HBM就是典型例子。
- 塊級(block level):打破各裸片的層次結構,拆成功能模組,再在不同層之間移動這些模組來最佳化設計。
- 門級(gate level):把這些模組綜合成大量邏輯閘,在層與層之間移動單個門。
華為的LogicFolding方案針對的是後兩種——既可以在層間移動模組,也可以移動邏輯閘。核心目標是一致的:把原本在一個平面上的大設計折疊到多層,互連長度隨之下降。這其中,每種粒度各有利弊:
- 粗粒度堆疊設計容易,因為可以直接復用已有的2D設計,只需要增加層間的“樓梯”或“電梯”,也就是位於中間區域的TSV島。層間連線也不多,比如目前HBM只有幾百根訊號連接,再加幾百根用於供電。因此製造容易、良率高,但PPA(性能、功耗、面積)不會有很強的競爭力。
- 塊級和門級則要移動和最佳化大量對象,甚至要處理單個邏輯閘,設計複雜度大幅上升;層間連線也會顯著增加,因為每個門只要鄰居在另一層就需要垂直連接。所以細粒度3D IC在EDA和良率上都有挑戰,但由於最佳化深度大得多,性能會好很多。
折疊對 PPA 的影響
我給大家展示兩種折疊方式:弱折疊與強折疊。這個項目計畫用28奈米工藝實現OpenSPARC T2,包含8個核心、8個L2資料快取以及其他模組。這項工作由英特爾支援,是我們12年前做的。也就是說,當時已經有公司對折疊感興趣,只是從未把晶片商業化。
弱折疊就是劃一條切割線,直接對折。這樣設計會有一點改善,但幅度有限,因為折疊只減少了一部分連線。真正要做的是折疊之後再重新擺放。於是我把所有核心移到頂層,把所有快取塊移到底層,再把中間的功能模組重新排布,這就是一級折疊。這樣面積縮小,連線縮短,PPA(性能、功耗、線長)都得到改善。但我沒有停下來,而是遞迴地繼續折疊。比如取出其中一個核心繼續對折,把上半部分放在頂層,下半部分放在正下方。原則上可以一直折下去,直到折不動為止,而折得越多,PPA越好。
華為在實現“韜定律”時面臨的兩大挑戰
華為正在全力實現“韜定律”,這其中有兩個必須克服的主要挑戰:
第一是現有的晶片設計軟體。我們都知道,數字晶片不是靠人手工設計的,而是靠電腦和演算法完成的,也就是EDA工具。因此我們需要更好的演算法來設計LogicFolding晶片。今天大家看到的所有折疊版圖,都不是我手工做的,而是電腦演算法生成的。這些演算法裡,有的基於AI,有的基於傳統方法,稍後我會詳細講。
第二是散熱。堆疊的層數越多,熱點溫度越高,冷卻始終是3D IC的挑戰。
今天我想給大家講三部分內容:
- 我與英特爾合作,以及後來與三星合作的折疊研究結果;
- 這些折疊設計所需的EDA演算法與設計自動化工具
- 我們的3D測試晶片——我帶了幾片樣品,待會兒傳給大家看。
看到自己很久以前做的這些工作如今重新煥發生命力,我非常高興。
1.英特爾晶片如何靠“折疊”功耗直降20%
先說一句可能有點自誇的話:據我所知,我們12年前發表在DAC上的那篇論文,很可能是第一篇同時給出折疊方案、PPA結果和支撐它的EDA演算法的論文。在OpenSPARC T2上,我一共做了三級折疊:
- 一級折疊:切割之後,把兩組模組分別搬到上下兩層。
- 二級折疊:取出其中一個模組繼續切割、上下分置。
- 三級折疊:在上半部分繼續切,再把其中一部分移到底部。
不斷遞迴切割,每切一次,PPA都在改善,折疊塊的質量也更好。
論文資訊:M. Jung, T. Song, Y. Wan, Y. Peng, S. K. Lim, "On Enhancing Power Benefits in 3D ICs: Block Folding and Bonding Styles Perspective," DAC 2014
以一個核心為例,核心內部有LSU、FGU、EXU0/EXU1、表尋找等單元。這些塊可以被劃分到兩層:比如LSU放到頂層,IFU放到底層,執行單元分置上下。
在這個過程中,二級折疊的收益可以使線長縮短13.3%,功耗降低14%。因為原本LSU與IFU之間的連線很長,現在兩者上下相對,垂直距離短得多。而連線一旦變短,所需的緩衝器就更少——因為要讓晶片跑到目標頻率,就必須插入大量時序緩衝器,而緩衝器數量取決於連線長度;同樣,為了滿足時序目標需要放大電晶體尺寸,連線短了、延遲小了,也就不必把電晶體放得那麼大。這些因素疊加起來,就是14%的功耗節省。
需要強調的是,這不是手工做的。我把2D版圖交給演算法,演算法自動生成上下兩層的版圖,我沒有動過滑鼠。
三級折疊方面,我進一步把執行單元等模組繼續對折,比如把LSU拆成LSU-top和LSU-bottom。這就是華為在做的事:折疊、折疊、再折疊。他們要用邏輯折疊以7奈米對標1.4奈米,指的正是這件事——性能的提升來自折疊與堆疊,而不是EUV。對這五個模組做三級折疊,整體帶來約9.2%的線長節省、10%的緩衝器減少,合計約5%的功耗下降。
為什麼選這五個模組,而不是別的?因為有些模組折疊後收益很小,有些則很大。那麼如何判斷?12年前我們沒有機器學習方法可用,所以用了很樸素的判據:
- 這個模組的功耗高不高?功耗高,折疊後可期待的功耗節省就大。
- 這個模組內部連線多不多?因為折疊的作用就是縮短連線,連線少的模組折了也沒什麼收益。
最終我們要找的,就是功耗高且連線密集的模組。這裡也有研究機會:除了功耗和連線數,還可以引入別的特徵,更準確地預測折疊後的收益。另外,我們當時關注的是功耗,而華為可能更關心性能——那麼應該折疊那些模組,才能縮短整體的最長路徑延遲?這是一個開放問題。
在折疊之後,需要大量“樓梯”和“電梯”。一級折疊只需要約7,000個層間連接,而大量折疊之後需要接近100,000個。代工廠要製造的圖形越多,難度越大、良率挑戰越大。但如果願意付出這個代價,性能會好很多。
2D IC vs 一級折疊 vs 三級折疊
我們在同一速度下比較三種實現(即等性能功耗對比):
在這個過程中,我們沒有用EUV,也沒有用先進節點,做的只是折疊並把裸片鍵合成3D IC,電池續航就能延長20%——這就是通過多級折疊不斷提升晶片質量。同時,晶片面積也減半,因為相當於把一張大紙對折。對於智能眼鏡這類對尺寸和功耗都極為敏感的應用,這是很大的優勢。
很多人擔心折疊會讓溫度持續惡化,但結果並非如此。三級折疊的溫度(57 ℃)反而低於一級折疊(61 ℃)。原因在於兩個相反的效應:
- 功率密度上升:同樣面積上塞進了更多電晶體,單位面積的功耗密度自然上升。
- 熱導率同時改善:折疊越多,裸片之間的鍵合連接越多。我們用銅焊盤在高溫高壓下把兩顆裸片鍵合在一起,而這些銅焊盤本身是散熱通道,能把熱量垂直導向散熱器。如果沒有這些金屬,熱量就困在核心裡出不去。
溫度正比於功率、反比於熱導率。兩者疊加的結果是:折疊越多,溫度反而更好。
2. 三星16nm實戰:
折疊讓晶片頻率翻倍,功耗再省20%
三星在看到我們與英特爾合作的結果後,希望做一次升級。因為2014年那次研究已經比較久遠,他們想要更現代的處理器和更先進的工藝節點:處理器換成他們在用的ARM核(最終選擇A53,不算大,但是有實際意義的商用核),工藝從28奈米換成16奈米。
我們做了三個設計:
- 2D設計:16奈米四核A53。我們把它給ARM看過,ARM認可這個設計。需要說明的是,我們沒有故意把2D做差,為了公平比較,2D版本是有競爭力的。
- Memory-on-Logic 3D設計:末級快取放在底層,其餘部分放在頂層,兩顆裸片用10微米間距的微凸塊鍵合。
- 混合鍵合3D設計:不使用焊球,而是在頂層金屬之上直接進行銅-銅鍵合,間距只有1微米。
後兩者雖然劃分方式相同,但布線結果明顯不同——鍵合方式不同,電路設計的最佳化目標也不同,我們是針對混合鍵合重新最佳化的,而不是直接沿用同一版設計。
在此基礎上,金屬層共享是一個非常有效的技巧。我舉一個例子,大家看三條net:
- net1 連接頂層與底層的電晶體,必須使用混合鍵合焊盤這部“電梯”;
- net2 連接同在底層的兩個電晶體,不需要上樓,留在底層即可;
- net3 連接的是頂層的兩個電晶體,但布線的一部分繞到另一顆裸片上再回來。
這就是“金屬層共享”:向鄰居裸片借用金屬層完成布線。它的價值有兩點:
- 緩解布線擁塞:當本層過於擁擠、找不到布線空間時,可以借道另一層完成布線。而擁塞正是3D IC中的大問題。
- 降低電阻。底層的M1電阻很高,而頂層金屬電阻很低,借道頂層金屬的延遲明顯更好。當然,還要計入垂直過孔堆疊的代價,但只要總帳划算,就值得這麼做。
這種方法的代價是需要成對的面對面鍵合焊盤。因此在記憶體-邏輯折疊中,我們用到的面對面通孔數量遠超功能需求——記憶體與邏輯之間只需要32位地址、32位資料,幾百根就夠了,而我們實際用了37,000根,原因就是金屬層共享。
論文資訊:S. Pentapati, S. K. Lim, "Metal Layer Sharing: A Routing Optimization Technique for Monolithic 3D ICs," IEEE TVLSI 30(9): 1355–1367, 2022
當我們追求最高性能時,2D設計最高跑到630 MHz,而3D IC達到了1.2 GHz——接近2倍的頻率提升。原因還是那句話:折疊天然縮短連線。
當然,有收益就有代價。頻率提高,功耗隨之上升;晶片面積減半,溫度也會升高。IR drop也更嚴重——因為晶片面積只有2D的一半,能佈置的電源/地C4凸塊數量減少了50%,但需要供電的電晶體數量並沒有減少。供電,確實是3D IC的一個重大挑戰。
再看等性能對比:三種設計跑在同樣頻率下,3D IC帶來約20%的功耗節省。這和英特爾案例的結論完全一致。也就是說,折疊帶來的紅利,你既可以用來提性能,也可以用來降功耗。而且因為運行頻率不高,溫度表現也更好。
在我們所有的研究中,3D IC都能打敗商業2D設計。這聽上去理所當然——如果3D IC還不如2D,那還要3D IC幹什麼?但真正做到這一點並不容易,我們花了將近二十年。因為2D IC的設計工具太強了,這些工具積累了四十多年,Cadence、Synopsys、Siemens有成百上千名工程師日夜投入。我們靠十個博士生加一個導師去超越它,真的不容易。但我從不認為3D IC設計的問題已經解決。我們只是邁出了第一步,還有許多侷限。
第一,EDA工具本身。我知道復旦在EDA方向投入很大、隊伍也很大,我非常希望能與復旦一起改進3D IC設計與LogicFolding工具。
第二,面向3D的架構(RTL)。今天所有做折疊的架構,其RTL程式碼都是為單裸片實現編寫的,是“2D感知”的架構——它假設模組是並排的,而不是上下疊放的。舉例來說,在2D IC中訪存要花很多時鐘周期,所以電腦架構師發明了亂序執行、分支預測等技術來隱藏訪存延遲。但如果記憶體器就堆在邏輯正上方,訪問延遲可能只有一個周期,這些機制未必還需要。也就是說,RTL可以針對堆疊重新最佳化。
第三,與代工廠的協同(DTCO)。製造端會給設計端反饋:比如“這些點太密了,請分散一些,或者排成更規則的陣列,這樣更好製造”。反過來,設計端也可以給製造端反饋:比如時序分析發現M3的電阻高得離譜、出現在每一條關鍵路徑上,那就可以告訴代工廠——請換材料或換工藝配方來降低M3電阻;而M5的電阻不成問題,或許可以用更便宜的材料。設計與製造互相反饋,這就是設計技術協同最佳化。
第四,多物理場問題。散熱、供電、測試同樣重要。還有die-to-die變異建模:頂層和底層的電晶體行為並不完全一致,頂層晶圓可能來自一家供應商,底層來自另一家,器件看起來一樣,性能卻可能不同。要做的事情還有很多。
3. 沒有3D工具,怎麼做3DIC
前面講的是折疊能帶來什麼,接下來講怎麼折——不是人怎麼折,而是電腦怎麼折。我們從兩個角度切入:傳統方法和AI方法。
3D IC 設計難在那裡
如果晶片只有一層,也就是2D IC,自動化設計早已解決。2D IC工具做兩件事:佈局和布線。但3D IC呢?工具買不到,而且難度大得多。對於兩層3D IC,你需要:第1層的佈局、第2層的佈局、第1層的布線、第2層的布線,再加上兩層之間的連接。2D是畫兩幅畫,3D是畫五幅畫,而且這五幅版圖必須同時協同最佳化。你對頂層佈局做的任何改動都會影響另一層;你一改動某個3D網路的凸塊位置,延遲就變了。這比只處理兩幅版圖難得多。
商業“3D”工具究竟是什麼
這個問題我被問了很多次。你們可能聽說過這些產品:Cadence的Integrity 3D-IC、Synopsys的3DIC Compiler、Siemens的Xpedition。廠商會說:我們的工具什麼都能做,買我們的工具就夠了。我的回答是:並非如此。
這些工具我們在南加州大學都有。它們不是晶片設計工具,而是封裝設計工具。晶片設計是設計裸片內部的東西;封裝設計則是在封裝內把多顆裸片用封裝走線連起來。
它們之所以叫“3D”,是因為能處理矽中介層、有機中介層。有人把輝達H100加上裝在矽中介層上的SK海力士HBM叫作3D IC——GPU堆在中介層上、HBM也堆在中介層上,不就是堆疊嗎?但我們對此有不同的術語:2.5D IC。
所以這些工具其實是2.5D設計工具,只是出於某種原因,沒有人把它命名為“Integrity 2.5D”或“2.5D Compiler”。在我看來,真正的3D IC設計工具必須能處理多個電晶體層。而直到今天,Innovus、ICC2、Aprisa都無法處理多個器件層——在一個DEF檔案裡,只允許存在一層電晶體。
結論是:3D封裝設計工具是有的,輝達就是用它們流片H100等AI晶片的。3D IC設計工具,沒有。而我要做的,是設計出能打敗商業2D IC的3D IC。
Compact-2D:用2D工具做3D佈局
我們把這個工具叫Compact-2D,思路其實很簡單:
- 先買商業2D工具,做一版2D設計作為起點;
- 做壓縮(compaction):把所有單元(或模組)的 x、y 坐標統統乘以 0.707(即 1/√2)。這樣設計的佔地面積正好縮小到一半——因為兩層佈局的佔地面積就是原來的一半。關鍵在於,壓縮過程中保持相對關係不變:原來上下相鄰的仍然上下相鄰,原來靠近的仍然靠近,原來遠離的仍然遠離;
- 壓縮後會出現大量重疊,於是將這些單元做兩層劃分;
- 最後做合法化(legalization),微調位置消除殘餘重疊,讓每個單元都落在合法的位置上。3D佈局完成。
想法很簡單,但效果很好,這項工作拿到了IEEE TCAD的最佳論文獎。有時候簡單且有效就足夠了。
論文資訊:B. W. Ku, K. Chang, S. K. Lim, "Compact-2D," ISPD 2018;期刊版 IEEE TCAD 39(6): 1151–1164, 2020,獲 2022 年 IEEE CEDA Donald O. Pederson 最佳論文獎
Pin-3D:用2D布線器完成3D布線
布線方面我們做的是Pin-3D。我要特別感謝復旦大學王志昂教授復現了這項工作並將原始碼公開,我們自己驗證過,完全正確,大家可以從他的網站下載。
*開放原始碼專案為「太維 TaiWei」三維物理設計平台下的 TaiWei-Pin-3D:github.com/CODA-Team/TaiWei
我的策略一以貫之:不重新發明輪子。我要做的是用別人的工具做出新的事情——這裡就是:用商業2D布線器來給3D IC布線。
具體做法:
- 擴展金屬層疊。3D IC有底層裸片的金屬和頂層裸片的金屬;如果是面對面鍵合,頂層裸片的金屬層要翻轉。所以整個層疊是:底層裸片的M1→M_top,接著是頂層裸片的M_top→M1。這需要把PDK中的TechLEF互連描述擴展成3D版本。
- 擴展單元庫。庫裡每個單元都要生成頂層版本和底層版本。因為同一個反相器,放在頂層時引腳在頂層的M1上,放在底層時引腳在底層的M1上,位置完全不同。
- 標註引腳位置。布線時佈局已經完成,把每個單元的引腳位置標註到這個雙層金屬層疊中。
這樣一來,布線器看到的東西其實就是一個“2D”問題——只有引腳和單元邊界。把它交給2D布線器,它會正常工作,把這些引腳連起來,並在布線過程中放置所有後段過孔。而其中那個連接底層M_top與頂層M_top的特定過孔,位置就是面對面鍵合通孔的位置。於是我們免費得到了三樣東西:邏輯到面對面通孔的連接、面對面通孔的位置、底層到面對面通孔的連接。所有3D網路自動完成布線,所有面對面通孔位置自動確定。
論文資訊:S. S. K. Pentapati, K. Chang, V. Gerousis, R. Sengupta, S. K. Lim, "Pin-3D," ICCAD 2020;期刊版 "Pin-3D: Effective Physical Design Methodology for Multidie Co-Optimization in Monolithic 3-D ICs," IEEE TCAD
用2D引擎完成3D時序收斂
同樣的思路我們也用在了時序最佳化上。假設目標頻率2 GHz,意味著最長路徑延遲必須小於500皮秒;為此需要插緩衝器、調整門尺寸。我希望用2D的時序收斂引擎來給3D IC收時序。但難點在於,2D引擎只能處理一層器件,而3D IC有多層,而且不同層的單元可能有相同的x、y坐標(只是z不同)。一旦把上下兩層合併成一個DEF檔案,商業工具就會看到大量單元重疊,然後“發怒”,開始移動單元做合法化——我辛辛苦苦用Compact-2D做出來的兩層佈局就被破壞了。
我們的解法是層間交替+單元透明化:
- 在頂層和底層之間來回迭代。處理頂層時插緩衝、調尺寸,做完再處理底層;
- 處理某一層時,把另一層的單元設為透明。工具認為透明的單元不存在,重疊也就不成問題;
- 但關鍵是即使單元透明,其引腳位置仍然有效。所以像net1這樣跨越上下層的連接,整條3D路徑依然可見。也就是說,插緩衝、調尺寸時,你看到的是完整的3D網路和完整的3D路徑,只是對面層的單元本身不參與合法化。
這個概念稍微有點繞,核心是我們找到了一種方法,用為2D IC開發的工具完成3D IC的時序收斂。
層劃分Tier Partitioning
在完成佈局之後,從2D走向3D必須做的一件事,就是把設計畫分到頂層和底層。這一步,沒有任何2D商業工具可以直接買到,必須自己開發劃分器。劃分問題本身極難。每個門有若干種選擇,10個門時解空間是4的10次方,1000個門時解空間大到沒有人能活著算完。但它對晶片的電-熱-機械質量影響巨大。
方法一:基於bin的FM劃分(傳統方法)
先把初始2D設計切成若干小格,比如9個bin,然後對每個bin內的單元做上下劃分。做法是迭代改進:先隨機把單元分到頂層或底層,再通過在層間移動單元來改進這個隨機解。移動那個單元,由“增益”決定——增益可以定義為減少了多少層間連接,或者改善了多少時序。基於增益不斷修改當前解,逐個bin完成,整個設計的劃分就完成了。
方法二:TP-GNN(2020年,圖神經網路)
Bin-FM的問題在於它以min-cut為目標,而min-cut並不能很好地利用3D IC中“垂直連接很短”這個特點。所以2020年,我們用圖神經網路加K-means聚類加無監督學習來做層劃分,稱為TP-GNN。
思路是:
最後做K-means聚類,把n維空間中位置相近的單元聚到一起,再逐步合併簇,直到剩下兩個大簇——劃分完成。
用圖對電路建模。電路與圖天然相似:邏輯閘是節點,網路是邊。
- 為每個節點學習一個n維向量表示,我們用的是128維。目標是:應該分到同一層的單元,它們的向量表示應該相似——在n維空間中的位置彼此接近。這和語言模型是同一個道理:token用n維向量表示,意思相近的token,向量表示也相近。
- 損失函數由兩項構成: 損失函數由兩項構成:
第一項保證:若兩個單元被同一條網路連線,它們的向量表示應當相似;
- 第二項保證:若兩個單元在圖中並不直接相連,它們的向量表示應當不同。具體做法是負採樣——對給定節點,採樣圖中距離它很遠的節點,要求這些遠處節點的向量表示與它明顯不同。
前向計算損失,反向用梯度下降更新向量表示,多次迭代直至收斂。
結果表明,TP-GNN明顯優於FM方法。
論文資訊:Lu, et al, “TP-GNN: A Graph Neural Network Framework for Tier Partitioning in Monolithic 3D ICs,” ACM Design Automation Conference, 2020.
3D佈局:偽3D與真3D
3D佈局與層劃分類似,只不過要同時確定x、y、z三個坐標,難度更高。
偽3D(pseudo-3D):先定x、y,再定z,最後做劃分。Compact-2D走的就是這條路線。
- 真3D(true 3D):x、y、z同時確定。
我們做真3D佈局的方法是先用偽3D得到一個初始佈局,再用AI同時更新x、y、z來改進它。這其實是物理設計中很典型的解題範式:先有一個解,再不斷改進,直到無法改進為止。
整個流程分前向與後向:
前向:用一個Siamese U-Net,也就是孿生U-Net,從給定佈局預測布線後的擁塞圖;
- 後向:根據預測的擁塞圖計算損失並最小化,通過更新x、y、z坐標來實現。
論文資訊:H. Park, B. W. Ku, K. Chang, D. E. Shim, S. K. Lim, "Pseudo-3D Physical Design Flow for Monolithic 3D ICs," ACM TODAES 26(5), 2021
我們的最佳化目標是性能與擁塞。擁塞在3D IC中尤其重要:晶片面積減半、引腳更密集,布線軌道還要同時供訊號、電源和時鐘使用,各金屬層的布線資源都極其緊張,布線會變成大麻煩。所以不能等到布線階段才處理,必須在佈局階段就提前應對。
但怎麼在佈局階段就知道布線後會不會擁塞?我們最初用的是RUDY,這是2D IC佈局中預測擁塞的常用方法,我們把它擴展到了3D。但結果令人失望,預測偏差很大。於是我們換了一個思路,用經過監督學習訓練的孿生網路來做這個預測。
這個網路叫孿生U-Net(Siamese U-Net),它有兩個“頭”和兩組“腳”,但中間是連體的。兩個頭分別對應頂層和底層;中間連體的部分負責捕捉兩層之間的相互作用——頂層擁塞嚴重的地方,它正下方的底層大機率也很擁擠。最後網路再分開,分別輸出頂層和底層的擁塞預測圖。我們用自己構造的資料訓練這個網路,訓練充分之後,從初始佈局預測布線後擁塞,已經相當準確。
論文資訊:H.-H. Hsiao, Y.-C. Lu, P. Vanna-iampikul, A. Agnesina, R. Liang, Y.-H. Lu, H. Ren, S. K. Lim, "DCO-3D: Differentiable Congestion Optimization in 3D ICs," DAC 2025
有了這個預測能力,我們就可以定義損失函數來指導最佳化了。損失函數包含四項:
擁塞損失:基於預測的布線擁塞圖,逐個G-cell計算;
- 切割規模損失:關注上下層之間的連線量;
- 重疊損失:計算各網路包圍盒之間的重疊,用於估計布線後的線長;
- 位移損失:衡量單元從當前位置移動到新位置的距離——不能讓單元移動太多,否則時序會被破壞。
這些損失合併後驅動反向傳播和梯度下降,演算法挑選若干單元調整其x、y、z坐標,使總損失下降。
以上就是我今天想跟大家分享的全部技術內容。最後總結三點:
折疊、折疊、再折疊,持續提升設計質量;
- 要做到這一點,必須依靠EDA。數字設計不是手工完成的,需要足夠先進的演算法——傳統方法和AI方法都可以;
- 只要架構做了最佳化、EDA工具足夠先進,資料頻寬就可以做得非常高;而製造技術並不是瓶頸,12年前就能做到5微米鍵合間距,今天可以做得好得多。
我們想要實現的,是用成熟節點的3D IC,打敗先進節點的2D IC。我認為先進節點能提供的資料頻寬,成熟節點通過堆疊和邏輯折疊同樣能做到。
韜定律如果實現,我的夢想就成真了。到時候我一定要來中國,買一部裝了韜定律晶片的手機,因為我等這一刻等了整個職業生涯。我可以把它拿給我兩個上大學的女兒看——她們總問我"爸爸你到底在研究什麼",這就是我一直在做的事情,我會很自豪。謝謝大家。(半導體行業觀察)
