1. DRC 脚本基础回顾
1.1 DRC 概念与设计流程定位
设计规则检查(Design Rule Check, DRC)是 IC 物理验证的核心环节,用于确保版图(Layout)几何图形满足晶圆厂(Foundry)制定的工艺约束。DRC 检查的对象包括最小线宽、最小间距、最小包围、天线效应等物理参数,其本质是将版图几何数据与工艺规则进行逐条比对。
在标准数字 IC 设计流程中,DRC 处于后端物理验证阶段,紧接在布局布线(P&R)与寄生参数提取之后,是 Tape-out 前的最后一道质量关卡。
流程定位: RTL → 综合 → 布局布线 → 寄生提取 → DRC / LVS → 签核(Sign-off)→ Tape-out
1.2 常见 DRC 工具与脚本语法回顾
业界主流 DRC 工具包括 Siemens Calibre 与 Synopsys ICV(IC Validator)。两者均支持规则文件(Rule Deck)驱动的批处理验证,但脚本语法与执行模型存在显著差异。
| 对比维度 | Calibre (SVRF) | ICV (TCL-based) |
|---|---|---|
| 脚本语言 | SVRF(Standard Verification Rule Format) | TCL 扩展 + ICV 内置命令 |
| 规则定义 | RULE / DRC 关键字 |
check_rule / drc_rule 过程 |
| 层运算 | AND / OR / NOT / GROW / SHRINK |
geo_and / geo_or / geo_not / geo_size |
| 检查语句 | DRC CHECK / DRC MAP |
drc_check / drc_map |
| 结果输出 | ASCII / GDSII / SVRF 数据库 | ASCII / GDSII / ICV 数据库 |
| 并行能力 | 多线程 + 分布式(DRC+) | 多线程 + 分布式(MP) |
1.3 Calibre SVRF 脚本语法示例
以下是一个典型的 Calibre DRC 规则片段,用于检查金属层 M1 的最小线宽与最小间距:
// Calibre SVRF DRC 规则示例
// 定义层运算
M1 = LAYER M1
M1_wide = SIZE M1 BY 0.1 // 扩展 0.1μm
// 最小线宽检查:M1 宽度 < 0.18μm
DRC CHECK M1 WIDTH < 0.18
{
@ M1 Minimum Width Violation
M1_width_viol = M1 WIDTH < 0.18
}
// 最小间距检查:M1 间距 < 0.20μm
DRC CHECK M1 SPACE < 0.20
{
@ M1 Minimum Space Violation
M1_space_viol = M1 SPACE < 0.20
}
// 输出违例标记
DRC MAP M1_width_viol GDS 101 0
DRC MAP M1_space_viol GDS 102 0
语法要点: Calibre 使用
DRC CHECK 定义检查规则,@ 后跟注释描述,DRC MAP 将违例结果映射到 GDS 层号以便在版图工具中高亮定位。
1.4 ICV TCL 脚本语法示例
ICV 使用 TCL 作为宿主语言,规则定义更接近过程式编程风格:
# ICV TCL DRC 规则示例
# 定义层运算
set M1 [layout layer M1]
set M1_wide [geo size $M1 0.1]
# 最小线宽检查:M1 宽度 < 0.18μm
drc_rule "M1_MIN_WIDTH" -check {
set viol [drc_check width $M1 -min 0.18]
return $viol
} -description "M1 Minimum Width Violation"
# 最小间距检查:M1 间距 < 0.20μm
drc_rule "M1_MIN_SPACE" -check {
set viol [drc_check space $M1 -min 0.20]
return $viol
} -description "M1 Minimum Space Violation"
# 输出违例标记
drc_map "M1_MIN_WIDTH" -layer 101
drc_map "M1_MIN_SPACE" -layer 102
常见陷阱: ICV 的
drc_check 命令参数顺序与 Calibre 不同,且层运算命令(如 geo_size)默认不修改原始层,需显式赋值。跨工具迁移规则时务必逐条验证运算语义。
1.5 DRC 脚本的核心构成要素
无论使用哪种工具,DRC 脚本通常包含以下五个核心模块:
- 层定义与派生层运算 — 从原始版图层通过逻辑运算(AND/OR/NOT)或几何运算(SIZE/GROW/SHRINK)生成中间层。
- 规则检查语句 — 定义具体的几何约束条件(宽度、间距、包围、密度等)。
- 违例标记与输出 — 将检查结果映射到输出层或数据库。
- 控制语句与条件分支 — 根据工艺选项或用户参数启用/禁用特定规则。
- 报告生成配置 — 指定违例摘要、统计信息、图形化输出格式。