2. 3DIC设计数据准备

3DIC 物理验证的第一步不是跑规则,而是把多颗芯片的数据“摆到同一张桌子上”。与单芯片验证只读一个 GDS 不同,3DIC 签核需要同时读入多颗裸片(die)、中介层(interposer)、基板(substrate)甚至封装体的版图数据,并让它们在统一的坐标系、统一的层编号体系下彼此对齐。数据准备做错,后面的 DRC/LVS 结果全部不可信,因此这一节的重点是:输入格式怎么选、层怎么映射、层次怎么组织、TSV/微凸点/混合键合这些关键对象在版图里到底长什么样、用什么层和图形表示。

一、多芯片输入:GDSII 与 OASIS 的选择

Calibre 3DIC 流程中,每颗芯片通常以独立文件输入,常见格式为 GDSII(.gds)和 OASIS(.oas)。GDSII 兼容性最好,几乎所有 EDA 工具都能读写,但它是 1970 年代设计的格式,对超大版图(中介层动辄几十 GB)存储效率低,且层号、数据类型字段宽度有限。OASIS 采用压缩与变长编码,同一中介层版图体积常可降到 GDSII 的 1/5~1/10,读取更快,并支持重复结构(repetition)和更灵活的层表达,因此在先进 3DIC 项目中逐渐成为首选。

实际工程里常见的做法是:各芯片来自不同团队、不同工艺,交付格式不统一。此时应在数据准备阶段统一转换,而不是让验证工具去兼容多种格式。转换时要注意三点:一是单位(database unit)必须统一,例如全部归一到 1 nm 或 0.5 nm,否则堆叠后尺寸会整体缩放;二是层号不能冲突,需要重映射;三是文本标签(text)和属性要保留,否则后续做 LVS 时找不到网络名。

二、层映射:把不同工艺的层“翻译”到统一编号

每颗芯片的层编号由各自工艺决定,例如 A 芯片用 1/0 表示有源区、2/0 表示多晶硅,B 芯片可能用 10/0、11/0。3DIC 验证工具需要一套统一的“堆叠层表”,把每颗芯片的原始层映射到全局层号,并标注该层属于哪颗芯片、位于哪个 Z 高度。层映射通常以映射表文件描述,例如:

# layer_map: die_layer -> global_layer
DIE_A 1/0   -> 101/0   # active
DIE_A 2/0   -> 102/0   # poly
DIE_B 10/0  -> 201/0   # active
DIE_B 11/0  -> 202/0   # poly
INTERPOSER 30/0 -> 301/0 # RDL

映射的原则是“同物理意义同全局层、不同芯片不同段”。这样在写规则时,可以针对全局层 101 写 A 芯片有源区规则,针对 201 写 B 芯片规则,互不干扰。层映射还要处理派生层(derived layer),例如用“TSV 开孔层 AND 金属层”生成 TSV 连接层,供后续连接性检查使用。

三、层次化结构:用 cell 表达堆叠关系

3DIC 版图天然是层次化的:每颗芯片内部有标准单元、宏单元、电源网格,芯片之间通过堆叠关系组合。Calibre 3DIC 通常用一个顶层 cell 引用各芯片的顶层 cell,并通过放置(placement)指定每颗芯片的 X/Y 偏移和 Z 顺序。层次化结构带来两个好处:一是数据复用,同一颗芯片被多次引用时只存一份;二是规则可按层次作用,例如只在芯片交界处检查跨芯片间距。

需要注意的是,层次化会带来“同名 cell 冲突”。不同芯片可能都有名为 TOP 或 FILL 的 cell,直接合并会出错。解决办法是在读入时给每颗芯片的 cell 名加前缀,例如 A_TOP、B_TOP,或在工具中启用命名空间隔离。此外,扁平化(flatten)虽然能消除层次问题,但会让数据量爆炸,3DIC 中应尽量保留层次,只在必要时对局部做扁平化。

四、TSV、微凸点、混合键合的表示方法

这三类对象是 3DIC 的“连接件”,在版图中必须能被工具识别为独立对象,而不是普通图形。

  • TSV(硅通孔):贯穿硅片的垂直互连。版图上通常用圆形或方形开孔层表示,直径示例为 5~10 μm,深宽比 10:1 左右。表示时至少需要两层:TSV 开孔层(描述孔的位置和尺寸)和 TSV 金属层(描述填充金属)。验证时要检查 TSV 与有源区、金属层的间距,以及 TSV 之间的最小间距。
  • 微凸点(micro-bump):芯片与中介层之间的焊接点,直径示例 20~40 μm,节距 40~55 μm。版图上用凸点下金属(UBM)层和凸点开孔层表示。关键检查项是凸点与 RDL 的对准、凸点间最小间距、以及凸点与 TSV 的对应关系。
  • 混合键合(hybrid bonding):铜-铜直接键合,键合垫尺寸可小到 1~3 μm,节距 2~5 μm。版图上用键合垫层表示,通常成对出现(上下芯片各一层)。验证重点是上下键合垫的对准精度、键合垫密度和边缘排除区。

为了让工具正确识别,这些对象应使用专用层号,并在层映射表中标注类型(如 type=TSV、type=BOND_PAD)。有些流程还会为每个对象生成唯一标识(ID),便于跨芯片追踪同一连接点。

3DIC 多芯片堆叠数据准备与关键对象表示 Die A A.gds / A.oas Die B B.gds / B.oas Interposer INT.oas Substrate SUB.gds 层映射表 A 1/0 → 101/0 A 2/0 → 102/0 B 10/0 → 201/0 B 11/0 → 202/0 INT 30/0 → 301/0 TSV → 401/0 Bond → 501/0 层次化结构 TOP_3D ├ A_TOP (Z=0) ├ B_TOP (Z=1) └ INT_TOP (Z=2) 堆叠剖面与关键对象 Die A 有源区 / 金属层 混合键合 (Hybrid Bonding) Die B 有源区 / 金属层 微凸点 (Micro-bump) Interposer RDL / TSV TSV (硅通孔) Substrate 图例 芯片 / 中介层 混合键合 微凸点 TSV

五、数据准备的检查闭环

数据准备完成后,不要直接进入规则检查,应先做一次“空跑”验证:读入所有文件,检查层映射是否全部命中、层次引用是否完整、单位是否一致、关键对象是否被正确识别。一个实用的判断方法是统计各全局层的图形数量,与各芯片原始层图形数量做对比,若某层数量为 0 或明显异常,说明映射或读入有问题。此外,可以单独提取 TSV、微凸点、混合键合层,观察其分布是否与预期堆叠位置一致。只有这一步通过,后续的 DRC/LVS 结果才有意义。

数据准备阶段最常见的三类错误:单位不一致导致整体缩放、层号冲突导致图形覆盖、cell 同名导致层次错乱。建议在流程中固定一份层映射表和命名规范,所有芯片交付时按同一规范检查。