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执行流
主流应用 成熟工艺、模拟/混合信号 先进工艺、数字大规模设计
DRC规则文件结构层次图 DRC规则文件 (.rul / .tcl) SVRF 格式 (Calibre) TCL 格式 (ICV/PVS) LAYER / DERIVED 层定义 WIDTH / SPACE / ENC 检查 RESULT / SUMMARY 输出 set_layer 层定义 check_width / check_spacing 变量 / proc 参数化 两种格式均可通过 INCLUDE / source 实现模块化组合

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章“复杂规则编写”中详细展开。
DRC规则执行流程:从规则文件到违例标记 DRC规则文件 规则解析器 (Parser) 内部规则树 (IR) 几何运算引擎 (Booleans/Sizing) DRC检查引擎 (Width/Space/Enc) 违例标记层 + 报告

2.7 本章小结

  • DRC规则文件由头部声明、层定义、派生层运算、规则检查、输出控制五个逻辑段组成。
  • SVRF格式(Calibre)采用声明式语法,适合成熟工艺;TCL格式(ICV/PVS)支持变量和参数化,适合先进工艺。
  • 核心关键字WIDTH、SPACE、ENC、AREA覆盖了90%以上的物理验证检查需求。
  • 编写规则文件时需注意单位一致性、层名冲突、派生层顺序、规则ID唯一性四大要点。