Calibre 版本不兼容速查:rule deck、SVDB 与许可证混版报错
更新时间:2026-10-22。FAQ 速查页,属于 EDA 工具排错系列,总入口见 开源 EDA 报错排错中心。Calibre(Mentor/Siemens EDA 的物理验证工具,DRC/LVS/PEX 三件套,批处理壳是
calibredrv,结果查看器是 RVE)的版本不兼容有四张面孔:工艺厂 rule deck(SVRF 规则文件)按某一版 Calibre 认证、跑出的 SVDB 结果库带格式版本、license 特征(feature)授权到特定版本、同一作业里calibre与calibredrv来自两个版径。升级工具链、多人共用 work 目录、从别的项目组拷回归目录是三个高发场景。报错文案各不一样,但根因都是同一句话:参与一次运行的两样东西版本没对齐。许可证检不出来的环境细节见 Calibre license 检出失败速查,退出码与批处理失败见 Calibre 退出码非零速查,验证流程全貌见 Calibre 物理验证实操。
本文要回答的问题
- 报错里的版本号分别是谁的版本,怎么抄全?
- rule deck 比工具新、SVDB 比查看器新、license 特征比工具旧,三种错配怎么分?
- work 目录里哪些缓存和
.lock文件该清,删完会不会伤结果? - 为什么「我这边能跑、回归机上挂」,怎么一次性统一全链路版本?
一、报错原文与典型现象
版本错配通常在三个位置咬人:deck 编译阶段、打开旧结果库阶段、license 检出阶段。以下为三类典型文案,路径与版本号已占位:
1. rule deck/SVRF 与工具版本对不上(deck 比工具新最常见):
***** ERROR: Unsupported SVRF construct or option encountered
while compiling rule deck "proj_rules.svrf" at line 214.
***** ERROR: Rule deck requires Calibre release 2023.4 or newer;
current release is 2022.3. Deck compilation aborted.2. SVDB 结果库由别的版本产生,RVE 或 query 打不开:
// RVE 弹窗 / calibredrv query-results 输出:
ERROR: The results database (svdb) was created by Calibre 2023.x
and cannot be read by this release (2021.x).
ERROR: Incompatible SVDB format version; re-run the verification
with the current release to regenerate the database.3. license 特征版本不匹配(FLEXlm 口径):
%MGLS_ERROR: License checkout failed for feature "calibre"
Wrong version of feature "calibre" (-114).
License server system does not support this version of this
feature. License file: 27000@<server>还有一类没有明显版本字样的伪装形态:deck 在别人机器上正常,换台机器报某条规则的选项「不认识」;同一 work 目录昨天还能 RVE 打开,今天打开就闪退或崩溃(段错误分支见 Calibre 段错误崩溃速查)。这类先别急着怀疑文件损坏——文件截断有独立的判据,见 Calibre 版图/规则文件损坏截断速查——先把版本号抄全。通用第一判据:报错任意一侧出现版本、release、format version、wrong version 字样,就按本篇走。
二、报错现象到根因速查表
各站点封装与发行版文案可能不同,下表按常见口径保守表述,具体支持矩阵以本单位安装的 Calibre 版本说明与工艺厂 rule deck 参考文档为准。
| 报错现象 | 可能原因 | 处置 |
|---|---|---|
| deck 编译报 requires release … 或选项不认识 | rule deck 按更新版 Calibre 认证 | 换 deck 声明的版本,或向工艺厂取旧版 deck |
| 旧工具能跑、升版后 deck 行为变了 | deck 与新版语法/默认值有漂移 | 对 deck release notes,工艺厂未认证前不擅自升 |
| RVE/query 报 SVDB created by newer version | 结果库由更新版产生 | 用当前版清 work 后整轮重跑再生 SVDB |
| 新版工具打开老 SVDB 异常 | 跨大版本结果库不保证兼容 | 同上,不做结果库「转换」,直接重跑 |
| license -114 / does not support this version | 许可证文件授权版本低于工具版本 | 换授权覆盖的版径,或更新 license 文件 |
| 同一作业不同阶段版本不一致 | PATH 里 calibre 与 calibredrv 来自两处 | 用 module 固定单一版径后重开 shell |
| 报平台/OS 不支持或 glibc 相关错误 | 该 Calibre 版本不支持当前操作系统 | 换到认证的提交机,不强行跑 |
| 无版本报错但结果/锁异常 | $MGC_TMPDIR 与 work 残留旧版 .lock | 清锁与临时目录后重跑 |
| 交互式能跑、LSF 回归挂 | 作业环境与交互 shell 的模块不一致 | 提交脚本内显式 module load 固定版本 |
| 清了缓存还复现 | 多个版本装在同一版径或软链漂移 | 核对 which -a calibre 与 $MGC_HOME |
三、逐条排查展开
版本不兼容的本质是「数据与授权都绑定发行版」。 rule deck 不是普通文本:工艺厂按某一版 Calibre 验证过 SVRF 语法、选项语义和检查结果,deck 头部或随附说明通常写明认证版本;SVDB 是二进制结果库,格式随版本演进取舍字段;FLEXlm 许可证按 feature 的版本号发放。三者任何一个与可执行文件错位,Calibre 的策略都是拒绝而不是将就读——拿错版结果签核比直接报错危险得多。所以排查的起点永远是把两侧版本号抄全:
calibre -v # 工具侧版本 banner
which -a calibre calibredrv # 版径是否唯一、是否指向同一安装
echo $MGC_HOME $MGLS_LICENSE_FILE
module list # 加载的是哪个 calibre/<ver>版径统一用 /tools/mentor/calibre/<ver> 占位理解;$MGC_HOME 是老版本的安装根变量,新版本安装与模块系统可能不再设置它,以本单位模块文件为准,不要照抄旧帖手工 export。文件侧版本报错里一般直接给出(deck 要求版本、SVDB 创建版本);license 侧看 -114 一类码与服务器 27000@<server>,具体授权到哪一版要问许可证管理员,客户端猜不出来。
rule deck 错配:只在认证版本上跑。 deck 比工具新时,典型咬法是编译阶段报某条 SVRF 选项不认识,或 deck 自带的版本检查直接中止。处置只有两条正路:换到 deck 声明的 Calibre 版本,或向工艺厂索取适用于当前版本的 deck 包——不要自己删改 deck 里的版本检查语句,那等于脱离工艺厂认证跑签核,结果不被承认。反向情形(工具比 deck 新很多)未必报错,但新版默认值与选项语义可能漂移,工艺厂未认证前升级工具本身就是流程事件。deck 五段结构与认证标记位置见 Calibre SVRF rule deck 解剖。
SVDB 错配:结果库不做转换,整轮重跑。 SVDB(Calibre 的结果数据库目录,存违例几何与层次化结果)由哪一版产生就带哪一版的格式号。用更新版工具打开旧库、或用旧版 RVE 打开新库,都可能报 incompatible format,跨大版本时新版打开老库也可能表现异常。不要尝试「转换数据库」或只补跑单个 rulecheck——层次化结果互相引用,半新半旧的库比没有库更危险。标准动作是清空 work 目录后用统一版本从头重跑这一轮 DRC/LVS/PEX,重跑成本是一次验证时间,换来的是结果库内部格式一致。
缓存与锁:版本错配的隐蔽放大器。 Calibre 运行时在 work 目录与 $MGC_TMPDIR(未设置时用系统临时目录)下写临时段、SVDB 锁文件(.lock 一类)与运行状态。上一版进程异常退出留下的锁、旧版写了一半的临时段,会让换版后的第一次运行出现「数据库被占用」「结果对不上」甚至崩溃,且报错里不带任何版本字样。处置是停掉本机相关 Calibre 进程后,清理本次运行的可再生产物再重跑:
# 先确认没有正在跑的 calibre 作业,再动 work 目录
rm -rf ./svdb ./calibre.*.* ./*.lock
rm -rf "$MGC_TMPDIR"/calibre* 2>/dev/nullSVDB 与临时段全部是可再生的派生产物,删它们不伤源数据;真正要保住的是 deck、GDS/OASIS 输入与控制脚本。团队纪律是 work 目录不入库、不跨项目拷贝,归档只归 transcript 与报告。
混版要靠环境统一根治。 「我这能跑、回归机挂」九成型是两处 shell 加载了不同模块:PATH 里先命中了别的安装,或 calibredrv(Tcl 批处理驱动)与 calibre 主程序不在同一版径,作业前半段用新版写 SVDB、后半段用旧版 query 去读,必挂。LSF 作业继承的是提交脚本里的环境,交互式 module load 对 bsub 出去的作业不生效。根治是把版本写死进项目提交封装,任何人、任何机器同源加载:
module purge
module load calibre/<与 deck 认证一致的版本>
export MGLS_LICENSE_FILE=27000@<server>
which calibre && calibre -v # 提交前自检,版本入 transcript还有一种平台级错配:报错提示当前操作系统/平台不受支持(常见于大版本升级后老提交机 glibc 过旧),这不是清缓存能解决的,把作业派到该版本认证过的机器上即可。命令本身不在 PATH 的分支见 Calibre 命令不在 PATH 速查。
下面这张决策树把排查压成一条收敛路径,任何一层命中就在那一层修,不要跳着删文件:
读图抓住一条主线:红色入口是现象,蓝色第一步永远是抄全两侧版本号并核对版径;三个下游节点按报错出现的阶段对号入座——编译阶段是 deck,开结果库是 SVDB,检出阶段或两机不一致是环境与 license;橙色修复只有一套组合拳(统一版径、清 work、整轮重跑),紫色收尾是把版本固化进提交封装。不要在不统一版本的情况下反复重跑,旧版进程随时会把 SVDB 再写回旧格式。
重跑要全量,验证要看齐基线。 版本混用环境里,报错的只是第一个撞枪口的文件,没报错的 rulecheck 也可能读着旧格式的中间状态。统一定版后:清 work 与锁 → 从 GDS/OASIS 整轮重跑 → 把违例计数、LVS CORRECT/INCORRECT 摘要与切换前的认证基线比对,差异可解释才算切换完成。只重跑报错点、不跑全量回归,等于没切干净。
四、预防与纪律
- deck 认证版本即项目定版:工艺厂 rule deck 声明支持哪一版 Calibre,项目模块就固定哪一版,升级走认证流程不随手追新。
- 版径单一来源:
module purge后只 load 一个calibre/<ver>,提交脚本内自检which calibre与calibre -v并落 transcript。 - work 目录不跨版复用:SVDB、临时段、
.lock一律视为派生产物,换版先清目录,不拷贝、不归档、不入库。 - license 与工具版本配套升级:升版前先确认许可证文件覆盖目标版本,避免全组切完集体 -114。
- 切换留基线:每次版本变动跑一次完整回归,违例数与 LVS 摘要与旧基线对拍,结果随项目记录归档。
这一篇在知识体系里的位置
本篇是 EDA 排错速查簇中「版本兼容」节点的 Calibre FAQ 页,全簇索引见 开源 EDA 报错排错中心。版本对得上但命令找不到,走 Calibre 命令不在 PATH 速查;许可证本身的检出失败细节走 Calibre license 检出失败速查;重跑后仍非零退出按 Calibre 退出码非零速查 分诊,打开结果库时段错误按 Calibre 段错误崩溃速查 收证;deck 结构与认证标记见 Calibre SVRF rule deck 解剖,完整验证流程见 Calibre 物理验证实操。
一句话总结
Calibre 版本不兼容先抄两侧版本号:编译阶段报错是 rule deck 与工具版本错配、只在工艺厂认证版本上跑,打开结果库报错是 SVDB 格式错配、不做转换直接清 work 整轮重跑,license -114 与两机不一致是授权或模块混版、用 module purge 加单一 calibre/<ver> 固定版径;根治靠把 deck 认证版本写死进提交封装、work 与 .lock 视为派生产物随版清理,切换后跑全量回归与基线对拍。