最近不少做封装设计的朋友问我同一个问题:小芯片集成(Chiplet)明明是芯片设计的事,为什么我们这些做 PCB、做封装的人反而比芯片团队还忙?这其实问到了点子上。异构集成电路封装设计里的 Chiplet 集成,核心不是“多放几个裸片”,而是封装基板、中介层、微凸点、RDL 和 PCB 板级互连被打通成了一个完整系统。过去芯片、封装、PCB 三段各自为政的流程,在这种架构下根本跑不起来,只能靠封装和 PCB 团队不断返工来填坑。
我写这篇文章,想结合自己这几年做异构集成封装项目的实际经验,把从架构定义、协同设计、D2D 互连约束到验证落地的一整套提速思路讲清楚。内容不会只停留在概念层面,会尽量给出可以直接参考的流程节点、工具选型和避坑方法。无论你是刚接触 Chiplet 的 PCB 工程师,还是正在搭建先进封装设计流程的团队负责人,这篇文章都能帮你少走不少弯路。
1. 小芯片集成不只是多放几个裸片:先看清设计本质变了什么
1.1 从单芯片到 Chiplet,设计对象发生了根本变化
传统 SoC 设计里,芯片团队交付给封装团队的是一个完整、固定的 die,封装设计要做的就是把 die 的引脚通过基板扇出到 BGA 焊球,再连到 PCB。这个流程里,芯片设计、封装设计、PCB 设计虽然有交集,但边界清楚:die 已经定型,封装只是“连接器”,PCB 只是“承载板”。
Chiplet 集成不是这样。你要在同一个封装里放多个不同工艺节点、不同功能来源的裸片,比如逻辑 die 来自台积电 5nm,I/O die 来自格芯 12nm,HBM 存储 die 来自 SK 海力士或三星。这些 die 的引脚间距(bump pitch)动辄 40~55um,远小于传统倒装芯片的 150um 以上。更关键的是,die 与 die 之间的数据通路宽度可能达到数千条甚至上万条,信号速率普遍跑到 16GT/s 以上,部分 SerDes 甚至到 112G。这时候,封装基板上的互连已经不再是“能把信号导通就行”,而是必须当作高速传输线来设计。
所以第一个观念要转变:小芯片集成要求芯片设计、封装设计、PCB 设计在项目启动阶段就同时介入,而不是等别人交稿。我曾遇到一个项目,芯片团队在架构定义时完全没有考虑封装基板的层数和线宽线距能力,结果功能验证通过后,封装团队发现基板至少需要 22 层才能走通 28nm die 和 7nm die 之间的所有 D2D 信号,成本直接翻倍,工期延误两个月。这就是没有尽早拉通的代价。
1.2 异构集成的主要封装形态和适用场景
现在主流的小芯片集成封装形态大致分三类:2.5D 封装、3D 堆叠封装、扇出型封装。
2.5D 封装:所有 die 并排放在硅中介层(Silicon Interposer)上,中介层提供高密度走线,再通过硅通孔(TSV)和封装基板连接。典型代表是 AMD 的 EPYC 系列、NVIDIA 的 H100。优点是布线密度极高,互连长度短;缺点是中介层本身昂贵、良率有挑战,而且中介层和基板之间还要考虑热膨胀系数匹配问题。
3D 堆叠封装:把两个或多个 die 垂直堆叠,通过混合键合(Hybrid Bonding)或微凸点实现层间互连。典型代表是 HBM 内存堆叠、部分 AI 加速器的 SRAM 堆叠。优点是互连密度可以进一步拉高、功耗更低;缺点是可测性、散热、翘曲控制难度大,而且测试筛选策略要在封装之前就定好。
扇出型封装:把 die 重新布置到载体上,用 RDL(重布线层)实现互连,不需要中介层。典型代表是 Intel 的 EMIB(嵌入式多芯片互连桥)和部分移动设备里的 Chiplet 方案。优点是成本适中、灵活度高;缺点是布线密度不如硅中介层,且多芯片之间的基准面控制更难。
每一种形态对 PCB 端的约束都不一样。2.5D 封装因为中间隔了中介层和基板,BGA 引脚数量多、电源地引脚占比高,PCB 的电源层分配和去耦策略要跟着变;3D 堆叠封装的散热路径复杂,PCB 的散热过孔阵列布局需要与封装热模型联动;扇出型封装的线宽线距相对宽松,但 die 与 die 之间的延迟需要精确估算,因为基板和 PCB 的走线长度会直接影响时序。
2. 流程重构是提速的基础:把串行流程改成并行协同设计
2.1 传统串行流程的瓶颈到底卡在哪里
绝大多数从传统封装转做 Chiplet 的团队,一开始都沿用“芯片完成 → 封装设计 → PCB 设计”的线性流程。表面上看没什么问题,实际上每一个交接节点都在埋雷。
芯片团队输出的是 GDS 文件、LEF/def 和版图相关数据,这些数据里没有封装设计需要的物理坐标、电源域划分、D2D 接口位置等信息。封装工程师拿到 die 之后,需要自己从文档里找 bump 图、电源地分布图,手工建库。这一步经常出错。我见过一个项目,封装工程师把某个 die 的两个电源域当成同一个网络合并了,基板画完才发现信号完整性问题,最后不得不重新改层叠。而 PCB 团队呢,只能干等封装设计完,等到封装 BGA 引脚表出来才能开始布局。如果封装团队这时候发现需要改 die 的 bump 方案或者改基板层数,PCB 同事前面做的所有工作几乎全部作废。
并行化改造的核心,是把“交接物”从最终数据改成中间模型。也就是说,芯片团队在 die 物理实现还没完成时,就要先给出一个经过简化的 Die 模型,包含尺寸、bump 分布、主要接口位置、电源地分区。封装团队基于这个模型先做可行性评估、定义基板层数和叠层;PCB 团队基于初步 BGA 图先做板级布局和电源评估。之后各团队再并行细化,最后数据逐步对齐。
2.2 打通芯片-封装-PCB 协同设计的数据通道
协同设计不只是流程上的口号,必须落到具体工具和数据格式上。我目前比较常用的做法是:统一用 OpenAccess 数据库作为 die 和封装平台的底层数据格式,再用 Cadence Allegro Package Designer Plus 或 SiP Layout 做封装设计,PCB 端同步在 Allegro PCB Designer 里建立一个“预布局工程”,并定时导入封装 BGA outline 的变更版本。
这里尤其要注意的是坐标原点约定。芯片坐标通常以 die 中心为原点,封装设计可能以基板左下角为原点,PCB 设计又以板卡左下角为原点。如果没有在项目启动前统一约定,哪怕一个符号的正负号写反,都会导致整个菊链标记错位。我们团队的规定是:所有跨团队使用的文件(CSV、Excel、SKILL 脚本、Python 脚本)一律使用绝对坐标,并在文件名里标注版本和日期,防止“我就改了一下原点”这种灾难性更新。
2.3 尽早把 Die 的物理抽象交给封装和 PCB 团队
不要等 die 完全实现完再给数据。比较好的做法是,在芯片设计早期就生成一份“抽象模型”,内容包括:
- die 的外形尺寸和厚度(含背面如果有硅通孔或散热盖);
- bump map 或 micro-bump map 的标准格式文件;
- 每个 bump 所属网络名和电源域;
- D2D 接口的物理扇出区域(die edge 附近通常预留);
- IO 环、EMIB 桥位置(如果用了桥接方案)。
这份模型可以先粗糙一点,但必须真实反映 die 的物理约束。比如某颗 die 的 bump 间距是 40um,但封装基板的线宽线距只能做到 8/8um,那就需要提前评估是否需要 RDL 层、是否需要更密的基板工艺。这些评估必须在芯片设计还有调整空间的时候就给出结论,否则后面只能靠“加层、换材料、改封装工艺”来补救,每一样都是时间和预算黑洞。
3. die-to-die 互连与信号完整性:决定集成成败的关键细节
3.1 各种 D2D 接口协议背后的物理约束
小芯片集成绕不开 die-to-die 互连。目前最热的接口标准是 UCIe(Universal Chiplet Interconnect Express),另外还有 BoW(Bunch of Wires)、OpenHBI 等。接口标准不同,对封装设计的影响也不同。
以 UCIe 为例,它定义了两种封装类型:标准封装(Standard Package)和先进封装(Advanced Package)。标准封装对互连长度、层数要求相对宽松,通常走封装基板或低成本扇出;先进封装则面向硅中介层、有机中介层等高密度互连平台,要求 bump pitch 最小到 25um,互连总长度控制在特定范围内,而且有非常明确的通道速率和眼图预算。
从信号完整性角度,D2D 接口之所以难做,是因为它属于“源同步并行总线”的变种,往往需要数百对差分走线同时翻转。封装基板上的走线层数不可能无限增加,因此布线工程师必须在走线层分配上提前规划:哪些层走水平方向,哪些层走垂直方向,哪些层是电源参考层。同时,相邻 bump 域的信号跳变会产生大量串扰,必须通过屏蔽线和间距规则来控制。做这部分的经验是:先按拓扑关系把所有 D2D 接口的通道清单列出来,标注长度约束和时序预算,再决定每条通道在基板上的走线层次,绝不要一边布线一边算长度。
3.2 封装基板与 PCB 的联合仿真:过孔、走线和回流路径
单独做封装模型或者单独做 PCB 仿真都不难,难的是把封装和 PCB 放在同一个电磁仿真环境里看全链路。特别是当下很多 Chiplet 系统的工作频率很高,封装基板上的过孔残桩、PCB 上的 BGA 区域过孔反焊盘,都会成为阻抗不连续点。
我推荐的做法是:从封装 BGA 焊球到 PCB 芯片侧电容、再到远端负载,建立一条完整的通道模型。工具上可以用 Ansys HFSS 3D Layout 或 Cadence Sigrity 做联合仿真,但前提是两边的几何模型能精确对齐。这个环节最容易出的问题是参考层不一致。比如封装基板设计时,信号层上面的参考层和 PCB 设计时参考的 GND 层不是同一个网络,仿真结果自然对不上。
另外,回流电流路径一定要看。高速信号在 BGA 区域切换参考层时,如果旁边没有足够的过地孔(GND via)提供返回路径,回流电流就会绕大圈形成大的环路面积,带来严重的 EMI 和串扰。我们在设计规范里强制要求:每根高速信号过孔旁边必须有一颗地过孔,间距不超过 0.5mm;同一组差分对的过孔需要对称摆放,避免出现“拉链式”错位。
3.3 电源完整性设计:从封装到 PCB 的完整 PDN 协同
Chiplet 系统里最容易被忽视又最容易出问题的其实是电源完整性。原因是 die 数量多,功耗大,核电压往往降到 0.65V~0.8V,允许的纹波可能只有十几毫伏。这时候,封装基板上的电源层、微凸点、TSV、BGA 引脚和 PCB 上的去耦电容、电源层平面,必须作为完整 PDN 一起设计。
具体来说,问题会出现在两个层面。
第一,封装基板的电源层压降(IR Drop)。传统封装电源层相对厚、通路相对简单,但 Chiplet 封装的电源网络非常细,很多时候要在同一个金属层里分出好几个电源域。我们遇到过 HBM 电源轨和逻辑 die 电源轨在基板上交叉,导致局部电流密度过高,局部发热严重。解决办法是调整电源域划分,把高电流密度的轨安排到更靠近顶层或更厚的铜层,并且提前做 DC IR 分析。
第二,PCB 端去耦电容的位置。很多 PCB 工程师习惯把去耦电容放在封装扇出区域的最外围,但这在 Chiplet 系统里可能完全没用。因为 die 的电压调节器通常在封装内部,或者 die 侧已经集成了很多硅电容,真正需要 PCB 去耦的是高频谐振点。正确做法是拿到封装的 PDN 阻抗曲线后,再看 PCB 端需要补充哪些频段的电容。有些项目里,封装基板内部已经有大量去耦能力,PCB 端其实不需要摆那么多电容,盲目堆料只会增加成本和布通难度。
4. 建库与自动化:把重复劳动交给脚本
4.1 Chiplet 封装库标准化建设
做小芯片集成,最花时间的往往不是设计本身,而是建库。不同供应商的 die 交付格式五花八门:有给 GDS 的、有给 DXF 的、有给 CSV bump 图的,还有只给 PDF 手册让你手工提取的。如果每个项目都从零开始建库,效率极低,而且容易因为漏填某个数据导致后期返工。
我们团队的做法是建立一套内部统一的“die 封装抽象库”,每个 die 入库时必须包含:
- die 尺寸、厚度、材质(硅/砷化镓/其他);
- bump map 文件和对应的网络名映射表;
- 热膨胀系数和最大翘曲值;
- 允许的封装基板材料匹配范围;
- 测试要求(是否支持预烧测、是否需要在封装内做 known good die)。
这套库的数据格式我们统一用 JSON + CSV 双份保存,方便 EDA 工具读取和自研脚本处理。入库时还会跑一个检查脚本,自动核对 bump 数、网络数、坐标是否有重叠,避免明显错误。
另外提醒一点,不要在库里直接保存封装设计源文件,尤其是封装工程师手工微调过的文件。因为基板层数和工艺不同,同一个 die 在不同项目里的封装结构可能完全不同,保存源文件会导致后续项目误用。正确的做法是只保存“物理与逻辑抽象”数据,把设计实现的细节留给各个项目的实际设计流程。
4.2 用 SKILL/Python 批量生成与检查设计数据
自动化脚本是加速小芯片集成设计最值得投入的方向。这里我举几个我们实际用过的场景。
第一个是批量放置 bump 和网络分配。Cadence Allegro Package Designer 支持用 SKILL 语言写脚本批量创建 symbols 和 place bound。我们可以从 CSV 里直接读 bump 名称和坐标,然后用 SKILL 循环在封装库里生成引脚。这样做不仅能省掉 90% 的手工时间,还不容易抄错坐标。
第二个是布线完成后的自动检查。传统 PCB 设计里很多朋友习惯用肉眼检查有没有短接、断头。到 Chiplet 封装里,网络成千上万,肉眼完全不可行。我们写了一个 Python 脚本,读取封装设计导出的网表和物理布线数据,自动检查以下内容:
- 所有 D2D 高速通道的长度是否符合约束;
- 指定网络是否满足间距规则;
- 每个电源域里,BGA 引脚和 bump 的映射关系是否一致;
- 热球分布是否均匀(避免后续焊接出现冷焊或桥接)。
第三个是批量生成制造文件。封装基板厂需要的 not、钻孔文件、阻抗叠层信息,完全可以通过脚本从同一个数据源生成,避免手工导出时漏层、漏钻孔层。
4.3 Gerber、ODB++ 与数据交接的坑
聊到制造文件,就得说一句实话:Gerber 虽然是老标准,但现在做高密度封装设计,我强烈建议尽量用 ODB++ 或者 IPC-2581 这类包含完整设计数据(层叠、网络、物料、孔位)的格式。Gerber 只是一个图像文件,不包含网络信息,一旦封装厂在资料评审时发现某层走线状态不对,你得手动回到设计文件里去查网络,非常耗时。
另外,很多做 PCB 的朋友习惯把 Gerber 直接发给板厂,但在 Chiplet 封装项目中,封装基板厂和 PCB 厂可能是完全不同的供应商,交付资料要求也不同。封装基板厂通常更关心层叠结构和微孔工艺,PCB 厂更关心 BGA 区域的阻抗、过孔结构和焊盘工艺。这两份制造数据必须由封装设计团队统一维护,而不是让各供应商自己猜。
我自己踩过最大的坑是归档版本不一致。有一次封装基板已经改了三版,但 PCB 团队还在用第一版的 BGA 坐标做布局,结果到样机组装时,芯片根本贴不上 PCB。从那以后,我们规定所有跨团队交付必须加版本号,并且每次版本更新都要附带一份“变更说明”,写清楚改了什么、影响哪个区域。别小看这一步,它能救你很多次。
5. 验证环节怎么提速:DRC、LVS 与热力可靠性
5.1 封装级 DRC 和传统 PCB DRC 的差异点
封装设计中常用的 DRC(设计规则检查)与传统 PCB DRC 有非常明显的差异。传统 PCB 的规则主要是线宽、线距、过孔到走线间距、丝印到焊盘距离等;封装级规则多得多,也更难定义。
比如,bump 与 bump 之间的间距、micro-bump 与 RDL 线之间的间距、TSV 与走线之间的间距,都有严格的制造规则。不同封装基板工艺,规则也不一样。有机基板的线宽线距通常是 8/8um 甚至更粗,硅中介层可以做到 0.4/0.4um,但每一层的最小金属密度、通孔尺寸、金属厚度又有差异。封装工程师不但要懂布线,还要能根据工艺厂商的 design rule 文件,在 EDA 工具里维护一套正确的规则集。
更麻烦的是“多层规则组合”。比如硅中介层里,如果某条信号线穿过 TSV 旁边,这时 TSV 噪声可能耦合到信号线上,所以需要加一条“TSV 附近信号线最小间距”规则。这类规则不是简单的二维间距,往往带有空间位置依赖关系,工具默认的 DRC 不一定认识,需要自定义。
我建议项目启动时先花几天时间,把工艺厂商的 detailed rule 一条条过一遍,建立检查矩阵。这看起来是浪费时间,实际上能省掉后期无数次的返工。等于是先把规则嵌到流程里,而不是靠人肉检查。
5.2 热-应力协同仿真:小芯片集成特有的可靠性问题
Chiplet 封装里的热和应力问题,比任何传统封装都敏感。因为不同 die 的材料(硅、砷化镓、甚至可能的 III-V 材料)和基板材料(有机材料、硅中介层、玻璃基板)的热膨胀系数差异很大。温度变化时,各层之间的剪切应力会让 bump 或 micro-bump 发生疲劳断裂。
这里有一个反常识的点:封装内部热源越集中,应力问题越严重,而且和 PCB 端的结构也强相关。因为封装焊接在 PCB 上之后,系统整体的翘曲是由封装和 PCB 共同决定的。我在一个项目里见到,封装本身单独仿真是平的,但贴到 PCB 上后,因为 PCB 的板厚太薄、铜箔分布不均,整体翘曲超了标准,导致部分 BGA 焊点虚焊。后来通过增加 PCB 板厚、调整铺铜对称性才解决。
所以,热-应力联合仿真不能只做封装局部,一定要把 die、封装基板、BGA、PCB 一起建模。仿真结果关注的指标有三个:封装表面的最大翘曲值、关键 bump 上的最大应力值、还有温度循环下的疲劳寿命预估。这些指标最好在项目早期就定下目标值,否则等设计定稿再仿真,大概率会收到一摞不达标的报告。
5.3 一次实际项目中的验证迭代记录
说一个我印象很深的项目。那是一个 2.5D 封装的 AI 加速器,里面有 4 颗逻辑 die 和 8 颗 HBM。我们在第二版设计里做物理验证时,发现 HBM 和逻辑 die 之间的 UCIe 通道眼图余量不足,仿真结果显示主要原因不在封装基板,而是 PCB 上 BGA 区域的过孔反焊盘设计导致阻抗波动。
当时我们做了一个快速定位实验:只改 PCB 端 BGA 区域的过孔反焊盘尺寸,从默认的 12mil 增加到 16mil,并减少了一段 45 度走线转角的长度。仿真结果出来后,眼图余量提升了 25% 左右。这个改动在封装端完全没动,但问题是它必须在封装设计阶段就把 PCB 的真实方案拉进来才能发现。如果按老流程,封装已经定稿发出去制造了,PCB 这边才发现问题,整个项目周期至少要推迟四到六周。
那次之后,我们把“联合仿真节点”提前到了基板布线完成 50% 的时候。效果很明显:后续几版设计的返工次数大幅下降。之前很多问题是等到基板做完才发现,现在几乎都在设计中间阶段解决。这也是为什么我一直强调封装和 PCB 的协同设计必须落在具体工具和具体检查节点上,不能停留在口头沟通。
6. 工具链与团队协作:中小团队也能快速干起来的落地建议
6.1 主流 EDA 工具在 Chiplet 集成中的定位
现在主流的封装设计工具,基本都支持某种程度的小芯片集成流程。Cadence 的 Allegro Package Designer Plus 配合 SiP Layout,是很多团队的首选。它能直接导入 die 的 LEF/def 文件,也支持从 CSV 读 bump map,配合 Sigrity 做仿真,整条链路比较顺。
另外有很多做PCB的工程师习惯用 Altium Designer,AD 对传统 PCB 设计很友好,建库、布局、布线都方便,但到了封装级设计,特别是 die 级 bump 阵列和复杂 D2D 约束,AD 就显得力不从心。不是说不能用,而是它的数据模型和封装设计需求不太匹配,处理上万 bump 的封装会很卡,而且和主流封装仿真工具的接口有限。
我的建议是:如果团队刚接触 Chiplet 集成,不要急着买一堆昂贵的新工具。先用现有工具打通一条最小可行链路。比如用 Cadence 做封装和仿真,用 Python 脚本处理数据转换,用开源工具画出来做辅助可视化。等流程验证跑通了,再逐步上更完整的协同设计平台。盲目上全套工具,很可能一年半载都跑不出一个像样的 demo,团队反而失去信心。
6.2 团队角色怎么切分:芯片、封装、PCB 三方协同
Chiplet 项目里的团队协作,最大的问题往往不是技术,而是职责边界不清。芯片团队觉得封装是“翻译”他们数据的地方,封装团队觉得他们只负责基板,PCB 团队觉得他们只收到最终的封装外形就行。三个团队各自的局部最优,组合起来往往就是全局的不优。
我比较推荐的做法是设置一个“系统集成工程师”角色,这个人不深入某个具体设计环节,但负责协调跨团队的接口和约束。他的核心任务是:
- 维护一份统一的需求基线(Bump map、电源域划分、热指标、成本目标);
- 组织定期的设计评审,确保所有变更都经过影响分析;
- 管理版本和交付物,杜绝“我给你的就是最终版”这种鬼话。
角色不用多,一个人或者两三个人就够。如果没有这个角色,就算工具再先进,项目一样会乱。
6.3 中小团队快速试错的最小流程
最后给资源有限、不想一开始就上重型流程的团队,一个最小流程图可以参考:
- 拿到 die 数据后,先做一版“快速可行性评估”:两层基板能不能走通?需要几层?中介层能不能覆盖所有 die 的区域?BGA 密度是否在 PCB 可制造范围?
- 用 Python 脚本把 die 数据转换成 EDA 工具可读格式,快速建库。
- 只做关键互连的预布局,不做全量布线,先验证信号完整性和电源完整性可行性。
- 和 PCB 同事同步一个“预布局板级方案”,确认 BGA 区域和关键器件放得下。
- 评估通过后,再进入正式设计流程。
这套流程不会让所有人都满意,因为少了很多人因熟悉而产生的安全感,但它真的能让项目早点发现问题,而不是晚点发现问题。我们团队用这套方式,把一个原本需要四轮迭代的 Chiplet 集成项目,压缩到了一轮半就锁定方案。省下来的时间,足够大家去把细节打磨得更好。
工具和流程终究是辅助,真正让项目提速的关键,是团队里每个人都有全局观——做封装的时候想着 PCB,做芯片的时候想着封装,做 PCB 的时候想着系统怎么测试、怎么散热。这种思维方式的转变,比学会什么新软件都难,但回报也最大。我在实际项目中体会最深的就是这一点。