3. DRC运行环境搭建:主流DRC工具(Calibre、ICV、Assura)的配置与运行流程

DRC(Design Rule Check)工具的部署与配置是物理验证流程的起点。不同EDA厂商的工具在规则文件语法、运行脚本、并行加速机制上存在显著差异。本章聚焦Calibre、ICV、Assura三大主流工具,从环境变量配置、规则文件加载到命令行执行,梳理标准化的搭建流程。

3.1 工具环境变量与License配置

所有DRC工具均依赖License服务和工具根目录的环境变量。下表列出三大工具的核心环境变量配置项:

工具环境变量典型值示例说明
CalibreCALIBRE_HOME/tools/mentor/calibre/2023.3工具安装根目录
MGLS_LICENSE_FILE27010@lic_serverLicense端口与服务器
CALIBRE_2013_ONLYTRUE兼容旧版规则语法
ICVICV_HOME_DIR/tools/synopsys/icv/2022.12ICV安装根目录
SNPSLMD_LICENSE_FILE27000@lic_serverSynopsys通用License
ICV_WORK_DIR/proj/block/icv_run运行工作目录
AssuraASSURA_HOME/tools/cadence/assura/6.2Assura安装根目录
CDS_LIC_FILE5280@lic_serverCadence License
ASSURA_64BITTRUE启用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运行流程

  1. 准备GDS/OASIS版图文件:确保版图数据完整,无缺失层次。
  2. 编写运行脚本:使用 calibre -drc 命令,指定规则文件和版图文件。
  3. 执行DRC:生成 .drc.results 数据库和 .drc.summary 报告。
  4. 查看结果:通过 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运行流程

  1. 设置ICV工作目录:创建 icv_run 目录,包含规则文件和版图。
  2. 编写运行脚本:使用 icv -drc 命令,通过 -rule 和 -layout 参数指定输入。
  3. 执行DRC:生成 .icv_drc.db 数据库和 .icv_drc.log 日志。
  4. 结果查看:使用 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运行流程

  1. 启动Assura环境:在Virtuoso中调用Assura菜单,或使用命令行。
  2. 配置运行目录:设置 ASSURA_RUN_DIR 环境变量。
  3. 执行DRC:使用 assura -drc 命令,生成 .drc.db 数据库。
  4. 结果查看:在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 运行流程对比与选择建议

对比维度CalibreICVAssura
规则文件格式.svrf(SVRF语法).tcl(Tcl语法).assura(Cadence专有)
并行加速-turbo + -hyper-threads + 分布式内置多线程
内存管理自动分页,支持大版图需手动设置 -max_memory依赖Virtuoso内存
结果数据库.drc.results(二进制).icv_drc.db(SQLite).drc.db(Cadence格式)
调试工具Calibre RVEICV GUIAssura Results Browser
行业占有率约65%约25%约10%
常见配置陷阱:
  • Calibre的 -hier 与 -flat 模式结果可能不一致,建议在最终signoff时使用 -hier 模式。
  • ICV的 -threads 设置超过物理核心数会导致性能下降,建议设置为物理核心数的80%。
  • Assura在64位模式下需确保系统ulimit设置足够大,否则会因内存不足而异常退出。

3.5 运行环境架构总览

下图展示了从版图输入到DRC结果输出的完整运行环境架构,涵盖三大工具的共同数据流与差异点:

DRC运行环境架构总览 GDS / OASIS 版图 Foundry Rule Deck License / 环境变量 Calibre DRC Engine -drc -hier -turbo 8 ICV DRC Engine -drc -threads 16 Assura DRC Engine -drc -64 .drc.results + .summary .icv_drc.db + .log .drc.db + .log Calibre RVE ICV GUI Assura Results Browser 说明:三大工具共享相同的版图输入与规则文件来源,但运行引擎、输出格式和调试工具各不相同。 实际项目中建议根据Foundry推荐和团队经验选择一种工具作为主流程。

3.6 运行日志关键字段解读

DRC运行过程中,日志文件是排查配置错误的第一手资料。下表列出各工具日志中的关键字段及其含义:

工具日志字段含义正常值示例
CalibreTotal CPU time总CPU耗时1234.56s
Peak memory usage峰值内存8.2 GB
Rule checks passed通过的检查项数2456
Rule checks failed失败的检查项数0
ICVTotal violations总违例数0
Memory used内存使用量6.5 GB
Thread count实际线程数16
AssuraDRC completedDRC完成状态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运行环境,为后续的违例分析与修复奠定基础。