4. Calibre DRC运行环境与命令行实战
Calibre DRC 的签核结果是否可信,一半取决于规则文件本身,另一半取决于运行环境与命令行是否被正确组织。很多“规则明明写对了却报错”“昨天能跑今天跑不动”的问题,根源并不在规则语法,而在工作目录、环境变量、命令行参数和日志解读上。本节围绕 calibre -drc 的实际运行展开,把运行目录组织、日志与摘要报告解读、常见错误排查串成一条可复现的操作链。
一、运行环境与目录组织
Calibre 通过环境变量定位安装路径与许可证。典型配置如下(示例路径,需按实际安装替换):
export CALIBRE_HOME=/opt/mentor/calibre/2023.4
export PATH=$CALIBRE_HOME/bin:$PATH
export MGC_HOME=$CALIBRE_HOME
export LM_LICENSE_FILE=27020@lic-server
其中 CALIBRE_HOME 指向安装根目录,PATH 让 calibre 可被直接调用,LM_LICENSE_FILE 指定许可证服务器端口与主机。可用 calibre -v 验证版本、lmstat -a 检查许可证占用情况。
运行目录建议按“规则、版图、输出、日志”分离,避免中间文件污染源文件:
drc_run/
├── rule/ # DRC 规则文件(.cal / .rule)
├── layout/ # GDS/OASIS 版图
├── run/ # 运行目录,存放 svdb、sum、log
└── scripts/ # 批处理与后处理脚本
在 run/ 目录下执行命令,所有输出(.sum、.log、svdb/)都落在当前目录,便于归档与复现。规则文件中引用版图时使用相对路径或绝对路径要统一,否则换目录运行就会找不到输入。
二、calibre -drc 命令与关键参数
最基础的调用形式是:
calibre -drc -hier -turbo 8 \
-64 -hyper \
../rule/drc.cal \
-gds ../layout/top.gds \
2>&1 | tee drc_run.log
各参数含义:-drc 指定进入 DRC 模式;-hier 启用层次化处理,大幅减少重复单元的计算量;-turbo 8 指定 8 个线程并行;-64 使用 64 位模式以支持大版图;-hyper 启用超线程加速。规则文件与版图作为位置参数传入,也可在规则文件内用 LAYOUT PATH 指定。输出重定向到 drc_run.log 便于事后排查。
若需生成结果数据库供后续查看,可加 -svdb 指定目录:
calibre -drc -hier -svdb ./svdb drc.cal
运行结束后,Calibre 会生成 drc.results(或规则中 RESULTS DATABASE 指定的文件)、.sum 摘要和 .log 日志。三者分工不同:日志记录运行过程与错误,摘要给出违规统计,结果数据库供版图工具定位。
三、日志与摘要报告解读
日志开头会打印版本、许可证、规则文件路径、CPU 与内存信息,随后是规则编译、版图读入、各检查项执行、结果输出。重点看三类信息:
- ERROR:致命错误,运行中断,必须解决,如规则语法错误、版图无法打开。
- WARNING:警告,运行继续,但可能影响结果完整性,如某层未定义、某检查被跳过。
- CPU time / Peak memory:用于判断资源是否成为瓶颈。
摘要报告 .sum 按检查项列出违规数量,典型片段如下(示例数据):
RULECHECK RESULTS
--------------------------------------------------
M1.SPACE.1 : 128 violations
M1.WIDTH.1 : 0 violations
VIA1.ENCLOSURE.1 : 37 violations
POLY.GATE.1 : 5 violations
--------------------------------------------------
TOTAL : 170 violations
解读时先看 TOTAL 是否为 0,再看哪一项非零。若某项为 0 但日志中该检查被 WARNING 跳过,则“0”并不代表通过,这是最容易误判的地方。摘要中的数量是违规图形数,不是违规位置数,一个位置可能对应多个图形。
四、常见运行错误排查
1. 找不到规则文件或版图。日志报 Cannot open rule file 或 Cannot open layout。先确认当前工作目录,再用 ls -l 核对相对路径;规则文件内 LAYOUT PATH 若写死绝对路径,换机器就会失效,建议改为命令行传入。
2. 许可证获取失败。报 License request failed 或 Cannot connect to license server。检查 LM_LICENSE_FILE 是否指向正确端口与主机,用 lmstat -a -c 27020@lic-server 查看是否有空闲 license。若被其他任务占满,需等待或申请更多席位。
3. 规则语法错误。报 Syntax error at line N。按行号定位,常见原因是缺少分号、括号不匹配、层号未定义、变量未声明。建议先用 calibre -drc -check 只做规则编译检查,快速暴露语法问题,避免每次跑完整流程。
4. 内存不足或进程被杀。日志出现 Out of memory 或进程被系统 kill。可降低 -turbo 线程数、启用 -hier 层次化、拆分版图分块运行,或申请更大内存节点。注意 -turbo 过高反而因内存竞争变慢。
5. 结果为空但预期有违规。先看日志中对应检查是否被 WARNING 跳过,再确认版图层号映射是否正确、LAYOUT PRIMARY 是否指向了正确的顶层单元。层映射错误是“零违规”最常见的假象来源。
五、可复现的运行记录模板
为便于复盘与签核追溯,每次运行建议记录以下字段(示例):
| 字段 | 示例值 | 说明 |
|---|---|---|
| 运行日期 | 2024-06-12 | 签核时间点 |
| Calibre 版本 | 2023.4 | calibre -v 输出 |
| 规则文件 | drc.cal rev 1.3 | 含版本号 |
| 版图 | top.gds | 含顶层单元名 |
| 命令 | calibre -drc -hier -turbo 8 ... | 完整命令行 |
| TOTAL 违规 | 170 | 来自 .sum |
| ERROR/WARNING | 0 / 2 | 来自 .log |
| 结论 | 未通过,待修复 | 通过/未通过 |
把命令、日志、摘要和结果数据库一起归档,下一次运行或换人接手时,才能快速判断“这次结果和上次是否可比”。运行环境与命令行的规范化,是 DRC 签核从“能跑”走向“可信”的第一步。