第三章:封装设计流程——从RTL到GDS,封装设计交接物

各位做芯片后端的朋友,咱们今天聊聊封装设计流程。说实话,很多做数字后端的人,对封装这块儿总觉得隔着一层纱。我当年刚接触先进封装时,也踩过不少坑。今天就把我从RTL到GDS这条路上,封装设计到底交接什么、怎么交接,掰开了讲清楚。

一、封装设计不是“最后一步”

很多人以为封装是芯片设计完了才开始的。其实不然。在先进封装里,尤其是2.5D/3D IC,封装设计和芯片设计是并行推进的。我习惯把整个流程分成三个阶段:

  • 前端规划阶段:RTL还没冻结,封装架构就要开始评估
  • 中端协同阶段:芯片Place & Route进行中,封装基板布线同步启动
  • 后端整合阶段:GDS出来后,做最终的物理验证和签核

说白了,封装设计不是等芯片设计完了再“包一层”,而是从一开始就要参与进来。你想想看,如果等到芯片GDS都出来了,才发现die-to-die接口位置不对,那代价可就大了。

二、封装设计的核心交接物

封装设计过程中,有几个关键的交接物。我每次做项目,都会盯着这几个文件反复确认。它们就像封装设计的“身份证”,缺一不可。

1. Netlist——封装互连的“蓝图”

封装级的Netlist和芯片级的Netlist不太一样。芯片级Netlist描述的是晶体管和标准单元之间的连接,而封装级Netlist描述的是die、中介层(Interposer)、基板(Substrate)之间的连接关系。

封装Netlist包含的内容:

  • 各个die的端口定义(端口名、坐标、层数)
  • die-to-die的互连关系
  • die-to-substrate的连接
  • 电源/地网络的分配
  • 关键信号的拓扑约束

我记得有一次,客户给的封装Netlist里,一个die的电源端口名字写错了,导致后面整个电源网络分析都跑偏。后来花了三天才定位到问题。所以我现在拿到Netlist,第一件事就是做端口名一致性检查。

2. LEF/DEF——封装物理信息的“载体”

LEF(Library Exchange Format)和DEF(Design Exchange Format)在封装设计里,作用比芯片级更复杂。封装级的LEF/DEF主要描述的是:

  • LEF:die的边界、bump/pad的位置、尺寸、层叠信息
  • DEF:die在封装中的具体摆放位置、旋转角度、互连线的布线信息

这里有个坑,我特别想提醒大家。芯片级的LEF通常只包含标准单元和宏单元的信息,但封装级的LEF必须包含bump map和micro-bump的详细信息。如果bump的坐标和芯片内部IO pad的坐标对不上,后面做物理验证时就会报出一堆DRC错误。

我的经验:在生成封装LEF时,一定要和芯片后端团队确认bump的坐标原点是否一致。我曾经遇到过芯片用左下角为原点,封装用中心为原点,结果bump位置整体偏移了50um。这种低级错误,提前对齐就能避免。

3. GDS——最终交付的“实物”

封装级的GDS和芯片级的GDS,层级结构完全不同。芯片GDS里是标准单元、宏单元、金属层,而封装GDS里是:

  • 中介层(Interposer)的金属层和TSV
  • 基板的布线层和过孔
  • bump和micro-bump的图形
  • die的边界标记(用于对准)
  • 标记点(Fiducial Mark)

封装GDS的合并是个技术活。我习惯用Calibre的MERGE命令,把各个die的GDS和封装基板的GDS合并成一个完整的GDS。但要注意,合并时一定要保持各层的命名规则一致,否则后面做LVS时会报“unrecognized layer”错误。

三、从RTL到GDS的封装设计流程

下面这张图是我自己总结的封装设计流程,大家可以参考一下。

先进封装设计流程:从RTL到GDS 阶段一:前端规划(RTL阶段) 芯片RTL设计 封装架构评估 IO/Bump规划 接口定义 封装Netlist 初步生成 阶段二:中端协同(Place & Route阶段) 芯片P&R 时序收敛 封装基板布线 LEF/DEF更新 协同仿真 IR Drop/EM 阶段三:后端整合(GDS签核阶段) GDS合并 层级对齐 物理验证 DRC/LVS/ANT 签核交付 最终GDS+报告 三个阶段的交接物:Netlist → LEF/DEF → GDS

四、交接物之间的“对账”

这三个交接物不是孤立的。它们之间必须严格对应。我每次做项目,都会做一次“三表对账”:

检查项 Netlist vs LEF/DEF LEF/DEF vs GDS Netlist vs GDS
端口一致性 端口名、方向匹配 端口坐标、层数匹配 端口连接关系一致
电源网络 电源域划分一致 电源线宽、间距符合规则 电源网络拓扑一致
信号完整性 关键信号约束一致 信号线长度、屏蔽符合要求 信号连接关系正确
物理尺寸 die尺寸与LEF一致 GDS中die边界与DEF一致 整体尺寸匹配

注意:我曾经在一个3D IC项目中,Netlist里定义了一个die有2000个bump,但LEF里只画了1800个bump的图形。结果LVS跑出来报了200个端口不匹配的错误。后来发现是LEF生成脚本里漏掉了一组bump。这种问题,提前做一致性检查就能避免。

五、实际项目中的交接物管理

我个人的习惯是,每个交接物都要有版本号。比如:

  • pkg_netlist_v1.2.spi —— 封装Netlist
  • pkg_lef_v1.2.lef —— 封装LEF
  • pkg_def_v1.2.def —— 封装DEF
  • pkg_gds_v1.2.gds —— 封装GDS

版本号要统一。如果Netlist更新到v1.3,那么LEF/DEF和GDS也要同步更新。否则就会出现“Netlist说连A点,GDS里A点却不存在”的尴尬情况。

另外,交接物之间最好做一个交叉检查脚本。我写过一个小脚本,专门检查Netlist里的端口是否在LEF中都有对应的bump图形。这个脚本帮我抓出过好几次遗漏。

六、避坑指南

我曾经踩过的坑:

  • 坐标原点不一致:芯片用左下角,封装用中心,导致bump整体偏移。解决方案:在项目启动时就约定好坐标原点,并在交接物中明确标注。
  • 层号映射错误:芯片的M1层在封装里对应的是哪一层?如果没有统一的层映射表,GDS合并时就会乱套。我建议做一个层映射文件(Layer Map),双方确认后再开始工作。
  • Netlist里漏了电源端口:有一次客户给的Netlist里,一个die的VDD端口没连出来,导致电源网络分析时那个die一直是0V。后来手动补上才通过。所以Netlist一定要做电源完整性检查。

好了,关于封装设计流程和交接物,今天就聊到这儿。这些文件看起来简单,但每个细节都可能影响最终流片的成败。做封装设计,耐心和细心比技术本身更重要。

可可精品资料库