2. 先进封装版图与数据准备

先进封装的 DRC/LVS 验证,第一步并不是打开 Calibre 跑规则,而是把“要验证的版图”准备正确。与单芯片验证相比,先进封装版图往往由多个来源、多个工艺节点、多个设计团队的数据拼合而成:Die 来自晶圆厂,Interposer 可能来自另一家代工厂,Substrate 由封装厂提供,PCB 又来自系统团队。这些数据在格式、单位、层次、坐标系、层号映射上都不一致。如果数据准备阶段出错,后续规则检查会出现大量假错、漏检,甚至根本无法读入。本节围绕 GDSII/OASIS 数据组织、封装版图层次结构、多级数据合并以及 Calibre 的读取与层次化处理策略展开。

GDSII 与 OASIS:两种主流版图数据格式

GDSII 是历史最悠久、兼容性最好的版图交换格式,采用二进制流式结构,核心对象包括:库(LIBRARY)、结构(STRUCTURE,即 cell)、边界(BOUNDARY)、路径(PATH)、SREF/AREF 引用、TEXT 标注以及层号/数据类型(layer/datatype)对。它的局限也很明显:单文件通常限制在 2GB 左右,层号只有 0–255(部分工具扩展),不支持真正的 64 位坐标,字符串与属性表达能力弱。对于动辄几十 GB 的先进封装版图,GDSII 往往需要拆分多个文件。

OASIS 是为解决 GDSII 容量与表达瓶颈而设计的格式,支持更大的文件、更多层号、压缩存储、重复结构(repetition)、属性与命名表达式。它用 cellname、offset table、compression 等机制显著减小文件体积。在先进封装中,Interposer 与 RDL 版图常以 OASIS 交付,而 Substrate/PCB 仍大量使用 GDSII 或厂商私有格式。Calibre 对两者都支持,读取时通过 -format 或自动识别处理。

数据准备的第一条原则:不要假设所有来源的层号含义一致。Die 的 M1、RDL 的 RDL1、Substrate 的 L1 可能都映射到 layer 1,必须在合并前建立统一的层映射表(layer map)。

封装版图的层次结构

先进封装版图天然是层次化的。典型层次从下到上为:

  • 单元级(cell):标准单元、凸点(bump)、TSV、pad、走线段等可复用图形;
  • 模块级(block):若干 cell 通过 SREF/AREF 阵列化或实例化组成的功能块,如 bump array、RDL 布线区;
  • Die 级:一个完整芯片的顶层 cell,包含内部所有模块;
  • Interposer 级:承载多颗 Die 的硅中介层,含 TSV、RDL、微凸点;
  • Substrate 级:封装基板,含走线、过孔、焊球;
  • PCB 级:系统板,含连接器、电源平面、测试点。

层次化不仅是组织方式,更是 Calibre 层次化处理的基础。Calibre 在读取时会构建层次树(hierarchy tree),对重复的 cell 只处理一次,再通过实例引用复用结果。因此,保持合理的层次结构(避免过度 flatten、避免同一图形被拆成大量唯一 cell)能显著降低内存与运行时间。

多级数据合并 → 统一坐标系 → Calibre 层次化读取 Die GDSII / OASIS 顶层 cell: TOP_DIE Interposer OASIS TSV / RDL / μbump Substrate GDSII 走线 / 过孔 / BGA PCB GDSII / 私有格式 连接器 / 电源平面 数据合并与映射 ① 层号映射表 ② 单位统一 (1nm/1μm) ③ 坐标系对齐 ④ 原点/镜像/旋转 ⑤ 顶层 cell 命名 ⑥ 冲突层合并策略 输出:统一封装顶层库 Calibre 读取 LAYOUT PATH / LAYOUT PRIMARY LAYOUT SYSTEM GDSII | OASIS LAYER MAP 层号映射 层次化处理策略 HCELL / 层次化规则检查 DFM FLATTEN 局部展平 AREF 阵列复用 内存 / 运行时间权衡 输出:DRC/LVS 可执行数据库 关键检查点 • 单位一致性:Die 1nm vs Substrate 1μm,差 1000 倍会导致尺寸完全错误 • 层号冲突:不同来源同层号必须重映射,否则图形叠加产生假错 • 原点对齐:以 Interposer 中心或封装基准点为统一原点,避免偏移

Die / Interposer / Substrate / PCB 多级数据合并

多级合并的核心是“统一参照系”。假设我们以 Interposer 的左上角为全局原点,单位为 1nm,那么各来源数据需要做如下处理:

  1. 单位统一:若 Die 数据单位为 1nm,Substrate 为 1μm,则 Substrate 坐标需乘以 1000 转换为 nm。Calibre 中通过 LAYOUT UNITS 或读取时指定 -units 处理。
  2. 层号映射:建立映射表,例如 Die 的 layer 10/0 → 全局 layer 100/0;Substrate 的 layer 1/0 → 全局 layer 200/0。映射表通常写成文本文件,供 LAYER MAP 语句引用。
  3. 坐标变换:每个来源的顶层 cell 通过 SREF 放置到统一顶层,指定原点偏移、旋转角度(0/90/180/270)、镜像(MX/MY)。例如 Die1 放在 Interposer 左上,偏移 (0,0);Die2 放在右侧,偏移 (5000,0),单位 μm。
  4. 顶层 cell 命名:统一命名为 PKG_TOP,其下实例化 DIE1、DIE2、INTERPOSER、SUBSTRATE、PCB,形成清晰的层次树。

合并后的版图应满足:所有图形在同一坐标系下可正确叠加;层号语义唯一;顶层 cell 唯一且可被 Calibre 指定为 LAYOUT PRIMARY。建议在合并后先做一次“空跑”读取,用 Calibre 的 calibre -drc -hier 或版图查看工具确认层次树与图形位置正确,再进入规则检查。

Calibre 读取与层次化处理策略

Calibre 读取版图时,关键控制项包括:

LAYOUT PATH "pkg_top.oas"
LAYOUT PRIMARY "PKG_TOP"
LAYOUT SYSTEM OASIS
LAYOUT UNITS 1000   # 1 user unit = 1000 db unit (1nm)
LAYER MAP 100 DATATYPE 0 100 0
LAYER MAP 200 DATATYPE 0 200 0

其中 LAYOUT UNITS 定义用户单位与数据库单位的换算关系,必须与数据实际单位一致。LAYER MAP 将数据中的层号映射到规则文件中使用的层号,避免规则与数据层号耦合。

层次化处理方面,Calibre 默认采用层次化引擎:对重复 cell 只计算一次,再通过实例复用结果。对于先进封装中大量重复的 bump、TSV、走线段,这能大幅降低内存。但以下情况需要谨慎:

  • 跨层次规则:若规则需要检查不同 cell 之间的间距(如 Die 边缘到 Interposer 边缘),Calibre 可能需要局部展平(flatten)相关区域,可通过 DFM FLATTEN 或 HIERARCHY 相关选项控制。
  • HCELL 指定:通过 HCELL 语句显式指定哪些 cell 保持层次化,哪些允许展平,平衡精度与性能。
  • AREF 阵列:bump array 常用 AREF 表达,Calibre 能识别并复用,但若阵列中个别 bump 需要特殊处理,可能需要拆分为独立实例。
常见陷阱:OASIS 中的 repetition 与 GDSII 的 AREF 语义不完全等价,转换或读取时若未正确展开,可能导致阵列图形丢失或位置偏移。建议在合并后对阵列区域做抽样坐标核对。

数据准备检查清单(示例)

检查项示例值/方法判断依据
单位一致性Die 1nm,Substrate 1μm → 统一为 1nm关键尺寸(如 bump 直径 25μm)在版图中显示为 25000
层号映射Die L10→100,Sub L1→200规则文件中的层号与数据层号一一对应,无重叠冲突
原点对齐以 Interposer 左上角为 (0,0)各 Die 相对位置与封装设计图一致
顶层 cellPKG_TOP 唯一Calibre 读取后层次树根节点唯一
阵列完整性抽样 3 个 bump 坐标与设计坐标误差为 0

完成上述准备后,版图数据才具备进入 DRC/LVS 规则检查的条件。数据准备的质量直接决定后续验证的效率与可信度:单位、层号、原点、层次结构四项中任何一项出错,都会在规则检查阶段以大量假错或漏检的形式暴露出来,而排查这些问题的成本往往远高于前期认真准备。