2. DRC规则文件基础:规则文件的结构、语法基础与关键关键字解析
DRC规则文件是物理验证引擎的“法律条文”,它定义了芯片布局中哪些几何图案组合是允许的、哪些是违例的。主流EDA工具(Calibre、ICV、PVS)分别采用SVRF(Standard Verification Rule Format)和TCL(Tool Command Language)两种规则描述语言。本章从文件结构、语法要素和核心关键字三个层面,帮助学员建立阅读和编写DRC规则文件的能力。
学习目标: 掌握SVRF/TCL规则文件的层级结构;理解层定义、规则语句、派生层运算的基本语法;能够独立解读一条完整的DRC规则(如最小间距、最小宽度)。
2.1 规则文件的整体结构
无论是SVRF还是TCL格式,一个完整的DRC规则文件通常由以下五个逻辑段组成:
| 逻辑段 | 功能描述 | 典型内容 |
|---|---|---|
| 头部声明 | 定义工艺名称、版本、单位、精度 | PRECISION 1000、UNITS MICRONS |
| 层定义 | 将GDSII层号/数据型映射为规则内部名称 | LAYER M1 31、LAYER VIA 32 |
| 派生层运算 | 通过布尔/几何运算生成中间层 | AND、OR、SIZE、NOT |
| 规则检查 | 核心DRC语句,定义违例条件 | WIDTH、SPACE、ENC、AREA |
| 输出控制 | 指定违例标记层、报告格式 | RESULT、SUMMARY、CHECK_MAP |
工程经验: 实际项目中,规则文件往往按功能模块拆分(如
basic_drc.rul、metal_drc.rul、via_drc.rul),通过INCLUDE语句组合。这种模块化结构便于维护和复用。
2.2 SVRF语法基础与关键字
SVRF是Mentor Graphics(现Siemens EDA)Calibre工具的原生规则语言,采用自由格式、大小写不敏感、以分号结束语句。其核心语法要素包括:
2.2.1 层定义与派生层
// 层定义:将GDSII层号映射为内部名称
LAYER M1 31 ;
LAYER M2 32 ;
LAYER VIA1 33 ;
// 派生层:通过布尔运算生成中间层
M1_EXTERIOR = M1 AND NOT M2 ;
M1_EXTENSION = SIZE M1 BY 0.1 ;
CONTACT_AREA = M1 AND VIA1 ;
2.2.2 核心DRC检查关键字
| 关键字 | 功能 | 语法示例 |
|---|---|---|
WIDTH |
检查最小线宽 | WIDTH M1 < 0.18 |
SPACE |
检查最小间距(同层) | SPACE M1 < 0.20 |
ENC |
检查包围/覆盖(如通孔包边) | ENC VIA1 M1 < 0.10 |
AREA |
检查最小面积 | AREA M1 < 0.05 |
DENSITY |
检查金属密度 | DENSITY M1 > 0.30 |
EXT |
检查延伸/外扩 | EXT M1 M2 < 0.15 |
2.2.3 规则语句的完整结构
一条完整的DRC规则通常包含:检查对象 + 条件表达式 + 违例标记。
// 完整规则示例:检查M1最小间距0.20um
M1_SPACE_CHECK {
@ M1最小间距检查,规则ID: M1.S.1
SPACE M1 < 0.20
{
RESULT M1_SPACE_MARKER
SUMMARY "M1 spacing violation: found %g, min required 0.20"
}
}
常见陷阱: SVRF中
SPACE默认检查同层间距;若需检查不同层之间的间距,必须使用SPACE M1 M2双参数形式。初学者容易忽略这一点导致规则漏检。
2.3 TCL格式规则文件基础
Synopsys ICV和Cadence PVS采用TCL语法扩展作为规则描述语言。TCL格式更接近编程语言,支持变量、循环、条件判断,适合复杂规则建模。
2.3.1 层定义与派生层(TCL风格)
# 层定义
set_layer M1 -layer_number 31
set_layer M2 -layer_number 32
set_layer VIA1 -layer_number 33
# 派生层运算
set_layer M1_EXTERIOR -and M1 -not M2
set_layer M1_EXTENSION -size M1 0.1
set_layer CONTACT_AREA -and M1 VIA1
2.3.2 核心DRC检查关键字(TCL风格)
| TCL命令 | 功能 | 语法示例 |
|---|---|---|
check_width |
最小线宽检查 | check_width M1 -min 0.18 |
check_spacing |
最小间距检查 | check_spacing M1 -min 0.20 |
check_enclosure |
包围检查 | check_enclosure VIA1 M1 -min 0.10 |
check_area |
最小面积检查 | check_area M1 -min 0.05 |
check_density |
密度检查 | check_density M1 -min 0.30 |
2.3.3 变量与参数化规则
TCL格式支持通过变量统一管理规则值,便于工艺节点迁移:
# 定义工艺参数
set M1_MIN_WIDTH 0.18
set M1_MIN_SPACE 0.20
set VIA1_MIN_ENC 0.10
# 使用参数化规则
check_width M1 -min $M1_MIN_WIDTH
check_spacing M1 -min $M1_MIN_SPACE
check_enclosure VIA1 M1 -min $VIA1_MIN_ENC
最佳实践: 在先进工艺(7nm及以下)项目中,建议将TCL变量统一放在独立的
tech_params.tcl文件中,通过source命令引入。这样当工艺规则更新时,只需修改参数文件,无需改动规则逻辑。
2.4 SVRF与TCL格式对比
| 对比维度 | SVRF(Calibre) | TCL(ICV/PVS) |
|---|---|---|
| 语法风格 | 声明式,接近自然语言 | 编程式,支持变量/循环/条件 |
| 层运算 | AND、OR、SIZE等关键字 |
-and、-or、-size等参数 |
| 参数管理 | 不支持变量,需全局替换 | 支持TCL变量,易于参数化 |
| 规则复用 | 通过INCLUDE文件 |
通过source或proc过程 |
| 调试难度 | 较低,规则直观 | 中等,需理解TCL执行流 |
| 主流应用 | 成熟工艺、模拟/混合信号 | 先进工艺、数字大规模设计 |
2.5 关键关键字深度解析
无论使用SVRF还是TCL,以下关键字是DRC规则文件中最常用、也最容易出错的。我们以SVRF为例进行深度解析:
2.5.1 WIDTH — 最小线宽检查
WIDTH检查多边形任意内切圆直径是否满足最小值。违例通常发生在金属拐角、线端、窄颈处。
// 检查M1最小线宽0.18um,违例标记到M1_WIDTH_MARKER层
WIDTH M1 < 0.18
{
RESULT M1_WIDTH_MARKER
SUMMARY "M1 width %g um < 0.18 um"
}
注意:
WIDTH检查的是多边形内部的宽度,不是边缘到边缘的间距。对于带切角(45°)的金属线,WIDTH会自动计算最短内切距离,无需额外处理。
2.5.2 SPACE — 最小间距检查
SPACE检查同一层或不同层之间两个多边形边缘的最小距离。SVRF支持边缘对边缘(edge-to-edge)和区域对区域(region-to-region)两种模式。
// 同层间距检查:M1间距必须 ≥ 0.20um
SPACE M1 < 0.20
{
RESULT M1_SPACE_MARKER
}
// 异层间距检查:M1与M2间距必须 ≥ 0.30um
SPACE M1 M2 < 0.30
{
RESULT M1_M2_SPACE_MARKER
}
2.5.3 ENC — 包围/覆盖检查
ENC(Enclosure)检查一个层对另一个层的包围程度,常用于通孔(VIA)被金属包围的检查。语法为 ENC 被包围层 包围层。
// 检查VIA1被M1包围的最小值0.10um
ENC VIA1 M1 < 0.10
{
RESULT VIA1_ENC_MARKER
SUMMARY "VIA1 enclosure by M1 %g um < 0.10 um"
}
2.5.4 AREA — 最小面积检查
AREA检查多边形面积是否满足最小值,防止浮空小岛或过小通孔导致工艺失效。
// 检查M1最小面积0.05 um²
AREA M1 < 0.05
{
RESULT M1_AREA_MARKER
}
2.6 规则文件编写避坑指南
- 单位一致性: 规则文件头部必须明确声明
PRECISION和UNITS,否则不同工具解析时可能产生1000倍误差。 - 层名冲突: 避免使用工具保留字(如
AND、OR、NOT)作为自定义层名。 - 派生层顺序: 派生层必须在被引用之前定义,SVRF/TCL均按顺序解析。
- 规则ID唯一性: 每个规则块应分配唯一ID(如
M1.S.1),便于调试和追溯。 - 注释完整性: 每条规则应附带注释说明工艺来源、版本、适用区域。
进阶提示: 在先进工艺中,DRC规则往往包含条件规则(conditional rules),例如“当M1宽度大于5um时,间距要求从0.20um放宽到0.15um”。SVRF通过
IF/ELSE结构实现,TCL则通过if语句配合变量实现。这部分内容将在第5章“复杂规则编写”中详细展开。
2.7 本章小结
- DRC规则文件由头部声明、层定义、派生层运算、规则检查、输出控制五个逻辑段组成。
- SVRF格式(Calibre)采用声明式语法,适合成熟工艺;TCL格式(ICV/PVS)支持变量和参数化,适合先进工艺。
- 核心关键字
WIDTH、SPACE、ENC、AREA覆盖了90%以上的物理验证检查需求。 - 编写规则文件时需注意单位一致性、层名冲突、派生层顺序、规则ID唯一性四大要点。