4. DRC Rule Deck 结构解析:规则定义、派生层与运算语句

DRC Rule Deck 是物理验证的“法律条文”,它定义了芯片版图必须满足的几何约束。在 ICV 环境中,Rule Deck 采用层次化、模块化的组织方式,由规则定义、派生层(Derived Layer)和运算语句三大核心要素构成。理解其结构是高效定位和修复 DRC 错误的前提。

核心认知: Rule Deck 不是平铺的规则列表,而是一个由“层运算 → 规则检查 → 结果输出”构成的流水线。派生层用于提取或组合物理层,运算语句定义检查条件,规则定义则封装了具体的约束参数。

4.1 Rule Deck 的层次结构

一个典型的 ICV DRC Rule Deck 从顶层到底层通常包含以下四个层次:

层次 功能描述 典型内容
1. 技术文件层 定义工艺基础信息,如层号、颜色、最小线宽、最小间距等工艺基线。 LAYER M1 10, WIDTH M1 0.18
2. 派生层定义层 通过逻辑运算(AND, OR, NOT)或几何运算(SIZE, GROW, SHRINK)从原始层生成中间层。 AND M1 VIA1 M1_VIA, SIZE M1 0.1 M1_EXPAND
3. 规则检查层 使用 INT, EXT, ENC 等标准语句对派生层或原始层执行几何约束检查。 INT M1 0.2, ENC VIA1 M1 0.05
4. 结果输出层 定义检查结果的输出格式、错误标记的层名以及是否停止运行。 RESULT M1_SPACE err_m1_space
工程要点: 在 ICV 中,派生层定义是 Rule Deck 的“中间变量”。熟练阅读派生层逻辑,能帮助你快速理解复杂规则(如“天线规则”、“密度规则”)的检查范围。
ICV DRC Rule Deck 层次结构 ICV DRC Rule Deck 层次结构 技术文件层 LAYER / WIDTH 派生层定义层 AND / OR / SIZE 规则检查层 INT / EXT / ENC 结果输出层 RESULT 说明:数据流从上至下,技术文件提供基础层信息,派生层通过运算生成中间层,规则检查层对中间层或原始层执行约束检查,最后输出结果。 实际 Rule Deck 中,派生层定义和规则检查层可能交错出现,形成多层嵌套的检查流水线。 原始层 (GDS) 派生层运算 DRC 检查 错误标记输出

4.2 标准运算语句详解:INT, EXT, ENC

ICV 的 DRC 规则检查主要依赖三类标准几何运算语句。它们是 Rule Deck 中最核心的“动词”,直接决定了检查的物理含义。

语句 全称 检查内容 典型语法 常见应用
INT Internal Spacing 检查同一层内图形之间的间距 INT M1 0.2 金属线间距、有源区间距
EXT External Spacing 检查不同层之间图形的间距 EXT M1 M2 0.3 金属层间间距、阱间距
ENC Enclosure 检查一层图形对另一层图形的包围或覆盖 ENC VIA1 M1 0.05 通孔包边、栅极延伸
常见混淆点: INT 和 EXT 都检查间距,但 INT 只针对同一层(如 M1 到 M1),EXT 针对不同层(如 M1 到 M2)。ENC 则检查“包围”关系,通常用于通孔与金属、有源区与接触孔的包含检查。

4.3 派生层运算与规则组合

实际工艺规则往往不是简单的单层检查,而是需要组合多个层和条件。派生层运算允许工程师创建“虚拟层”,从而表达复杂的几何关系。

4.3.1 常用派生层运算操作符

操作符 含义 示例 结果说明
AND 逻辑与(交集) AND M1 VIA1 M1_VIA_OVERLAP M1 与 VIA1 重叠的区域
OR 逻辑或(并集) OR M1 M2 M1_OR_M2 M1 和 M2 覆盖的所有区域
NOT 逻辑非(差集) NOT M1 POLY M1_NO_POLY M1 中不与 POLY 重叠的区域
SIZE 几何尺寸变换 SIZE M1 0.1 M1_EXPAND M1 向外扩大 0.1μm
SHRINK 几何尺寸收缩 SHRINK M1 0.05 M1_SHRINK M1 向内缩小 0.05μm

4.3.2 组合规则实战案例

以下是一个典型的“通孔包边检查”规则片段,展示了派生层与标准语句的配合:

// 步骤1:定义派生层——M1 中与 VIA1 重叠的区域
AND M1 VIA1 M1_VIA_OVERLAP

// 步骤2:将 M1_VIA_OVERLAP 向外扩大 0.05μm(包边要求)
SIZE M1_VIA_OVERLAP 0.05 M1_VIA_ENCLOSURE

// 步骤3:检查 M1 是否完全覆盖 M1_VIA_ENCLOSURE
// 如果 M1 没有完全覆盖,则报错
NOT M1 M1_VIA_ENCLOSURE M1_MISSING_ENCLOSURE
INT M1_MISSING_ENCLOSURE 0.001  // 只要有缺失区域即报错
工程解读: 上述规则通过三步实现了“VIA1 在 M1 上的包边至少 0.05μm”的检查。第一步提取重叠区,第二步构建理想包边区,第三步检查实际 M1 是否覆盖了该理想区。这种“派生层 + 布尔运算”的模式是 ICV Rule Deck 的典型写法。
派生层运算与规则检查流程 派生层运算与规则检查流程(通孔包边示例) M1 层 原始金属层 VIA1 层 通孔层 步骤1: AND 运算 M1 ∩ VIA1 → M1_VIA_OVERLAP 步骤2: SIZE 运算 扩大 0.05μm → M1_VIA_ENCLOSURE 步骤3: NOT + INT 检查 M1 缺失区域 → 报错 规则逻辑说明 1. 提取 M1 与 VIA1 的重叠区域 作为通孔与金属的实际接触区。 2. 将重叠区向外扩大 0.05μm, 构建“理想包边区”。 3. 用 NOT 运算找出 M1 中 未覆盖理想包边区的区域。 4. 用 INT 检查这些缺失区域, 一旦存在即报 DRC 错误。 结果:确保 VIA1 四周 至少有 0.05μm 的 M1 包边。

4.4 规则定义中的参数与修饰符

除了 INT/EXT/ENC 主体语句外,Rule Deck 还支持多种修饰符来精确控制检查行为:

修饰符 作用 示例
OPPOSITE 检查对边关系(用于平行线间距) INT M1 0.2 OPPOSITE
CONVEX 仅检查凸角间距 INT M1 0.15 CONVEX
CONCAVE 仅检查凹角间距 INT M1 0.15 CONCAVE
INSIDE 检查内部图形(用于环状结构) INT M1 0.1 INSIDE
OUTSIDE 检查外部图形 INT M1 0.1 OUTSIDE
进阶技巧: 在 ICV 中,OPPOSITE 修饰符常用于检查“最小平行运行长度”相关的间距规则。例如,两条长金属线平行走线超过一定长度时,间距要求可能比普通拐角间距更严格。此时使用 OPPOSITE 可以精确命中这类场景。

4.5 本章小结

  • 层次结构: Rule Deck 由技术文件层、派生层定义层、规则检查层、结果输出层构成,数据流自上而下。
  • 标准语句: INT(同层间距)、EXT(异层间距)、ENC(包围检查)是三大核心检查语句。
  • 派生层运算: AND/OR/NOT/SIZE/SHRINK 等操作符用于构建中间层,是实现复杂规则的基础。
  • 修饰符: OPPOSITE/CONVEX/CONCAVE 等修饰符可精确控制检查的几何范围。