3. DRC运行环境搭建:主流DRC工具(Calibre、ICV、Assura)的配置与运行流程
DRC(Design Rule Check)工具的部署与配置是物理验证流程的起点。不同EDA厂商的工具在规则文件语法、运行脚本、并行加速机制上存在显著差异。本章聚焦Calibre、ICV、Assura三大主流工具,从环境变量配置、规则文件加载到命令行执行,梳理标准化的搭建流程。
3.1 工具环境变量与License配置
所有DRC工具均依赖License服务和工具根目录的环境变量。下表列出三大工具的核心环境变量配置项:
| 工具 | 环境变量 | 典型值示例 | 说明 |
|---|---|---|---|
| Calibre | CALIBRE_HOME | /tools/mentor/calibre/2023.3 | 工具安装根目录 |
| MGLS_LICENSE_FILE | 27010@lic_server | License端口与服务器 | |
| CALIBRE_2013_ONLY | TRUE | 兼容旧版规则语法 | |
| ICV | ICV_HOME_DIR | /tools/synopsys/icv/2022.12 | ICV安装根目录 |
| SNPSLMD_LICENSE_FILE | 27000@lic_server | Synopsys通用License | |
| ICV_WORK_DIR | /proj/block/icv_run | 运行工作目录 | |
| Assura | ASSURA_HOME | /tools/cadence/assura/6.2 | Assura安装根目录 |
| CDS_LIC_FILE | 5280@lic_server | Cadence License | |
| ASSURA_64BIT | TRUE | 启用64位模式 |
配置检查命令:在终端执行
echo $CALIBRE_HOME 确认变量是否生效。若返回空值,需检查 .bashrc 或 .cshrc 中的export/setenv语句。
3.2 规则文件(Rule Deck)的加载机制
DRC规则文件通常由Foundry提供,包含设计规则、密度规则、天线规则等。不同工具的规则文件格式与加载方式不同:
- Calibre:使用
.svrf(Standard Verification Rule Format)文件,通过INCLUDE语句分层引用。顶层规则文件通常命名为calibre.drc。 - ICV:使用
.tcl格式的规则文件,基于Tcl语法,通过source命令加载子规则。典型入口文件为icv_drc.rules。 - Assura:使用
.assura或.drc文件,采用Cadence专有的规则描述语言,通过include指令引用。
规则文件路径设置示例(Calibre):
# 在运行脚本中指定规则文件路径
setenv RULES_DIR /foundry/tech/tsmc_n7/Calibre
setenv RULE_FILE ${RULES_DIR}/calibre.drc
# 规则文件内部引用示例(calibre.drc)
INCLUDE ${RULES_DIR}/metal_drc.svrf
INCLUDE ${RULES_DIR}/via_drc.svrf
INCLUDE ${RULES_DIR}/antenna.svrf
3.3 运行流程与命令行参数
三大工具均支持图形界面和命令行批处理两种运行模式。在服务器集群或自动化流程中,命令行模式是首选。以下为各工具的标准运行流程:
3.3.1 Calibre DRC运行流程
- 准备GDS/OASIS版图文件:确保版图数据完整,无缺失层次。
- 编写运行脚本:使用
calibre -drc命令,指定规则文件和版图文件。 - 执行DRC:生成
.drc.results数据库和.drc.summary报告。 - 查看结果:通过
calibre -gui -drc加载结果数据库进行调试。
Calibre DRC命令行示例:
calibre -drc \
-hier \
-turbo 8 \
-hyper \
-rule ${RULE_FILE} \
-layout ${LAYOUT_PATH}/block.gds \
-o ${RUN_DIR}/drc_results \
| tee ${RUN_DIR}/drc_run.log
参数说明:-hier 启用层次化检查;-turbo 8 使用8线程并行;-hyper 启用HyperScale加速。
3.3.2 ICV DRC运行流程
- 设置ICV工作目录:创建
icv_run目录,包含规则文件和版图。 - 编写运行脚本:使用
icv -drc命令,通过-rule和-layout参数指定输入。 - 执行DRC:生成
.icv_drc.db数据库和.icv_drc.log日志。 - 结果查看:使用
icv -gui -drc加载数据库。
ICV DRC命令行示例:
icv -drc \
-rule ${ICV_RULES}/icv_drc.rules \
-layout ${LAYOUT_PATH}/block.gds \
-top_cell BLOCK_TOP \
-threads 16 \
-work_dir ${RUN_DIR} \
-output ${RUN_DIR}/icv_drc_results
参数说明:-top_cell 指定顶层cell名称;-threads 设置并行线程数。
3.3.3 Assura DRC运行流程
- 启动Assura环境:在Virtuoso中调用Assura菜单,或使用命令行。
- 配置运行目录:设置
ASSURA_RUN_DIR环境变量。 - 执行DRC:使用
assura -drc命令,生成.drc.db数据库。 - 结果查看:在Virtuoso中加载Assura结果浏览器。
Assura DRC命令行示例:
assura -drc \
-rule ${ASSURA_RULES}/assura.drc \
-layout ${LAYOUT_PATH}/block.gds \
-cell BLOCK_TOP \
-log ${RUN_DIR}/assura_drc.log \
-64
参数说明:-64 启用64位模式处理大规模版图。
3.4 运行流程对比与选择建议
| 对比维度 | Calibre | ICV | Assura |
|---|---|---|---|
| 规则文件格式 | .svrf(SVRF语法) | .tcl(Tcl语法) | .assura(Cadence专有) |
| 并行加速 | -turbo + -hyper | -threads + 分布式 | 内置多线程 |
| 内存管理 | 自动分页,支持大版图 | 需手动设置 -max_memory | 依赖Virtuoso内存 |
| 结果数据库 | .drc.results(二进制) | .icv_drc.db(SQLite) | .drc.db(Cadence格式) |
| 调试工具 | Calibre RVE | ICV GUI | Assura Results Browser |
| 行业占有率 | 约65% | 约25% | 约10% |
常见配置陷阱:
- Calibre的
-hier与-flat模式结果可能不一致,建议在最终signoff时使用-hier模式。 - ICV的
-threads设置超过物理核心数会导致性能下降,建议设置为物理核心数的80%。 - Assura在64位模式下需确保系统ulimit设置足够大,否则会因内存不足而异常退出。
3.5 运行环境架构总览
下图展示了从版图输入到DRC结果输出的完整运行环境架构,涵盖三大工具的共同数据流与差异点:
3.6 运行日志关键字段解读
DRC运行过程中,日志文件是排查配置错误的第一手资料。下表列出各工具日志中的关键字段及其含义:
| 工具 | 日志字段 | 含义 | 正常值示例 |
|---|---|---|---|
| Calibre | Total CPU time | 总CPU耗时 | 1234.56s |
| Peak memory usage | 峰值内存 | 8.2 GB | |
| Rule checks passed | 通过的检查项数 | 2456 | |
| Rule checks failed | 失败的检查项数 | 0 | |
| ICV | Total violations | 总违例数 | 0 |
| Memory used | 内存使用量 | 6.5 GB | |
| Thread count | 实际线程数 | 16 | |
| Assura | DRC completed | DRC完成状态 | Success |
| Errors | 错误数 | 0 | |
| Warnings | 警告数 | 0 |
日志检查技巧:使用
grep -E "Error|Warning|Failed|Violation" drc_run.log 快速定位异常信息。若日志中出现 License checkout failed,优先检查License服务器状态和环境变量配置。
3.7 多工具协同与流程集成
在大型项目中,常需要将DRC工具集成到自动化流程中。以下为常见的集成方式:
- Makefile流程:通过Makefile定义DRC目标,调用各工具的命令行接口。
- Jenkins/GitLab CI:在CI流水线中嵌入DRC运行脚本,实现版图提交后自动触发检查。
- EDA流程框架:如Synopsys的
Design Compiler或Cadence的Innovus中直接调用DRC工具进行in-design检查。
Makefile集成示例(Calibre DRC):
# Makefile片段
DRC_RULE = /foundry/tech/tsmc_n7/Calibre/calibre.drc
LAYOUT = ./output/block.gds
DRC_OUT = ./drc_results
drc_calibre:
calibre -drc -hier -turbo 8 \
-rule $(DRC_RULE) \
-layout $(LAYOUT) \
-o $(DRC_OUT) \
| tee drc_calibre.log
@echo "Calibre DRC completed. Check drc_calibre.log for details."
clean:
rm -rf $(DRC_OUT) drc_calibre.log
通过上述配置与流程,工程师可以快速搭建稳定、可复用的DRC运行环境,为后续的违例分析与修复奠定基础。