3. Calibre Pattern Matching环境与流程概览

Calibre Pattern Matching(简称 CPM)是 Siemens EDA 在 Calibre 平台上提供的版图图形匹配工具,它把版图中具有特定几何拓扑关系的图形集合定义为“模式(pattern)”,再在全芯片范围内搜索相同或相似的模式,用于热点检测、设计规则验证、OPC 检查、标准单元一致性核查等场景。要真正用好它,第一步不是急着写规则,而是把运行环境、文件类型和整体流程理清楚——因为 CPM 的输入输出关系比普通 DRC 更“多对多”,一旦文件角色搞混,后续调试会非常低效。

一、工具启动方式

CPM 并不是一个独立的图形界面程序,它依托 Calibre 的命令行执行框架运行。最常用的启动方式是 calibre -pm,配合规则文件与运行目录参数:

calibre -pm pattern_rule.svrf \
        -hier \
        -turbo 8 \
        -runset runset.txt \
        -gds layout.gds \
        -topcell TOP \
        -report hotspot.rpt

其中 -pm 明确告诉 Calibre 本次运行走 Pattern Matching 引擎;-hier 启用层次化处理,对全芯片版图尤其重要;-turbo 指定并行线程数;-runset 可把常用参数固化到运行集文件里,便于批量复现。规则文件通常以 .svrf 或 .pm 为后缀,内部使用 SVRF(Standard Verification Rule Format)语法。若在图形化环境(如 Calibre Workbench 或 DesignREV)中操作,则通过菜单选择 Pattern Matching 流程,本质仍是调用同一套命令行引擎,只是把参数封装成界面表单。

二、输入输出文件类型

CPM 的输入输出可以按“版图侧、规则侧、结果侧”三类理解。版图侧输入是 GDSII 或 OASIS 格式的版图数据,必须指定顶层单元名(topcell),否则工具无法确定展开起点;若版图来自 Milkyway 或 LEF/DEF 流程,需先转换为 GDS/OASIS。规则侧输入是 SVRF 规则文件,其中包含层定义、模式定义、匹配容差、输出控制等语句。结果侧输出主要有三类:一是热点报告文件(.rpt 或 ASCII 文本),逐条列出匹配到的位置、单元名、坐标和模式名;二是结果版图(GDS/OASIS),把匹配区域用标记层(marker layer)画出来,便于在版图工具中直接定位;三是 RDB(Results Database)格式,供 Calibre RVE 等结果查看器加载,实现与版图联动高亮。

建议在规则文件中显式定义输出层号,例如 LAYER hotspot_marker 1000,这样结果版图里的标记层不会与原始设计层冲突,后续在 Virtuoso 或 ICV 中打开时一眼就能识别。

三、规则文件结构

一个典型的 CPM 规则文件按“层定义 → 模式定义 → 匹配控制 → 输出控制”四段组织。层定义段用 LAYER 语句把 GDS 层号映射为可读名称;模式定义段是核心,用 PATTERN 语句描述目标图形的几何关系,例如两个矩形的最小间距、一个矩形被另一个矩形包围的拓扑;匹配控制段设置容差、是否允许旋转/镜像、是否层次化匹配;输出控制段决定报告格式和标记层。下面是一个简化示例:

LAYER M1 10
LAYER VIA1 20
LAYER MARKER 1000

PATTERN via_shift
  M1 AND VIA1
  ENCLOSURE < 0.02
END PATTERN

MATCH TOLERANCE 0.001
MATCH NO_ROTATE
OUTPUT MARKER
REPORT hotspot.rpt

这段规则的含义是:在 M1 与 VIA1 的重叠区域中,寻找包围不足 0.02 微米的位置,匹配容差 0.001 微米,不允许旋转,结果输出到 hotspot.rpt 并生成标记层。实际项目中,模式定义往往更复杂,会用到 INTERACT、INSIDE、OUTSIDE、NOTCH 等几何操作符组合。

四、从版图到热点报告的完整流程

把上述要素串起来,CPM 的完整流程可以概括为:准备版图与规则 → 启动引擎 → 层次化展开与模式搜索 → 生成结果 → 结果查看与迭代。其中“层次化展开”是关键中间环节:Calibre 会先按 topcell 逐层展开版图,再在每个层次上执行模式匹配,最后把匹配结果映射回原始坐标。这一步直接决定运行时间和内存占用,对全芯片版图,通常需要配合 -hier 和合理的 cell 过滤策略。

Calibre Pattern Matching 从版图到热点报告的数据流 版图输入 GDSII / OASIS topcell = TOP 规则输入 pattern_rule.svrf LAYER / PATTERN / MATCH Calibre -pm 引擎 层次化展开 模式搜索与容差匹配 坐标映射回顶层 -turbo 并行加速 热点报告 .rpt 坐标 / 单元 / 模式名 结果版图 GDS MARKER 层标记 RDB 结果库 Calibre RVE 联动高亮 结果复核 → 调整规则 → 重新运行 关键参数:-hier 层次化 · -turbo 并行线程 · -runset 运行集 · MATCH TOLERANCE 容差 · MATCH NO_ROTATE 方向控制 输出优先级:先看 .rpt 定位坐标,再用结果版图或 RDB 在版图工具中确认图形上下文

流程中值得特别注意的是“结果复核”环节。CPM 报告里的匹配位置并不等于真实热点,它只是几何上满足模式定义的位置。工程师需要把 .rpt 中的坐标导入版图工具,结合原始设计意图判断该处是否真的存在工艺风险。例如,规则中定义“M1 对 VIA1 包围不足 0.02 μm”,但某些位置可能是故意设计的测试结构或 dummy 图形,此时需要在规则中增加排除层或 NOT 条件,而不是直接修改版图。这个“匹配 → 复核 → 调整规则 → 重跑”的闭环,是 CPM 实际项目中最耗时间也最有价值的部分。

五、环境准备与常见注意点

运行 CPM 前,需要确认三件事:一是 Calibre 版本支持 Pattern Matching 引擎(通常需要较新的版本,且 license 中包含 PM 特性);二是环境变量 MGC_HOME、CALIBRE_HOME 指向正确安装路径,PATH 中包含 calibre 可执行文件;三是运行目录有足够磁盘空间存放结果版图和 RDB,全芯片结果版图有时会达到数 GB。另外,规则文件中的层号必须与版图 GDS 中的层号严格一致,若版图经过层映射(layer map)处理,需在规则中同步调整,否则会出现“规则写了但匹配不到”的假阴性。

不要忽略 topcell 的指定。如果版图中有多个顶层单元,而 -topcell 写错,Calibre 可能只展开了一个空壳单元,报告为空却没有任何报错,排查起来非常费时。