4. DRC Rule Deck 解读:文件结构、规则分类与报告阅读
DRC Rule Deck(规则文件)是版图验证的核心依据,它定义了制造工艺对版图几何图形的所有约束。理解 Rule Deck 的结构与规则分类,是高效定位和修复 DRC 错误的前提。本章将系统讲解 Calibre DRC Rule Deck 的文件组织方式、主要规则类型,以及如何阅读 DRC 运行报告。
4.1 Rule Deck 文件结构
一个完整的 Calibre DRC Rule Deck 通常由多个文件组成,采用模块化结构,便于维护和复用。典型的文件结构如下:
| 文件/目录 | 说明 | 典型内容 |
|---|---|---|
drc_rule.rule |
主规则文件 | 包含顶层规则调用、层定义、变量声明 |
include/ |
包含文件目录 | 存放各工艺模块的子规则文件 |
include/width.rule |
宽度规则模块 | 金属、多晶硅等层的宽度检查 |
include/spacing.rule |
间距规则模块 | 同层间距、不同层间距检查 |
include/enclosure.rule |
包围规则模块 | 接触孔/通孔包围检查 |
include/density.rule |
密度规则模块 | 金属密度、多晶硅密度检查 |
techfiles/ |
技术文件目录 | 层定义、颜色定义、布尔运算定义 |
关键点:主规则文件通过
INCLUDE 语句引用子模块,形成层次化结构。修改规则时,只需修改对应的子模块文件,无需改动整个 Rule Deck。
主规则文件的开头部分通常包含以下关键信息:
// 工艺节点与版本声明
TECHNOLOGY = "28nm_CMOS"
RULE_REVISION = "v2.1_2024Q1"
// 层定义(Layer Definition)
LAYER METAL1 = 1001
LAYER METAL2 = 1002
LAYER VIA1 = 2001
LAYER CONTACT = 3001
// 变量声明(Variable Declaration)
MIN_M1_WIDTH = 0.070
MIN_M1_SPACE = 0.070
MIN_V1_ENCL = 0.020
// 包含子规则文件
INCLUDE "include/width.rule"
INCLUDE "include/spacing.rule"
INCLUDE "include/enclosure.rule"
INCLUDE "include/density.rule"
4.2 主要规则分类
DRC 规则按几何约束类型可分为四大类:宽度、间距、包围和密度。每类规则都有其特定的检查逻辑和修复方向。
4.2.1 宽度规则(Width Rule)
检查版图图形的最小/最大宽度,确保线条、沟道、金属走线满足工艺最小尺寸要求。
- 典型检查:
WIDTH METAL1 < 0.070→ 报错 - 常见错误: 金属线宽不足、多晶硅栅宽偏小
- 修复方向: 拉伸图形边缘,增加宽度至规则值以上
4.2.2 间距规则(Spacing Rule)
检查同层或不同层图形之间的最小间距,防止短路或寄生效应。
- 典型检查:
METAL1 SPACE < 0.070→ 报错 - 常见错误: 金属线间距过小、通孔间距不足
- 修复方向: 移动图形、增加间距,或调整走线路径
4.2.3 包围规则(Enclosure Rule)
检查通孔/接触孔被上层或下层金属包围的余量,确保连接可靠性。
- 典型检查:
ENCLOSURE VIA1 METAL2 < 0.020→ 报错 - 常见错误: 通孔超出金属边缘、包围余量不足
- 修复方向: 扩大金属图形,使通孔完全被包围
4.2.4 密度规则(Density Rule)
检查版图各层的图形密度是否在工艺允许范围内,避免化学机械抛光(CMP)不均匀。
- 典型检查:
DENSITY METAL1 < 0.20 OR > 0.80→ 报错 - 常见错误: 局部金属密度过高或过低
- 修复方向: 添加或删除 dummy 图形,调整密度至窗口内
实战提示: 在 Rule Deck 中,规则通常以
RULE_NAME { ... } 的形式定义。例如:M1_WIDTH { @ 最小金属1宽度为0.070um WIDTH METAL1 < 0.070 }。大括号内的内容为检查条件和报错信息。
4.3 如何阅读 Calibre DRC 规则报告
Calibre DRC 运行完成后会生成详细的规则报告(通常为 .drc.report 或 .summary 文件)。正确解读报告是定位错误的第一步。
4.3.1 报告结构
一份标准的 DRC 报告包含以下部分:
- 头部信息: 工艺名称、规则版本、运行时间、总错误数
- 规则检查结果列表: 按规则名称列出检查结果,包括通过/失败、错误数量
- 详细错误描述: 每个错误的坐标、层信息、违反的规则、相关图形
- 统计摘要: 按层、按规则分类的错误统计
4.3.2 错误条目解读
每个 DRC 错误条目通常包含以下字段:
| 字段 | 示例 | 含义 |
|---|---|---|
| 规则名 | M1_WIDTH |
违反的规则名称 |
| 坐标 | (12.345, 67.890) |
错误在版图中的位置(单位:um) |
| 层 | METAL1 |
发生错误的层 |
| 测量值 | 0.055 |
实际测量到的几何尺寸(单位:um) |
| 规则值 | 0.070 |
规则要求的最小/最大值(单位:um) |
| 描述 | METAL1 宽度 0.055 小于最小宽度 0.070 |
错误的具体文字说明 |
常见误区: 初学者容易只看坐标而忽略规则名和测量值。实际上,规则名决定了修复策略(宽度不足 vs 间距不足),测量值决定了修复幅度(需要增加多少)。务必同时关注这三个字段。
4.3.3 报告阅读实战示例
以下是一段典型的 DRC 报告片段:
================================================================================
CALIBRE DRC REPORT - 28nm CMOS Process
Rule Deck: drc_rule.rule v2.1_2024Q1
Run Date: 2024-08-15 14:32:05
Total Errors: 47
================================================================================
Rule: M1_WIDTH (METAL1 Minimum Width)
Errors: 12
[1] Coordinate: (12.345, 67.890) Layer: METAL1
Measured: 0.055 um Required: >= 0.070 um
Description: METAL1 width 0.055 is less than minimum width 0.070
Rule: M1_SPACE (METAL1 Minimum Space)
Errors: 23
[1] Coordinate: (45.678, 12.345) Layer: METAL1
Measured: 0.050 um Required: >= 0.070 um
Description: METAL1 space 0.050 is less than minimum space 0.070
Rule: V1_ENCL_M2 (VIA1 Enclosure by METAL2)
Errors: 8
[1] Coordinate: (78.901, 34.567) Layer: VIA1, METAL2
Measured: 0.010 um Required: >= 0.020 um
Description: VIA1 enclosure by METAL2 0.010 is less than minimum 0.020
Rule: M1_DENSITY (METAL1 Density)
Errors: 4
[1] Coordinate: (90.123, 56.789) Layer: METAL1
Measured: 0.15 Required: 0.20 - 0.80
Description: METAL1 density 0.15 is below minimum density 0.20
================================================================================
Summary by Layer:
METAL1: 35 errors (12 width + 23 space)
VIA1: 8 errors (8 enclosure)
METAL2: 4 errors (4 density)
================================================================================
阅读技巧: 先看 Summary by Layer 了解错误分布,再针对错误最多的规则(如本例中的
M1_SPACE)优先修复。在 Calibre RVE 中,可以按规则名或层对错误进行分组,大幅提升定位效率。
4.4 规则报告与版图工具的联动
Calibre DRC 报告可以直接导入版图编辑工具(如 Virtuoso、ICV、Laker)中,实现错误的高亮显示和交互定位。常见操作流程如下:
- 运行 DRC: 在终端或图形界面中执行 DRC 检查,生成
.drc.report文件 - 加载报告: 在版图工具中通过
Calibre > RVE > Load Results加载报告 - 错误浏览: 在 RVE 窗口中按规则、层或坐标浏览错误列表
- 高亮定位: 双击错误条目,版图窗口自动缩放到错误位置并高亮显示
- 修复验证: 修改版图后,重新运行 DRC 检查,确认错误消除
效率建议: 在 RVE 中可以使用 Filter 功能只显示特定规则或特定层的错误,避免被大量无关错误干扰。对于重复性错误(如整条走线宽度不足),建议使用 Fix All 或脚本批量修复,而非逐个手动修改。