3. DRC文件结构解析:标准DRC deck的组成与Calibre SVRF语法基础
DRC(Design Rule Check)规则文件通常被称为“DRC deck”,是物理验证工具执行检查的依据。一个标准DRC deck由层定义、规则语句和派生层三大核心模块构成。Calibre作为业界主流物理验证工具,其SVRF(Standard Verification Rule Format)语法是编写DRC deck的事实标准。本章将深入解析DRC deck的骨架结构,并系统讲解SVRF语法基础。
核心认知:DRC deck本质上是“层操作 + 几何运算 + 规则比较”的指令序列。理解其文件结构,是后续自动化验证与错误调试的基石。
3.1 标准DRC deck的三层架构
一个完整的DRC deck通常遵循“输入定义 → 中间处理 → 规则输出”的逻辑流程。其物理结构可划分为以下三个层次:
| 层次 | 功能描述 | 典型内容 |
|---|---|---|
| 层定义 (Layer Definition) | 将GDSII/OASIS中的层号映射为可读的层名,并指定派生层来源 | LAYER M1 16、LAYER VIA 17、LAYER M2 18 |
| 派生层 (Derived Layer) | 通过布尔运算、几何运算从原始层生成中间层,用于规则检查 | AND M1 VIA、SIZE M1 BY 0.1、NOT M1 M2 |
| 规则语句 (Rule Statement) | 定义具体的几何约束条件,并输出检查结果 | WIDTH M1 >= 0.18、SPACE M1 M2 >= 0.2 |
实战提示:在大型项目中,DRC deck往往按功能模块拆分(如金属层规则、通孔规则、阱规则),通过
INCLUDE语句组合,便于团队协作维护。
3.2 层定义:从GDSII编号到逻辑层名
层定义是DRC deck的入口。GDSII文件使用数字编号(如16、17、18)标识物理层,而DRC deck通过LAYER语句将其映射为有意义的名称,便于后续规则编写。
// 基本层定义语法
LAYER M1 16 // 将GDSII层号16命名为M1
LAYER VIA 17 // 将GDSII层号17命名为VIA
LAYER M2 18 // 将GDSII层号18命名为M2
// 多GDSII层合并定义
LAYER METAL 16, 18 // 将层16和18合并为METAL层
// 文本层定义(用于标签识别)
LAYER TEXT_M1 16:1 // 层16的datatype 1作为文本层
常见错误:层号与datatype组合错误是DRC运行失败的常见原因。务必与版图设计团队确认GDSII的层号映射表(Layer Map),避免“层未定义”或“层数据为空”的错误。
3.3 派生层:几何运算与布尔逻辑
派生层是DRC deck的“中间变量”,通过对原始层进行几何变换生成。Calibre SVRF支持丰富的派生层操作,包括布尔运算、尺寸运算、逻辑运算等。
3.3.1 布尔运算
| 运算符 | 含义 | 示例 | 说明 |
|---|---|---|---|
AND |
逻辑与(交集) | AND M1 VIA |
M1与VIA重叠的区域 |
OR |
逻辑或(并集) | OR M1 M2 |
M1和M2的合并区域 |
NOT |
逻辑非(差集) | NOT M1 VIA |
M1中除去VIA的部分 |
XOR |
逻辑异或 | XOR M1 M2 |
M1和M2不重叠的区域 |
3.3.2 几何尺寸运算
// 尺寸放大(外扩)
M1_EXP = SIZE M1 BY 0.1 // M1向外扩大0.1μm
// 尺寸缩小(内缩)
M1_SHR = SIZE M1 BY -0.05 // M1向内缩小0.05μm
// 非对称尺寸变化
M1_ASYM = SIZE M1 BY 0.1 0.2 // X方向扩大0.1μm,Y方向扩大0.2μm
// 斜角处理
M1_CHAMFER = CHAMFER M1 BY 0.05 // 对M1的直角进行45°切角
3.4 规则语句:检查约束与结果输出
规则语句是DRC deck的“判决器”,定义几何约束条件并生成检查结果。Calibre SVRF规则语句遵循“检查类型 + 层名 + 约束条件”的语法结构。
3.4.1 常用规则语句类型
| 规则类型 | 语法示例 | 检查内容 |
|---|---|---|
| 宽度检查 | WIDTH M1 >= 0.18 |
M1层所有图形的宽度必须≥0.18μm |
| 间距检查 | SPACE M1 M2 >= 0.2 |
M1与M2图形之间的间距必须≥0.2μm |
| 面积检查 | AREA M1 >= 0.05 |
M1层每个独立图形的面积必须≥0.05μm² |
| 包围检查 | ENC VIA M1 >= 0.05 |
M1对VIA的包围宽度必须≥0.05μm |
| 密度检查 | DENSITY M1 >= 0.3 |
M1层在窗口内的密度必须≥30% |
3.4.2 规则语句的完整结构
// 规则语句完整语法模板
[RULE_NAME] {
@ 规则描述注释(可选)
CHECK_TYPE layer_name [layer_name2] operator value
[OUTPUT layer_name [RESULT]] // 结果输出控制
}
// 实际示例:M1最小宽度检查
M1_MIN_WIDTH {
@ 检查M1层最小宽度,标准为0.18μm
WIDTH M1 >= 0.18
OUTPUT M1_WIDTH_ERR RESULT // 将违规图形输出到错误层
}
// 多条件组合规则
M1_M2_SPACE {
@ 检查M1与M2间距,标准为0.2μm
SPACE M1 M2 >= 0.2
OUTPUT M1_M2_SPACE_ERR RESULT
}
调试技巧:在规则语句前添加
@注释,记录规则来源、设计标准版本和修改历史。使用OUTPUT ... RESULT将违规图形输出到指定层,便于在版图编辑器中高亮定位。
3.5 Calibre SVRF语法基础速查
SVRF语法是Calibre工具的原生规则描述语言,掌握其基础语法是编写和调试DRC deck的前提。以下列出最常用的语法元素:
3.5.1 注释与语句分隔
// 单行注释(推荐使用)
# 单行注释(兼容格式)
/* 多行注释
可以跨越多行 */
// 语句分隔符:分号或换行
LAYER M1 16; LAYER M2 18 // 分号分隔
LAYER VIA 17 // 换行分隔
3.5.2 变量与表达式
// 变量定义
MIN_WIDTH = 0.18
MIN_SPACE = 0.2
// 变量引用
WIDTH M1 >= MIN_WIDTH
SPACE M1 M2 >= MIN_SPACE
// 算术表达式
M1_EXP = SIZE M1 BY MIN_WIDTH * 0.5
3.5.3 条件与分支
// IF-ELSE 条件分支
IF ( TECH_NODE == "28nm" ) {
WIDTH M1 >= 0.18
} ELSE {
WIDTH M1 >= 0.24
}
// CASE 多分支
CASE ( LAYER_STACK ) {
"TOP" : WIDTH M1 >= 0.18
"BOTTOM" : WIDTH M1 >= 0.24
DEFAULT : WIDTH M1 >= 0.20
}
3.6 DRC deck的完整示例
以下是一个针对28nm工艺的简化DRC deck示例,展示了层定义、派生层和规则语句的完整协作:
// ============================================
// 28nm 工艺 DRC Deck - 金属层规则示例
// 版本: v1.0
// ============================================
// ---------- 层定义 ----------
LAYER M1 16
LAYER VIA1 17
LAYER M2 18
LAYER CONT 19
// ---------- 派生层 ----------
// 生成M1与VIA1的交集区域
M1_VIA_AND = AND M1 VIA1
// M1向外扩大0.05μm用于包围检查
M1_EXP = SIZE M1 BY 0.05
// 生成M1与M2的合并层
M1_M2_OR = OR M1 M2
// ---------- 规则语句 ----------
// 规则1: M1最小宽度
M1_WIDTH {
@ M1最小宽度0.18μm
WIDTH M1 >= 0.18
OUTPUT M1_WIDTH_ERR RESULT
}
// 规则2: M1与M2最小间距
M1_M2_SPACE {
@ M1与M2间距0.2μm
SPACE M1 M2 >= 0.2
OUTPUT M1_M2_SPACE_ERR RESULT
}
// 规则3: VIA1被M1包围的最小宽度
VIA1_ENC_M1 {
@ VIA1被M1包围0.05μm
ENC VIA1 M1 >= 0.05
OUTPUT VIA1_ENC_ERR RESULT
}
// 规则4: M1最小面积
M1_AREA {
@ M1独立图形面积不小于0.05μm²
AREA M1 >= 0.05
OUTPUT M1_AREA_ERR RESULT
}
关键总结:DRC deck的编写遵循“先定义、后派生、再检查”的固定流程。层定义建立数据映射,派生层生成中间检查对象,规则语句完成约束验证。掌握SVRF语法中的层操作、布尔运算和规则语句结构,是进行DRC自动化验证和错误分析的基础。