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 或自动识别处理。
封装版图的层次结构
先进封装版图天然是层次化的。典型层次从下到上为:
- 单元级(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)能显著降低内存与运行时间。
Die / Interposer / Substrate / PCB 多级数据合并
多级合并的核心是“统一参照系”。假设我们以 Interposer 的左上角为全局原点,单位为 1nm,那么各来源数据需要做如下处理:
- 单位统一:若 Die 数据单位为 1nm,Substrate 为 1μm,则 Substrate 坐标需乘以 1000 转换为 nm。Calibre 中通过
LAYOUT UNITS或读取时指定-units处理。 - 层号映射:建立映射表,例如 Die 的 layer 10/0 → 全局 layer 100/0;Substrate 的 layer 1/0 → 全局 layer 200/0。映射表通常写成文本文件,供
LAYER MAP语句引用。 - 坐标变换:每个来源的顶层 cell 通过 SREF 放置到统一顶层,指定原点偏移、旋转角度(0/90/180/270)、镜像(MX/MY)。例如 Die1 放在 Interposer 左上,偏移 (0,0);Die2 放在右侧,偏移 (5000,0),单位 μm。
- 顶层 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 需要特殊处理,可能需要拆分为独立实例。
数据准备检查清单(示例)
| 检查项 | 示例值/方法 | 判断依据 |
|---|---|---|
| 单位一致性 | Die 1nm,Substrate 1μm → 统一为 1nm | 关键尺寸(如 bump 直径 25μm)在版图中显示为 25000 |
| 层号映射 | Die L10→100,Sub L1→200 | 规则文件中的层号与数据层号一一对应,无重叠冲突 |
| 原点对齐 | 以 Interposer 左上角为 (0,0) | 各 Die 相对位置与封装设计图一致 |
| 顶层 cell | PKG_TOP 唯一 | Calibre 读取后层次树根节点唯一 |
| 阵列完整性 | 抽样 3 个 bump 坐标 | 与设计坐标误差为 0 |
完成上述准备后,版图数据才具备进入 DRC/LVS 规则检查的条件。数据准备的质量直接决定后续验证的效率与可信度:单位、层号、原点、层次结构四项中任何一项出错,都会在规则检查阶段以大量假错或漏检的形式暴露出来,而排查这些问题的成本往往远高于前期认真准备。