ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Chiplet异构集成封装设计:芯片-封装-PCB协同与信号完整性实践

Chiplet异构集成封装设计:芯片-封装-PCB协同与信号完整性实践 最近不少做封装设计的朋友问我同一个问题小芯片集成Chiplet明明是芯片设计的事为什么我们这些做 PCB、做封装的人反而比芯片团队还忙这其实问到了点子上。异构集成电路封装设计里的 Chiplet 集成核心不是“多放几个裸片”而是封装基板、中介层、微凸点、RDL 和 PCB 板级互连被打通成了一个完整系统。过去芯片、封装、PCB 三段各自为政的流程在这种架构下根本跑不起来只能靠封装和 PCB 团队不断返工来填坑。我写这篇文章想结合自己这几年做异构集成封装项目的实际经验把从架构定义、协同设计、D2D 互连约束到验证落地的一整套提速思路讲清楚。内容不会只停留在概念层面会尽量给出可以直接参考的流程节点、工具选型和避坑方法。无论你是刚接触 Chiplet 的 PCB 工程师还是正在搭建先进封装设计流程的团队负责人这篇文章都能帮你少走不少弯路。1. 小芯片集成不只是多放几个裸片先看清设计本质变了什么1.1 从单芯片到 Chiplet设计对象发生了根本变化传统 SoC 设计里芯片团队交付给封装团队的是一个完整、固定的 die封装设计要做的就是把 die 的引脚通过基板扇出到 BGA 焊球再连到 PCB。这个流程里芯片设计、封装设计、PCB 设计虽然有交集但边界清楚die 已经定型封装只是“连接器”PCB 只是“承载板”。Chiplet 集成不是这样。你要在同一个封装里放多个不同工艺节点、不同功能来源的裸片比如逻辑 die 来自台积电 5nmI/O die 来自格芯 12nmHBM 存储 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 互连。目前最热的接口标准是 UCIeUniversal Chiplet Interconnect Express另外还有 BoWBunch 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 DesignerAD 对传统 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 的时候想着系统怎么测试、怎么散热。这种思维方式的转变比学会什么新软件都难但回报也最大。我在实际项目中体会最深的就是这一点。
返回列表