3. 封装版图几何操作与层处理

在先进封装物理验证中,RDL(重分布层)与凸点(Bump)结构是连接芯片内部与封装基板的关键几何对象。与前端数字版图不同,封装版图往往由多个来源拼接而成:芯片 PDK 提供的 RDL 走线层、UBM 开窗层、凸点金属层,封装厂提供的基板焊盘层、阻焊开窗层,以及测试用的探针标记层。这些层在 Calibre 中并不是天然对齐的,需要经过层定义、派生、布尔运算、尺寸调整和层间关系检查,才能形成可验证的几何模型。本节围绕 RDL 与凸点结构,说明这些几何操作的实际做法与判断依据。

层定义与派生:从原始 GDS 到可验证层

Calibre 的层处理入口是规则文件中的 LAYER 语句。封装验证中常见的做法是:先为每个 GDS 层号/数据类型建立基础层,再通过派生得到逻辑层。例如,某封装 PDK 中 RDL 走线位于 layer 10 datatype 0,UBM 开窗位于 layer 20 datatype 0,凸点金属位于 layer 30 datatype 0。规则文件可写为:

LAYER RDL_METAL   10 0
LAYER UBM_OPEN    20 0
LAYER BUMP_METAL  30 0
LAYER RDL_DUMMY   10 1
LAYER PASSIVATION 40 0

// 派生:RDL 有效金属 = 走线层减去 dummy 填充
LAYER RDL_ACTIVE  RDL_METAL NOT RDL_DUMMY
// 派生:凸点下金属开窗 = UBM 开窗与凸点金属的交集
LAYER UBM_BUMP    UBM_OPEN AND BUMP_METAL

这里的关键是理解“派生”不是简单改名,而是把物理层转换为具有电学或工艺含义的逻辑层。RDL_ACTIVE 去除了 dummy 填充,用于后续的间距和宽度检查;UBM_BUMP 只保留真正被凸点覆盖的开窗区域,用于判断 UBM 是否被凸点完整包住。若直接对原始层做检查,dummy 会被误判为走线,开窗与凸点的错位也无法暴露。

布尔运算与尺寸调整:RDL 与凸点的几何修正

布尔运算在封装验证中主要解决三类问题:合并、切割和差集。以 RDL 为例,同一网络可能由多段走线拼接而成,需要先 OR 合并再检查连续性;而 RDL 与凸点之间需要保证足够的覆盖,可用 AND 求交集后判断面积。尺寸调整则用于补偿工艺偏差或建立检查窗口。Calibre 中常用 SIZE 语句,例如:

// 将 RDL 走线向外扩 0.5um,用于检查与相邻网络的间距余量
LAYER RDL_EXPAND  SIZE RDL_ACTIVE BY 0.5
// 将凸点金属向内缩 0.3um,得到凸点核心区域
LAYER BUMP_CORE   SIZE BUMP_METAL BY -0.3
// 检查 RDL 扩展后是否与相邻 RDL 重叠(即间距不足 1.0um)
LAYER RDL_SPACE_ERR RDL_EXPAND AND RDL_EXPAND

需要特别注意尺寸调整的方向约定:正数表示向外扩张,负数表示向内收缩,单位与版图数据库一致(通常为微米)。在 RDL 与凸点场景中,一个典型检查是“凸点是否完全落在 UBM 开窗内”。做法是先将 UBM 开窗向内缩一个安全余量,再与凸点金属求差集,若差集非空,说明凸点超出了安全边界。这个差集结果就是需要修复的几何对象。

RDL 与凸点几何操作链:从原始层到可验证结果 RDL_METAL (10/0) RDL 走线原始层 UBM_OPEN (20/0) UBM 开窗层 BUMP_METAL (30/0) 凸点金属层 RDL_DUMMY (10/1) dummy 填充层 RDL_ACTIVE RDL_METAL NOT DUMMY UBM_BUMP UBM_OPEN AND BUMP BUMP_CORE SIZE BUMP BY -0.3 RDL_EXPAND SIZE RDL_ACTIVE BY +0.5 RDL 间距检查 RDL_EXPAND AND RDL_EXPAND 凸点覆盖检查 UBM_BUMP NOT BUMP_CORE RDL 连续性检查 RDL_ACTIVE 连通域 数量与网络比对 UBM 开窗检查 UBM_OPEN 与 PASSIVATION 关系 结果判读:差集/交集非空 → 输出 DRC 错误标记 错误坐标、层号、网络名写入结果数据库,供版图修复定位

层间关系操作:RDL 与凸点的对齐检查

层间关系操作的核心是“相对位置”而非单层几何。封装中常见的层间关系包括:包含(enclosure)、重叠(overlap)、间距(space)、延伸(extension)。Calibre 提供 ENCLOSURE、OVERLAP、SPACE 等检查语句,也可以先用布尔运算构造关系层再检查。以凸点与 UBM 开窗为例,要求凸点金属完全覆盖 UBM 开窗,且每边至少外扩 1.0 μm。实现方式是:

// 凸点向外扩 1.0um 后,应完全包含 UBM 开窗
LAYER BUMP_ENCL  SIZE BUMP_METAL BY 1.0
LAYER ENCL_ERR   UBM_OPEN NOT BUMP_ENCL
// ENCL_ERR 非空处即为凸点对 UBM 包覆不足的位置

这里的方向约定必须统一:SIZE ... BY 正数 表示几何向外扩张,NOT 表示前者减去后者。若把方向写反,检查结果会完全相反。对于 RDL 与凸点之间的连接,则常用 OVERLAP 判断两者是否有足够的接触面积,避免出现“凸点悬空”或“RDL 未接到凸点”的开路风险。

层次化处理与扁平化策略

封装版图通常包含大量重复单元,例如凸点阵列、RDL 扇出单元、测试焊盘单元。Calibre 默认以层次化方式处理,保留 cell 的引用关系,这对内存和运行时间更友好。但在某些检查中,层次化会带来问题:例如跨 cell 边界的 RDL 走线,如果只在单个 cell 内检查间距,可能漏掉相邻 cell 之间的实际间距。此时需要选择性地扁平化。

Calibre 中可通过 FLATTEN 语句或 DFM 相关选项控制扁平化范围。实际策略是:对凸点阵列这类规则重复结构,保留层次化,利用阵列重复性加速;对 RDL 走线这类跨单元连续结构,在检查前将相关层扁平化到指定层级,确保跨边界几何被正确合并。一个可参考的判断依据是:若某层在多个 cell 中都有图形且需要做全局间距检查,就应扁平化;若某层只在单个 cell 内闭合,则保留层次化。

实操建议:在规则文件开头用注释记录每个派生层的来源和运算方向,尤其是 SIZE 的正负号和 NOT 的操作数顺序。封装验证中大量错误来自层方向写反或差集顺序颠倒,而不是规则本身复杂。

一个可复用的检查清单

检查项 涉及层 操作 判断依据
RDL 最小间距 RDL_ACTIVE SIZE +0.5 后 AND 自身 交集非空表示间距不足 1.0 μm
凸点对 UBM 包覆 BUMP_METAL, UBM_OPEN BUMP 外扩 1.0 后 NOT UBM 差集非空表示包覆不足
RDL 与凸点连接 RDL_ACTIVE, BUMP_METAL AND 求交集面积 面积小于阈值表示接触不足
UBM 开窗与钝化层关系 UBM_OPEN, PASSIVATION ENCLOSURE 检查 开窗应完全落在钝化层开孔内
跨 cell RDL 连续性 RDL_ACTIVE 扁平化后连通域分析 连通域数量与网络表一致

以上操作链的最终目的,是把封装版图中分散的 GDS 层转换为具有明确工艺和电学含义的验证层,再通过布尔运算和尺寸调整构造出可判读的检查结果。RDL 与凸点结构只是其中一类典型对象,掌握层定义、派生、布尔、尺寸、层间关系和扁平化这六个基本动作后,面对基板焊盘、阻焊开窗、探针标记等其他封装结构时,可以按同样的思路建立检查规则。关键在于每一步都明确输入层、运算方向和输出层的物理含义,而不是机械地堆叠语句。