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,否则坐标会错位。界面中通常可以按检查项过滤、跳转、查看违规的层和坐标,这是确认“是真违规还是误报”的最直接手段。

Calibre DRC 运行环境与结果流向 运行目录 drc_run/ runset/ layout/ 输出文件落点 规则文件 .rule 层定义 LAYER 检查项 INTERNAL/EXTERNAL 输出指令 RESULTS DATABASE 版图 GDS 层号 / 图形数据 与规则层映射核对 Calibre DRC 引擎 读取规则 + 版图,执行几何检查 日志 calibre_drc.log ERROR / WARNING Total errors found CPU / Real time 结果数据库 drc.results 违规坐标 / 层 / 检查项 ASCII 或二进制 供图形界面加载 汇总 drc.summary 按检查项统计数量 快速定位高发项 判断是否干净 图形界面(RVE / DESIGNrev)加载结果库,将坐标高亮到版图

六、从错误报告快速定位关键信息

拿到一次 DRC 结果后,建议按以下顺序阅读,而不是从头逐行看:

  1. 先看日志末尾的 Total errors found:为 0 不代表一定干净,要结合 WARNING 判断是否有检查项被跳过。
  2. 再看 summary 报告:找出命中数量最多的检查项,优先处理高发项。
  3. 在结果库中按检查项过滤:取前几条违规的坐标和层,判断是系统性错误还是个别图形。
  4. 用图形界面加载并跳转:确认违规是否真实存在,排除层映射错误导致的误报。
  5. 回到规则文件核对对应检查语句:确认操作符、数值、层号是否与设计规则一致。
排障时把“日志—汇总—结果库—图形界面—规则文件”当成一条闭环链路:日志告诉你发生了什么,汇总告诉你哪里最多,结果库告诉你具体在哪,图形界面告诉你是否真实,规则文件告诉你为什么。任何一环缺失,判断都可能出错。
常见误区:只看“Total errors found: 0”就认为版图干净。如果日志中存在 WARNING: Layer ... not found 或规则文件里层号写错,检查项可能根本没有执行,此时 0 错误是无效结论。务必确认所有预期检查项都出现在 summary 中。