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
DRC 在 IC 设计流程中的位置 RTL 设计 逻辑综合 布局布线 寄生提取 DRC / LVS DRC 违例反馈修正 签核 Tape-out 关键说明: DRC 是 Tape-out 前最后一道物理验证关卡,任何未修复的违例都可能导致芯片流片失败。DRC 脚本的自动化程度直接影响验证周期与签核效率。

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 脚本通常包含以下五个核心模块:

  1. 层定义与派生层运算 — 从原始版图层通过逻辑运算(AND/OR/NOT)或几何运算(SIZE/GROW/SHRINK)生成中间层。
  2. 规则检查语句 — 定义具体的几何约束条件(宽度、间距、包围、密度等)。
  3. 违例标记与输出 — 将检查结果映射到输出层或数据库。
  4. 控制语句与条件分支 — 根据工艺选项或用户参数启用/禁用特定规则。
  5. 报告生成配置 — 指定违例摘要、统计信息、图形化输出格式。
DRC 脚本核心构成模块 层定义与 派生层运算 规则检查 语句 违例标记 与输出 控制语句 与条件分支 报告生成 配置 模块间数据流: 1. 层定义模块从 GDS/OASIS 读取原始层,生成派生层。 2. 规则检查模块引用派生层进行几何约束比对。 3. 违例结果经控制语句筛选后,由报告模块输出为文本摘要与图形标记。

1.6 本章小结