2. DRC 工具与运行环境:主流 DRC 工具介绍、运行文件结构与基本流程
DRC(Design Rule Check)是版图验证的核心环节,其工具链与运行环境直接影响调试效率。本章将系统介绍业界三大主流 DRC 工具(Calibre、ICV、Assura)的定位与差异,解析 DRC 运行文件(.drc / .svrf)的语法骨架,并梳理从启动到生成报告的标准化流程。
2.1 主流 DRC 工具对比
不同 EDA 厂商的 DRC 引擎在规则语言、运行效率、集成方式上各有侧重。下表从关键维度进行横向对比:
| 工具名称 | 开发商 | 规则语言 | 核心优势 | 典型应用场景 |
|---|---|---|---|---|
| Calibre | Siemens EDA | SVRF / Tcl | 业界标准,规则库最全;支持层次化并行加速;调试工具 RVE 强大 | 先进工艺(7nm 及以下)、大规模数字/混合信号芯片 |
| ICV | Synopsys | ICV Rule | 与 Synopsys 数字流程深度集成;物理验证与 DFM 一体化 | 数字后端、先进 FinFET 工艺、光刻热点检测 |
| Assura | Cadence | Assura Rule | 与 Virtuoso 环境无缝衔接;交互式调试直观 | 模拟/定制版图、中小规模模块验证 |
选型建议: 多数代工厂(如 TSMC、Samsung)以 Calibre 规则集作为官方签核标准。若团队同时使用 Cadence 设计环境,建议保留 Assura 做快速迭代,最终以 Calibre 做 sign-off 验证。
2.2 DRC 运行文件结构(.drc / .svrf)
DRC 规则文件是工具执行的“法律条文”。以 Calibre 的 SVRF 语法为例,一个典型的 .drc 文件包含以下逻辑区块:
// ============================================
// 1. 文件头:版本、工艺、单位声明
// ============================================
DRC VERSION 2023.3
LAYOUT SYSTEM GDSII
PRECISION 1000
DRC UNIT 1e-9
// ============================================
// 2. 层定义:将 GDS 层号映射为逻辑层名
// ============================================
LAYER M1 1001
LAYER M2 1002
LAYER VIA1 2001
// ============================================
// 3. 规则定义:几何约束 + 派生层运算
// ============================================
// 最小宽度检查
@ Minimum Metal 1 Width = 0.1um
WIDTH M1 < 0.1 // 若宽度小于 0.1um 则报错
// 最小间距检查
@ Minimum Metal 1 to Metal 1 Space = 0.12um
EXT M1 < 0.12 // 若间距小于 0.12um 则报错
// 派生层:定义过孔包覆层
V1_ENCL = VIA1 ENCLOSURE M1 0.05
// ============================================
// 4. 输出控制:结果数据库与报告格式
// ============================================
DRC RESULTS DATABASE "mydrc.db" ASCII
DRC SUMMARY REPORT "mydrc.sum"
关键字段说明:
LAYER:将 GDS 数值层号绑定到可读名称,是规则可维护性的基础。WIDTH/EXT/ENC:SVRF 核心几何算子,分别对应宽度、间距、包覆检查。@:注释行,通常用于描述规则编号或工艺约束来源。DRC RESULTS DATABASE:指定输出数据库格式(ASCII 或二进制),供 RVE 等调试工具加载。
2.3 启动与运行 DRC 的基本流程
从版图文件到 DRC 报告,通常经历以下五个步骤。下图展示了标准执行流水线:
命令行启动示例(以 Calibre 为例):
# 单机运行
calibre -drc -hier -turbo 4 myrules.drc -layout top.gds
# 参数说明:
# -drc :指定运行 DRC 模式
# -hier :启用层次化处理(加速大规模版图)
# -turbo 4 :使用 4 个并行线程
# myrules.drc :规则文件路径
# -layout :指定输入版图文件
常见启动错误:
- 层号未定义:GDS 中使用的层号在规则文件中未通过
LAYER声明,工具会直接跳过该层检查。 - 精度不匹配:规则文件中的
DRC UNIT与版图数据库单位不一致,导致检查结果偏移。 - 内存不足:未使用
-hier或-turbo参数,导致扁平化处理时内存溢出。
2.4 运行环境配置要点
在实际工程中,DRC 运行环境通常需要以下配置项:
- License 环境变量:设置
LM_LICENSE_FILE或SNPSLMD_LICENSE_FILE指向 license 服务器。 - 工艺文件路径:代工厂提供的
.drc文件通常包含INCLUDE语句引用其他规则片段,需确保相对路径或路径正确。 - 临时目录:DRC 运行会产生大量中间文件,建议设置
DRC_TMP_DIR指向高速 SSD 分区。 - 并行度控制:根据服务器 CPU 核心数设置
-turbo或DRC_THREADS,避免过度抢占资源。
下表总结了三种工具的环境变量与启动命令差异:
| 工具 | 关键环境变量 | 典型启动命令 | 结果查看工具 |
|---|---|---|---|
| Calibre | MGC_HOME, CALIBRE_HOME |
calibre -drc ... |
RVE |
| ICV | ICV_HOME, SNPSLMD_LICENSE_FILE |
icv -D ... |
ICV Workbench |
| Assura | CDS_INST_DIR, ASSURA_HOME |
assura -drc ... |
Assura Diva / ViVA |
调试效率提示: 在首次运行 DRC 时,建议先使用
-turbo 1 单线程模式验证规则文件语法正确性,确认无误后再开启多线程加速。这可以避免因规则语法错误导致的大规模重跑。