一张纸对折,纸上两点的距离会随之缩短。芯片也是如此——当平面微缩(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测试芯片——我带了几片样品,待会儿传给大家看。
看到自己很久以前做的这些工作如今重新焕发生命力,我非常高兴。
先说一句可能有点自夸的话:据我所知,我们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 ℃)。原因在于两个相反的效应:
功率密度上升:同样面积上塞进了更多晶体管,单位面积的功耗密度自然上升。
热导率同时改善:折叠越多,裸片之间的键合连接越多。我们用铜焊盘在高温高压下把两颗裸片键合在一起,而这些铜焊盘本身是散热通道,能把热量垂直导向散热器。如果没有这些金属,热量就困在核心里出不去。
温度正比于功率、反比于热导率。两者叠加的结果是:折叠越多,温度反而更好。
三星在看到我们与英特尔合作的结果后,希望做一次升级。因为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变异建模:顶层和底层的晶体管行为并不完全一致,顶层晶圆可能来自一家供应商,底层来自另一家,器件看起来一样,性能却可能不同。要做的事情还有很多。
前面讲的是折叠能带来什么,接下来讲怎么折——不是人怎么折,而是计算机怎么折。我们从两个角度切入:传统方法和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。
思路是:
用图对电路建模。电路与图天然相似:逻辑门是节点,网络是边。
为每个节点学习一个n维向量表示,我们用的是128维。目标是:应该分到同一层的单元,它们的向量表示应该相似——在n维空间中的位置彼此接近。这和语言模型是同一个道理:token用n维向量表示,意思相近的token,向量表示也相近。
损失函数由两项构成: 损失函数由两项构成:
第一项保证:若两个单元被同一条网络连接,它们的向量表示应当相似;
第二项保证:若两个单元在图中并不直接相连,它们的向量表示应当不同。具体做法是负采样——对给定节点,采样图中距离它很远的节点,要求这些远处节点的向量表示与它明显不同。
前向计算损失,反向用梯度下降更新向量表示,多次迭代直至收敛。
最后做K-means聚类,把n维空间中位置相近的单元聚到一起,再逐步合并簇,直到剩下两个大簇——划分完成。
结果表明,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。我认为先进节点能提供的数据带宽,成熟节点通过堆叠和逻辑折叠同样能做到。
韬定律如果实现,我的梦想就成真了。到时候我一定要来中国,买一部装了韬定律芯片的手机,因为我等这一刻等了整个职业生涯。我可以把它拿给我两个上大学的女儿看——她们总问我"爸爸你到底在研究什么",这就是我一直在做的事情,我会很自豪。谢谢大家。
本文转自媒体报道或网络平台,系作者个人立场或观点。我方转载仅为分享,不代表我方赞成或认同。若来源标注错误或侵犯了您的合法权益,请及时联系客服,我们作为中立的平台服务者将及时更正、删除或依法处理。
