3. Calibre xRC工具家族与运行环境

在进入具体的寄生参数提取流程之前,必须先厘清一个常见误区:Calibre xRC 并不是一个单一可执行程序,而是 Mentor(现 Siemens EDA)围绕“版图寄生提取与签核”构建的一整套工具家族。日常口头说的“跑 xRC”,实际上往往同时涉及版图与网表的比对、寄生提取、结果查看与格式转换等多个组件。理解这些组件各自的职责、启动方式以及它们之间通过哪些文件衔接,是后续所有实操的基础。

一、工具家族成员与职责分工

Calibre xRC 家族中,最常打交道的几个组件如下:

  • Calibre xRC:寄生参数提取引擎本体。它读取工艺的规则文件(通常由 foundry 提供的 .rule 或 .rules 文件,内部包含 PEX 相关语句),结合版图 GDS/OASIS 与 LVS 结果,输出带寄生信息的网表(SPICE、DSPF、SPEF 等)。
  • Calibre xACT:面向先进工艺的高精度提取引擎,通常用于 3D 场求解器级别的精确寄生提取,尤其在 FinFET、先进金属堆叠下用于关键网络的签核。它与 xRC 共享规则体系,但精度与运行代价更高。
  • Calibre xLVS:LVS(Layout Versus Schematic)比对工具,负责确认版图与原理图在器件、连接关系上一致。xRC 提取前必须有一份干净的 LVS 结果,否则提取出的寄生网表节点对应关系不可信。
  • Calibre xACT-3D / xRC-3D:针对特定关键网络的 3D 提取,用于对 xRC 结果做交叉验证。
  • Calibre PEX 相关辅助工具:如结果查看、网表格式转换、寄生反标(back-annotation)工具,用于把提取结果送入后续时序分析。

需要强调的是:xLVS 与 xRC 是“先比对、后提取”的依赖关系。LVS 不干净时,xRC 输出的网表即使能生成,其节点命名与器件对应也可能错位,签核结论不可用。

二、启动方式与运行环境

Calibre 工具家族在 Linux 环境下运行,典型启动方式是在终端中调用可执行文件,并配合运行目录下的规则与控制文件。常见形式如下:

# 进入工作目录
cd /proj/pex_run

# 运行 LVS
calibre -lvs -hier -turbo 8 lvs_runset

# 运行 xRC 寄生提取
calibre -xrc -phdb -pex xrc_runset

# 查看提取结果(示例)
calibre -xrc -view pex_result.db

其中 lvs_runset、xrc_runset 是运行集文件(runset),本质上是把规则文件、输入版图、网表、输出路径、提取选项等参数集中声明的控制文件。实际项目中,runset 常由 foundry 提供模板,再由项目组按工艺与设计修改。启动时还可通过 -turbo 指定并行线程数,通过 -hier 选择层次化提取以控制运行时间与内存。

运行前建议确认环境变量 MGC_HOME 指向正确的 Calibre 安装路径,并确认 license 可用;否则工具会在启动阶段直接报错退出,而不是在提取中途失败。

三、输入输出文件与工作目录结构

一次完整的 xRC 提取,输入侧通常包括:版图文件(GDSII/OASIS)、原理图网表(CDL/SPICE)、LVS 规则文件、xRC 规则文件、runset 控制文件;输出侧则包括 LVS 比对报告、提取出的寄生网表(SPICE/DSPF/SPEF)、提取日志与数据库文件。这些文件在典型工作目录中按职责分放,便于复现与排障。

Calibre xRC 工具家族与工作目录数据流 输入文件 版图 GDS / OASIS layout.gds 原理图网表 schematic.cdl LVS 规则文件 lvs.rule xRC 规则文件 xrc.rule Runset 控制文件 lvs_runset / xrc_runset 工艺库 / 层映射 layer.map / tech.db Calibre 工具链 Calibre xLVS 版图与原理图比对,生成 LVS 结果 Calibre xRC 寄生参数提取,输出 SPICE / DSPF / SPEF Calibre xACT 高精度 3D 提取,关键网络签核 结果查看 / 格式转换 PEX 数据库查看、网表反标 输出文件 LVS 报告 lvs.rep 寄生网表 pex.spice / .dspf SPEF 文件 design.spef 提取日志 xrc.log PEX 数据库 pex_result.db 反标网表 annotated.sp LVS 结果 关键网络 结果校验 典型工作目录:runset/ 存放控制文件,rule/ 存放规则,input/ 存放版图与网表,output/ 存放提取结果与日志,work/ 存放中间数据库

结合上图可以看到,输入文件从左侧进入工具链,xLVS 先产出 LVS 结果,xRC 在此基础上提取寄生并输出网表与数据库,xACT 则对关键网络做更高精度的补充验证。右侧输出文件是后续时序签核的直接输入。

四、典型工作目录组织

为了让提取过程可复现、可追溯,建议按职责划分目录,而不是把所有文件堆在同一层。一个可参考的目录结构如下:

pex_project/
├── runset/          # lvs_runset、xrc_runset 等控制文件
├── rule/            # lvs.rule、xrc.rule、layer.map
├── input/           # layout.gds、schematic.cdl
├── output/          # lvs.rep、pex.spice、design.spef、xrc.log
├── work/            # 中间数据库、临时文件
└── scripts/         # 启动脚本、批量运行脚本

这样组织的好处是:规则文件与 runset 分离,便于切换工艺角;输入与输出分离,避免误覆盖;中间文件集中在 work/,清理时不会误删结果。实际项目中,runset 里通常用相对路径引用规则与输入,因此从项目根目录启动工具最为稳妥。

五、启动与结果检查的实操要点

以一次典型的 xRC 提取为例,操作顺序是:先确认 LVS 已通过,再运行 xRC,最后检查输出网表与日志。启动命令可写成脚本,便于重复执行:

#!/bin/bash
cd /proj/pex_project
calibre -lvs -hier -turbo 8 runset/lvs_runset
if [ $? -ne 0 ]; then echo "LVS failed"; exit 1; fi
calibre -xrc -phdb -pex runset/xrc_runset
if [ $? -ne 0 ]; then echo "xRC failed"; exit 1; fi
echo "PEX done, check output/pex.spice and output/xrc.log"

结果判断上,重点看三处:一是 output/lvs.rep 中是否报告 “CORRECT” 或明确的 mismatch 数量;二是 output/xrc.log 中是否有提取完成、网络数量、寄生元件数量的统计,以及是否有 warning 提示某些层未映射;三是 output/pex.spice 或 design.spef 中是否包含预期的网络名与寄生 R/C 元件。若日志中出现 “no matching layer” 或 “device not found”,通常意味着规则文件与版图层号不匹配,需要回到 layer.map 核对。

不要跳过 LVS 直接跑 xRC。即使 xRC 能生成网表,节点对应关系也可能错误,后续时序分析会得到看似合理但实际错误的结果,这类问题在签核阶段极难排查。