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 的“中间变量”。熟练阅读派生层逻辑,能帮助你快速理解复杂规则(如“天线规则”、“密度规则”)的检查范围。
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 的典型写法。
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 等修饰符可精确控制检查的几何范围。