2. DRC规则文件解析:常见DRC规则文件格式(如SVRF、TCL),规则语句的基本结构与含义

DRC(Design Rule Check)规则文件是物理验证的“法律条文”,它定义了芯片制造过程中各层图形之间必须满足的几何约束。理解规则文件的格式与语句结构,是准确解读DRC违例报告、高效定位修复方向的前提。本章将深入解析业界最主流的两种规则文件格式——SVRF(Standard Verification Rule Format)与TCL(Tool Command Language)——并拆解其核心语句的构成要素。

2.1 规则文件格式概览

不同EDA厂商的物理验证工具采用不同的规则描述语言。下表对比了两种主流格式的核心差异:

对比维度 SVRF(Calibre) TCL(ICV / PVS)
主导工具 Mentor Calibre Synopsys ICV / Cadence PVS
语法风格 声明式、关键字驱动 过程式、脚本化
变量定义 使用 INTEGER / STRING 关键字 使用 set 命令
层运算 通过 AND / OR / NOT 等操作符 通过 geoAnd / geoOr / geoNot 等函数
检查语句 WIDTH / SPACE / AREA 等内置检查 DRC CHECK + 几何函数
可读性 接近自然语言,适合规则编写 灵活性强,适合复杂条件控制
行业现状:目前全球约70%以上的先进工艺节点(7nm及以下)仍以SVRF格式作为主规则交付格式,但TCL格式在先进制程的复杂条件规则(如多重图形、OPC辅助规则)中应用日益广泛。

2.2 SVRF规则文件结构解析

SVRF文件采用“层定义 → 层运算 → 规则检查 → 结果输出”的线性结构。一个典型的SVRF规则文件包含以下核心段落:

  1. 头部声明:定义单位、精度、版本信息。
  2. 层定义:将设计中的GDS层号映射为逻辑层名称。
  3. 派生层运算:通过布尔运算或几何运算生成中间层。
  4. 规则检查:调用内置检查函数,设定约束值。
  5. 结果输出:指定违例报告格式与数据库输出。

2.2.1 层定义语句

// 层定义:将GDS层号映射为逻辑名称
LAYER M1 10          // 金属1层,GDS层号10
LAYER V1 11          // 通孔1层,GDS层号11
LAYER M2 20          // 金属2层,GDS层号20
LAYER DIFF 5         // 有源区层,GDS层号5
LAYER POLY 6         // 多晶硅层,GDS层号6

2.2.2 派生层运算语句

// 布尔运算生成中间层
GATE = POLY AND DIFF          // 栅极层 = 多晶硅与有源区的交集
CONTACT_AREA = V1 AND M1      // 接触区域 = 通孔与金属1的交集
ACTIVE_NOT_GATE = DIFF NOT GATE  // 有源区非栅极部分

2.2.3 规则检查语句

// 最小宽度检查
WIDTH M1 0.10          // M1最小宽度0.10μm

// 最小间距检查
SPACE M1 0.12          // M1最小间距0.12μm

// 最小面积检查
AREA M1 0.05           // M1最小面积0.05μm²

// 包围检查(通孔被金属包围的最小余量)
ENC V1 M1 0.04 BOTH    // V1被M1包围的最小余量0.04μm(四周)
关键概念:SVRF中的检查语句通常包含三个要素:检查对象(层名)、约束值(数值+单位)、修饰符(如BOTH表示四周、SINGULAR表示单一方向)。理解修饰符的含义是准确解读DRC违例类型的关键。

2.3 TCL规则文件结构解析

TCL格式的规则文件将DRC规则封装为可执行的脚本过程。其核心结构包括:变量定义、层对象创建、几何运算函数调用、检查命令执行。

2.3.1 变量与层定义

# 设置工艺参数变量
set MIN_WIDTH_M1 0.10
set MIN_SPACE_M1 0.12
set MIN_AREA_M1 0.05

# 创建层对象
set layerM1 [dbCreateLayer "M1" 10]
set layerV1 [dbCreateLayer "V1" 11]
set layerM2 [dbCreateLayer "M2" 20]

2.3.2 几何运算与检查

# 派生层运算
set layerGate [geoAnd $layerPoly $layerDiff]

# 最小宽度检查
DRC CHECK "M1_MIN_WIDTH" {
    geoWidth $layerM1 < $MIN_WIDTH_M1
}

# 最小间距检查
DRC CHECK "M1_MIN_SPACE" {
    geoSeparation $layerM1 < $MIN_SPACE_M1
}

# 最小面积检查
DRC CHECK "M1_MIN_AREA" {
    geoArea $layerM1 < $MIN_AREA_M1
}
注意:TCL格式中,检查条件使用“<”表示“小于约束值即违例”,这与SVRF中直接给出约束值的语义不同。在解读TCL格式的DRC报告时,需要明确违例条件是“小于”还是“大于”约束值。

2.4 规则语句的基本结构模型

无论是SVRF还是TCL,一条完整的DRC规则语句都可以抽象为以下四要素模型:

DRC规则语句四要素模型 ① 检查对象 (层名 / 派生层) ② 检查类型 (WIDTH/SPACE/AREA) ③ 约束值 (数值 + 单位) ④ 修饰符 (BOTH/SINGULAR) 示例:SVRF语句 → WIDTH M1 0.10 对象=M1 | 类型=WIDTH | 约束=0.10μm | 修饰符=默认(无)

2.5 常见规则类型与语句对照

下表汇总了物理验证中最常用的10种DRC规则类型及其在SVRF和TCL中的典型语句写法:

规则类型 描述 SVRF语句示例 TCL语句示例
WIDTH 最小线宽 WIDTH M1 0.10 geoWidth $layerM1 < 0.10
SPACE 最小间距 SPACE M1 0.12 geoSeparation $layerM1 < 0.12
AREA 最小面积 AREA M1 0.05 geoArea $layerM1 < 0.05
ENC 包围余量 ENC V1 M1 0.04 BOTH geoEnclosure $layerV1 $layerM1 < 0.04
DENSITY 密度范围 DENSITY M1 0.20 0.80 geoDensity $layerM1 < 0.20 || > 0.80
STEP 台阶高度 STEP M1 0.15 geoStepHeight $layerM1 < 0.15
EXT 延伸长度 EXT POLY DIFF 0.10 geoExtension $layerPoly $layerDiff < 0.10
NOTCH 凹槽宽度 NOTCH M1 0.08 geoNotch $layerM1 < 0.08
LENGTH 最小长度 LENGTH POLY 0.18 geoLength $layerPoly < 0.18
CURL 拐角间距 CURL M1 0.15 geoCornerSpace $layerM1 < 0.15

2.6 规则文件中的注释与调试

良好的注释习惯能大幅提升规则文件的可维护性。两种格式均支持注释:

// SVRF注释:使用双斜杠
/* SVRF多行注释:使用斜杠星号 */

# TCL注释:使用井号
调试技巧:在SVRF文件中,可以使用 TRACE 语句输出中间层的几何数据,帮助验证派生层运算是否正确。例如:TRACE GATE 会将栅极层的所有图形输出到调试文件。

2.7 规则文件版本管理与兼容性

在实际项目中,规则文件会随工艺节点演进不断更新。以下是一个典型的规则文件版本头示例:

// SVRF版本头示例
// File: drc_rule_7nm_v2p3.svrf
// Technology: 7nm FinFET
// Revision: 2.3
// Date: 2024-06-15
// Author: PDK Team
// Description: 7nm BEOL DRC rules for M1-M10

PRECISION 1000        // 精度:1单位 = 0.001μm
UNITS MICRONS         // 单位:微米

LAYER M1 10
LAYER V1 11
// ... 后续规则定义
版本兼容性风险:不同版本的Calibre工具对SVRF语法的支持存在差异。例如,Calibre 2020之前的版本不支持 DENSITY 语句中的 WINDOW 修饰符。在跨版本迁移规则文件时,务必查阅工具版本兼容性矩阵。

2.8 从规则语句到DRC违例的映射

理解规则语句的结构,最终是为了能够从DRC违例报告中反向定位到具体的规则定义。下图展示了这一映射关系:

从规则语句到DRC违例报告的映射流程 规则文件 WIDTH M1 0.10 SPACE M1 0.12 规则解析引擎 语法检查 语义展开 版图数据 GDS / OASIS 层几何信息 DRC检查执行 几何运算 违例判定 违例报告 坐标 / 层 / 类型 违例值 vs 约束值

通过上述映射关系,当你在DRC报告中看到“M1_MIN_WIDTH”违例时,可以快速回溯到规则文件中对应的 WIDTH M1 0.10 语句,明确检查对象是M1层、检查类型是最小线宽、约束值是0.10μm,从而准确判断版图修改方向。