2. Calibre DRC运行环境与结果解读
Calibre DRC 的排障效率,很大程度上取决于你是否清楚“一次 DRC 运行到底产生了哪些文件、这些文件分别放在哪里、各自承担什么职责”。很多初学者遇到报错时第一反应是反复改规则文件,却忽略了日志和结果数据库里已经写明了失败原因。本节把 Calibre DRC 的运行环境拆成五个基本对象:运行目录、规则文件、日志文件、结果数据库、图形界面,并说明如何从错误报告中快速定位关键信息。
一、运行目录:所有产物的落脚点
Calibre 通常在工作目录(run directory)下启动,规则文件、版图数据、结果文件默认都以该目录为基准解析相对路径。一个典型的 DRC 运行目录结构如下:
drc_run/
├── runset/
│ └── calibre_drc.rule # 规则文件(runset)
├── layout/
│ └── top.gds # 待检查版图
├── calibre_drc.log # 主日志
├── drc.results # 结果数据库(ASCII)
├── drc.summary # 汇总报告
├── drc_results.db # 图形界面可加载的结果库
└── svdb/ # 结果数据库目录(部分流程)
排障第一步永远是确认“当前目录是不是这次运行的目录”。Calibre 支持在规则文件中用 $ 变量或 PWD 引用路径,如果规则里写的是绝对路径,而你在另一个目录启动,日志和结果就会落到别处,导致“找不到结果”。建议在规则文件开头显式声明工作目录,或在启动命令中固定 -drc 输出前缀。
二、规则文件:DRC 的“检查清单”
规则文件(runset)是 DRC 的核心输入,它定义了层定义、检查项、输出格式和运行选项。一个最小可运行的 DRC 规则骨架如下:
// 层定义
LAYER M1 10
LAYER VIA1 20
LAYER M2 30
// 检查项:M1 最小宽度
M1_WIDTH {
@ M1 minimum width = 0.10um
INTERNAL M1 < 0.10 ABUT < 90 SINGULAR
}
// 输出设置
DRC RESULTS DATABASE drc.results ASCII
DRC SUMMARY REPORT drc.summary REPLACE
排障时要重点关注三类内容:层号映射(LAYER 语句是否与 GDS 实际层号一致)、检查语句(INTERNAL/EXTERNAL/ENCLOSURE 等操作符是否用对)、输出指令(RESULTS DATABASE 的格式和路径)。层号写错是“零错误但实际漏检”的常见原因,必须用版图层表交叉核对。
三、日志文件:错误的第一现场
Calibre 运行时会在终端输出并在日志文件中记录全过程。日志里最值得关注的是这几类行:
ERROR:规则语法错误、文件无法打开、层未定义等致命问题,运行会中止。WARNING:不影响运行但可能影响结果,例如某层在版图中不存在。Total errors found:检查项命中数量,是判断“是否真的干净”的直接依据。CPU time / Real time:运行耗时,异常偏长往往提示规则写法低效。
一个典型的日志片段如下:
// Calibre DRC log (示例)
Reading rule file: runset/calibre_drc.rule
Reading layout: layout/top.gds
WARNING: Layer VIA1 (20) not found in layout.
M1_WIDTH: 12 results
M2_SPACE: 3 results
Total errors found: 15
DRC RESULTS DATABASE written to drc.results
DRC SUMMARY REPORT written to drc.summary
看到 WARNING: Layer ... not found 就要立刻警觉:这通常意味着层号映射错误,相关检查项实际上没有执行,结果里的“0 errors”是假象。
四、结果数据库与汇总报告
结果数据库(results database)保存每个违规的坐标、层和检查项,是图形界面加载和后续分析的基础。汇总报告(summary report)则按检查项统计数量,适合快速浏览。两者配合使用:先看 summary 定位“哪个检查项出错最多”,再在结果库或图形界面中定位具体坐标。
结果数据库常见格式有 ASCII 和二进制两种。ASCII 便于用文本工具查看,二进制加载更快。排障阶段建议先用 ASCII 格式,确认结果内容无误后再切换。
五、图形界面:把坐标变成版图上的标记
Calibre 的图形界面(如 Calibre RVE / DESIGNrev)可以加载结果数据库,把每条违规高亮到版图对应位置。使用时注意:加载的版图必须是同一次运行所用的同一份 GDS,否则坐标会错位。界面中通常可以按检查项过滤、跳转、查看违规的层和坐标,这是确认“是真违规还是误报”的最直接手段。
六、从错误报告快速定位关键信息
拿到一次 DRC 结果后,建议按以下顺序阅读,而不是从头逐行看:
- 先看日志末尾的 Total errors found:为 0 不代表一定干净,要结合 WARNING 判断是否有检查项被跳过。
- 再看 summary 报告:找出命中数量最多的检查项,优先处理高发项。
- 在结果库中按检查项过滤:取前几条违规的坐标和层,判断是系统性错误还是个别图形。
- 用图形界面加载并跳转:确认违规是否真实存在,排除层映射错误导致的误报。
- 回到规则文件核对对应检查语句:确认操作符、数值、层号是否与设计规则一致。
WARNING: Layer ... not found 或规则文件里层号写错,检查项可能根本没有执行,此时 0 错误是无效结论。务必确认所有预期检查项都出现在 summary 中。