3. DRC规则配置环境搭建:Calibre/ICV等主流工具的DRC运行环境设置与变量配置
DRC(Design Rule Check)验证环境的搭建是物理验证流程的起点。一个稳定、可复现的DRC运行环境,不仅需要正确安装EDA工具,更需要精确配置运行脚本、规则文件路径、工艺变量以及并行计算资源。本章将深入讲解以Siemens EDA Calibre和Synopsys ICV为代表的主流DRC工具的环境搭建与变量配置方法。
3.1 DRC运行环境的核心组成
一个完整的DRC运行环境由以下四个核心层次构成,任何一层的缺失或配置错误都会导致验证失败或结果不可信。
| 层次 | 组件 | 说明 |
|---|---|---|
| 工具层 | Calibre / ICV / PVS 二进制文件 | EDA工具的安装路径、版本号及License配置 |
| 规则层 | DRC Rule Deck (.rul / .svrf / .tcl) | 代工厂提供的工艺规则文件,包含几何约束定义 |
| 变量层 | 环境变量 + 规则变量 | 控制工具行为、指定数据路径、开关特定检查项 |
| 运行层 | Run Script / Makefile / Tcl 脚本 | 封装命令行调用、并行策略、结果输出路径 |
3.2 Calibre DRC环境变量配置
Calibre是业界使用最广泛的物理验证工具。其运行环境依赖一组关键的环境变量,这些变量通常在用户的 .bashrc、.cshrc 或项目级的 setup.csh 脚本中定义。
3.2.1 核心环境变量
| 环境变量 | 典型值示例 | 作用说明 |
|---|---|---|
MGC_HOME |
/tools/calibre/2024.1 |
Calibre安装根目录,工具查找二进制和库文件的起点 |
CALIBRE_HOME |
/tools/calibre/2024.1 |
与MGC_HOME等效,部分新版本使用此变量 |
MGLS_LICENSE_FILE |
port@license_server |
指向License服务器,格式为 27000@lic-srv |
CALIBRE_LAYOUT_DATABASE |
/project/design/layout.gds |
指定默认版图数据库路径,可在运行脚本中覆盖 |
CALIBRE_RULE_FILE |
/foundry/rule/drc_rule.svrf |
指定默认DRC规则文件路径 |
CALIBRE_WORKDIR |
/project/run/drc_work |
指定运行工作目录,存放临时文件和结果数据库 |
3.2.2 典型环境配置脚本示例
以下是一个针对Calibre DRC的 setup.csh 配置示例,适用于大多数基于Unix/Linux的IC设计环境:
# ============================================
# Calibre DRC 环境配置脚本 (setup.csh)
# ============================================
# Calibre 工具路径
setenv MGC_HOME /tools/calibre/2024.1
setenv CALIBRE_HOME $MGC_HOME
# License 配置
setenv MGLS_LICENSE_FILE 27000@lic-srv-01:27000@lic-srv-02
# 将 Calibre 二进制加入 PATH
setenv PATH ${MGC_HOME}/bin:${MGC_HOME}/lib:${PATH}
# 默认运行路径
setenv CALIBRE_WORKDIR /project/run/drc_work
# 共享库路径(用于分布式处理)
setenv CALIBRE_MP_LIBRARY_PATH /tools/calibre/mp_lib
# 规则文件路径(按工艺节点组织)
setenv DRC_RULE_DIR /foundry/tech/7nm/drc
setenv DRC_RULE_FILE ${DRC_RULE_DIR}/calibre_drc_7nm.svrf
# 并行处理核心数(根据集群配置调整)
setenv CALIBRE_NUM_THREADS 16
env_setup 目录,按工艺节点(如 env_setup/7nm/、env_setup/5nm/)存放独立的配置脚本,通过 source 命令按需加载,避免变量污染。
3.3 ICV (IC Validator) 环境变量配置
Synopsys IC Validator(ICV)是另一款高性能DRC/LVS工具,尤其在大规模数字芯片的物理验证中表现出色。其环境配置与Calibre有相似之处,但变量命名和运行机制存在差异。
3.3.1 核心环境变量
| 环境变量 | 典型值示例 | 作用说明 |
|---|---|---|
ICV_HOME |
/tools/synopsys/icv/2024.03 |
ICV安装根目录 |
SNPSLMD_LICENSE_FILE |
27000@lic-srv-01 |
Synopsys通用License变量 |
ICV_WORK_DIR |
/project/run/icv_drc |
ICV运行工作目录 |
ICV_RULE_FILE |
/foundry/rule/icv_drc.tcl |
ICV规则文件(基于Tcl语法) |
ICV_NUM_THREADS |
32 |
并行处理线程数 |
ICV_LAYOUT_SYSTEM |
GDS 或 OASIS |
指定版图数据格式 |
3.3.2 典型环境配置脚本示例
# ============================================
# ICV DRC 环境配置脚本 (setup.csh)
# ============================================
# ICV 工具路径
setenv ICV_HOME /tools/synopsys/icv/2024.03
# License 配置
setenv SNPSLMD_LICENSE_FILE 27000@lic-srv-01
# 将 ICV 二进制加入 PATH
setenv PATH ${ICV_HOME}/bin:${ICV_HOME}/linux64/bin:${PATH}
# 工作目录
setenv ICV_WORK_DIR /project/run/icv_drc
# 规则文件
setenv ICV_RULE_DIR /foundry/tech/5nm/drc
setenv ICV_RULE_FILE ${ICV_RULE_DIR}/icv_drc_5nm.tcl
# 并行设置
setenv ICV_NUM_THREADS 32
# 指定版图格式
setenv ICV_LAYOUT_SYSTEM GDS
3.4 规则变量(Rule Variables)配置
除了工具层面的环境变量,DRC规则文件本身也包含大量可配置的变量。这些变量用于控制检查的严格程度、开启或关闭特定检查项、指定工艺角等。规则变量的配置通常通过运行脚本传入,或在规则文件头部通过 DEFINE(Calibre SVRF)或 set(ICV Tcl)语句定义。
3.4.1 Calibre SVRF 规则变量示例
// 在 DRC 规则文件头部定义变量
DEFINE VARIABLE min_spacing_metal1 0.05
DEFINE VARIABLE enable_advanced_metal_check 1
DEFINE VARIABLE process_corner "typical"
// 在检查语句中使用变量
@if (enable_advanced_metal_check)
M1_SPACE { @min_spacing_metal1 } // 使用变量值
@else
M1_SPACE { 0.04 } // 使用默认值
@endif
3.4.2 通过命令行传递变量
在实际项目中,规则变量通常在运行脚本中通过命令行参数传递,以实现不同工艺角或检查模式的快速切换。
# Calibre 命令行传递变量
calibre -drc -hier \
-rule $DRC_RULE_FILE \
-layout $LAYOUT_FILE \
-def "min_spacing_metal1 0.06" \
-def "enable_advanced_metal_check 0" \
-def "process_corner worst" \
-turbo 16
# ICV 命令行传递变量
icv -drc \
-f $ICV_RULE_FILE \
-l $LAYOUT_FILE \
-set min_spacing_metal1 0.06 \
-set enable_advanced_metal_check 0 \
-set process_corner worst \
-t 32
3.5 并行与分布式运行环境配置
现代芯片设计规模动辄数十亿晶体管,单机串行DRC运行已不现实。主流工具均支持多线程并行和分布式计算。下表对比了Calibre和ICV在并行环境配置上的关键差异:
| 特性 | Calibre | ICV |
|---|---|---|
| 多线程变量 | CALIBRE_NUM_THREADS 或 -turbo N |
ICV_NUM_THREADS 或 -t N |
| 分布式模式 | Calibre MP (Multi-Processing),需配置 CALIBRE_MP_LIBRARY_PATH |
ICV Distributed Processing,通过 -dist 选项启用 |
| 内存控制 | CALIBRE_MEMORY_LIMIT(单位MB) |
ICV_MEMORY_LIMIT(单位MB) |
| 临时文件路径 | CALIBRE_TMPDIR |
ICV_TMPDIR |
| 结果数据库 | .db 格式,通过 CALIBRE_DATABASE 指定 |
.icvdb 格式,通过 -db 选项指定 |
3.6 环境验证与调试
配置完成后,必须进行环境验证,确保所有变量生效且工具可正常调用。以下是推荐的验证步骤:
- 检查工具版本:运行
calibre -version或icv -version,确认版本号与License匹配。 - 验证环境变量:使用
echo $MGC_HOME、echo $ICV_HOME等命令,确认变量已正确加载。 - 运行空规则测试:准备一个最小化的规则文件(仅包含
DRC CHECK MAP或drc_rule语句),配合一个简单版图运行DRC,检查工具是否能正常启动、读取规则并生成结果。 - 检查License:使用
lmstat -a或工具自带的License诊断命令,确认Feature可用。 - 并行功能测试:分别使用单线程和16线程运行同一测试用例,对比运行时间和结果一致性,确保并行环境配置正确。
- ✅ 工具安装路径(MGC_HOME / ICV_HOME)存在且可读
- ✅ License变量指向正确的服务器和端口
- ✅ PATH变量包含工具bin目录
- ✅ 规则文件路径存在且格式正确
- ✅ 工作目录有足够的磁盘空间(建议预留版图大小的5~10倍)
- ✅ 并行线程数不超过集群分配的CPU核心数
- ✅ 临时文件目录(TMPDIR)有写入权限