2. Calibre平台与运行环境搭建
Calibre 的签核结果是否可信,首先取决于运行环境是否“干净、可复现、可追溯”。同一份 GDS、同一套规则,在不同 Calibre 版本、不同 License 特性、不同机器配置下,DRC/LVS 结论可能不一致。因此本章不讨论规则文件怎么写,而是先把平台底座搭稳:选对版本、配好 License、规划分布式算力、固定工艺库与规则文件的目录结构。
一、工具版本选择:签核版本与规则文件必须匹配
Calibre 的版本号形如 2023.4_38.19,其中年份与主版本决定语法与引擎行为,后面的构建号决定补丁级别。选择版本时遵循三条硬约束:
- 以 Foundry 规则文件声明为准。规则文件头部通常有
# Calibre version: 2022.3 or later之类的注释,低于该版本可能无法解析SVRF、DFM等新语法。 - 以 PDK 验证矩阵为准。PDK 发布说明中会列出“已验证版本”,例如
2022.3_18.11、2023.2_25.9,优先选矩阵内版本,避免用最新版“试错”。 - 全流程版本统一。DRC、LVS、PEX、DFM 尽量使用同一主版本,避免同一项目内出现
calibre -drc与calibre -lvs行为差异。
实际落地时,用环境变量锁定版本,而不是依赖 PATH 中默认的 calibre:
# 版本锁定示例(写入项目 env 脚本)
export CALIBRE_HOME=/eda/mentor/calibre/2023.2_25.9
export PATH=$CALIBRE_HOME/bin:$PATH
export MGC_HOME=$CALIBRE_HOME
calibre -v # 输出 2023.2_25.9,确认生效
若项目需要多版本并存,建议按 /eda/mentor/calibre/<version> 平铺安装,用 module 或 env 脚本切换,禁止在同一个 shell 中混用两个版本的 MGC_HOME。
二、License 配置:区分特性、绑定端口、控制并发
Calibre 的 License 由 Mentor(现 Siemens EDA)的 salicd 守护进程管理,核心是 MGLS_LICENSE_FILE 与 LM_LICENSE_FILE 两个变量。配置要点:
- 端口与主机:形如
1717@lic-server,1717 是默认端口,若被占用需在 license 文件中改PORT并同步客户端。 - 特性名(feature):Calibre 按功能授权,常见有
calibre_drc、calibre_lvs、calibre_pex、calibre_rdb、calibre_mtv等。跑 LVS 却只申请了 DRC 特性,会直接报Cannot find feature。 - 并发数:License 文件中的
INCREMENT行决定同时可用的进程数。分布式跑 64 个 DRC 分块,若calibre_drc只有 32 个,后 32 个会排队等待。
# 客户端 License 配置
export MGLS_LICENSE_FILE=1717@lic-server
export LM_LICENSE_FILE=$MGLS_LICENSE_FILE
# 查看特性占用情况
lmstat -a -c $MGLS_LICENSE_FILE | grep calibre
MGLS_LICENSE_FILE,不要依赖用户家目录的 .bashrc,否则跨用户、跨集群提交时容易取到错误 License。三、分布式计算资源:LSF/SGE 与 Calibre 的对接
Calibre 本身支持多线程(-turbo)与分块(tiling)并行,但大规模签核通常交给 LSF、SGE、Slurm 等作业调度器。关键是把“单机多核”和“多机分块”分开配置:
- 单机多线程:
calibre -drc -hier -turbo 8,适合层次化规则,8 核内收益明显,超过物理核数反而下降。 - 多机分块:用
-tiling或calibre -drc -runset ... -batch配合调度器,把版图切成 N 块分发。 - 资源申请:每块 DRC 建议 8~16 GB 内存、4~8 核;PEX 因提取寄生参数,内存需求更高,建议 32 GB 起。
# LSF 提交示例:64 块 DRC 分块
bsub -q calibre -n 8 -R "rusage[mem=16384]" \
-J drc_tile \
calibre -drc -hier -turbo 8 \
-runset drc.runset \
-tiling 64 -tile_index \$LSB_JOBINDEX
调度器侧要确认:队列名、内存单位(MB/GB)、核数上限与 License 并发数匹配。若 License 只有 32 个 DRC 特性,却一次提交 64 个作业,会出现大量 PEND 状态,需在提交脚本中限制并发。
四、工艺库与规则文件目录结构
签核环境最怕“规则文件散落各处、版本对不上”。推荐按“工艺节点—PDK 版本—规则类型”三层组织,并用只读挂载保证一致性:
/pdk
/tsmc28
/pdk_v1.3
/tech # 工艺文件:tf、layermap、display
/calibre
/drc # drc.runset、drc.rule
/lvs # lvs.runset、lvs.rule
/pex # pex.runset、pex.rule
/dfm # dfm.runset
/lib # 标准单元、IO、SRAM 的 GDS/LEF/LIB
/doc # PDK 发布说明、验证矩阵
规则文件中的路径应使用相对路径或环境变量,避免硬编码绝对路径:
# drc.runset 片段
LAYOUT PATH "$PROJ/gds/top.gds"
LAYOUT PRIMARY "top"
SOURCE PATH "$PDK/tsmc28/pdk_v1.3/calibre/drc/drc.rule"
chmod -R a-w),任何项目级修改应复制到项目目录后再改,否则一次误改会影响所有项目。五、环境自检:一次跑通再签核
搭好环境后,用最小用例验证:calibre -v 确认版本,lmstat 确认 License,calibre -drc -runset drc.runset 跑一个小模块,检查 drc.results 与 drc.summary 是否生成。若报 Cannot find feature,查 License;若报 Syntax error,查版本与规则文件匹配;若作业长时间 PEND,查调度器与 License 并发。只有这三步都通过,才进入正式签核。