4. DRC规则编写基础:几何规则、电气规则与密度规则
DRC(Design Rule Check)规则文件是版图验证的核心。Calibre DRC 使用标准规则语言(SVRF 或 Tcl)描述版图必须满足的物理约束。本章聚焦三类最基础的规则类型:几何规则、电气规则和密度规则,并给出对应的编写范例与调试要点。
4.1 几何规则:宽度、间距与包围
几何规则是 DRC 中最基础、最常用的规则,直接控制版图图形的尺寸和相对位置。主要包括以下三类:
| 规则类型 | 描述 | 典型检查对象 | 违反后果 |
|---|---|---|---|
| 宽度 (Width) | 检查同一层上连续图形的最小/最大宽度 | 金属线宽、多晶硅栅宽 | 短路、断路、电迁移 |
| 间距 (Spacing) | 检查同一层或不同层之间图形的最小间距 | 金属-金属间距、阱-阱间距 | 桥接、漏电、闩锁效应 |
| 包围 (Enclosure) | 检查一层图形对另一层图形的覆盖余量 | 接触孔/通孔被金属包围、有源区被多晶包围 | 接触不良、工艺偏差失效 |
4.1.1 宽度规则编写示例
宽度规则通常使用 WIDTH 语句。以下示例检查 M1 层最小宽度为 0.18 µm:
// 规则:M1 最小宽度 0.18 µm
M1_WIDTH {
@ M1 minimum width must be >= 0.18 µm
WIDTH M1 < 0.18
}
4.1.2 间距规则编写示例
间距规则使用 SPACE 语句。以下示例检查同一 M1 层图形之间的最小间距:
// 规则:M1 最小间距 0.20 µm
M1_SPACE {
@ M1 minimum spacing must be >= 0.20 µm
SPACE M1 < 0.20
}
4.1.3 包围规则编写示例
包围规则使用 ENC 语句。以下示例检查 V1 通孔被 M2 包围的最小余量:
// 规则:V1 被 M2 包围至少 0.05 µm
V1_M2_ENC {
@ V1 enclosure by M2 must be >= 0.05 µm
ENC V1 M2 < 0.05
}
调试提示:几何规则违反通常表现为“边缘标记”。在 Calibre RVE 中,点击违反结果会自动高亮对应的图形边缘。检查宽度违反时,注意区分“线宽不足”与“图形缺口”;检查间距违反时,注意“同层间距”与“异层间距”的规则差异。
4.2 电气规则
电气规则用于检查版图在电学特性上是否满足设计要求,通常涉及电流密度、电压降、寄生参数等。与几何规则不同,电气规则往往需要结合电路网表或工艺参数进行验证。
| 规则类型 | 检查内容 | 典型语句 | 应用场景 |
|---|---|---|---|
| 电流密度 (Current Density) | 检查金属线宽是否满足最大电流承载 | WIDTH + DERIVED |
电源/地线、大电流信号 |
| 电压降 (IR Drop) | 检查电源网络上的电压损失 | RESISTANCE + VOLTAGE |
芯片供电网络 |
| 天线效应 (Antenna) | 检查栅氧化层在制造过程中是否被破坏 | ANTENNA |
长金属线连接栅极 |
4.2.1 天线效应规则示例
天线效应规则检查金属层面积与栅面积的比例是否超过阈值:
// 天线效应规则:M1 面积 / 栅面积 <= 1000
ANTENNA_M1 {
@ M1 antenna ratio must be <= 1000
ANTENNA GATE M1 < 1000
}
注意:电气规则通常需要额外的工艺参数文件(如
.rules 或 .tech 文件)提供电阻率、电流密度阈值等数据。在调试电气规则违反时,除了检查版图图形,还需要确认工艺参数是否正确加载。
4.3 密度规则
密度规则用于确保版图各层的图形密度在工艺允许范围内,避免化学机械抛光(CMP)等工艺步骤中出现不平坦或过度腐蚀问题。
| 规则类型 | 检查内容 | 典型语句 | 窗口大小 |
|---|---|---|---|
| 最小密度 (Min Density) | 检查窗口内图形面积占比是否低于下限 | DENSITY < value |
通常 100 µm × 100 µm |
| 最大密度 (Max Density) | 检查窗口内图形面积占比是否超过上限 | DENSITY > value |
通常 100 µm × 100 µm |
| 梯度密度 (Density Gradient) | 检查相邻窗口之间的密度变化率 | DENSITY_GRADIENT |
滑动窗口 |
4.3.1 密度规则编写示例
// M1 最小密度规则:100 µm × 100 µm 窗口内密度 >= 30%
M1_MIN_DENSITY {
@ M1 minimum density must be >= 30% in 100x100 window
DENSITY M1 < 0.30 [100 100]
}
// M1 最大密度规则:100 µm × 100 µm 窗口内密度 <= 70%
M1_MAX_DENSITY {
@ M1 maximum density must be <= 70% in 100x100 window
DENSITY M1 > 0.70 [100 100]
}
密度规则调试要点:
- 密度违反通常表现为“热点区域”,在版图中呈现为大片空白或密集图形区域。
- 最小密度违反:需要在空白区域添加虚拟填充(Dummy Fill)图形。
- 最大密度违反:需要分散或移除部分图形,或使用开槽(Slotting)技术。
- 梯度密度违反:需要均匀化图形分布,避免密度突变。
4.4 规则编写通用规范
无论编写哪种类型的 DRC 规则,都应遵循以下规范,以确保规则文件的可读性、可维护性和执行效率:
- 规则命名:使用有意义的名称,如
M1_MIN_WIDTH、CONT_VIA_ENC,便于在 RVE 中快速定位。 - 注释:每个规则前添加
@注释,描述规则目的和阈值。 - 层次化:将规则按功能分组(如几何规则、电气规则、密度规则),使用
//或/* */添加章节分隔。 - 变量化:将阈值定义为变量,便于工艺节点迁移时统一修改。
// 变量定义示例
M1_MIN_WIDTH_VAL = 0.18
M1_MIN_SPACE_VAL = 0.20
V1_M2_ENC_VAL = 0.05
// 使用变量编写规则
M1_WIDTH {
@ M1 minimum width must be >= M1_MIN_WIDTH_VAL
WIDTH M1 < M1_MIN_WIDTH_VAL
}
M1_SPACE {
@ M1 minimum spacing must be >= M1_MIN_SPACE_VAL
SPACE M1 < M1_MIN_SPACE_VAL
}
V1_M2_ENC {
@ V1 enclosure by M2 must be >= V1_M2_ENC_VAL
ENC V1 M2 < V1_M2_ENC_VAL
}
进阶技巧:在调试复杂规则时,可以使用
DRC RESULTS DATABASE 语句将违反结果输出为 GDS 或 ASCII 文件,便于在版图编辑器中叠加显示。同时,善用 Calibre 的 DRC CHECK MAP 功能,可以快速查看所有规则的检查状态和违反数量。