Calibre license 取不出来怎么办:checkout failed 排错速查
更新时间:2026-10-22。FAQ 速查页,属于 EDA 工具排错系列。Calibre(DRC/LVS/PEX)启动时第一件事是向 license server 签到(checkout),签到失败就直接退出,物理验证一步都跑不了。Calibre 的授权体系叫 MGLS(Mentor Graphics Licensing System),底层仍是 FlexNet Publisher 那套 lmgrd + vendor daemon 架构,只是 vendor daemon 换成了 Mentor 的
mgcld,客户端找服务器优先读的变量是MGLS_LICENSE_FILE,通用LM_LICENSE_FILE只是兜底。本篇以 Calibre transcript 里的真实风格报错为锚,把「连不上、特性过期/版本不认、席位占满排队」三类失效点逐条拆开。综合侧的同款问题可对照 Design Compiler license 获取失败速查,两篇共享 FlexNet 错误码语义,本篇聚焦 Calibre/MGLS 侧;排错总入口见 开源 EDA 报错排错中心。
本文要回答的问题
- Calibre 启动报
Cannot connect to the license server/ FlexNet-15,先查哪里? MGLS_LICENSE_FILE和LM_LICENSE_FILE都设了,Calibre 到底听谁的?- 服务器明明活着,为什么还报 feature 不存在(
-5)或版本不支持(-21)? - 提示 license queued、排在第 N 位是怎么回事,能不能插队或回收?
- 换了新版 Calibre 全员签不到、借(borrow)出去的 license 不归还,各自怎么处理?
一、报错原文与典型现象
Calibre 的 license 报错通常出现在 transcript 最前面,文案以 MGLS License Error 开头,后面跟 FlexNet 错误码。以下为典型形态,工程名与服务器均已占位:
1. 连不上 license server(启动即死,最常见):
MGLS License Error: Cannot establish connection with the license server.
License path: 2100@license-server
FlexNet Licensing error: -15,570. System Error: 115 "Operation now in progress"
FATAL ERROR: License check failed for Calibre. Exiting.2. 服务器活着,但不认这个特性或版本:
MGLS License Error: Checkout failed for feature "CALIBRE-LVS".
FlexNet Licensing error: -21,126 "License file does not support this version."MGLS License Error: Cannot check out license "CALIBRE-PEX".
FlexNet Licensing error: -5,357 "No such feature exists."3. 特性已过期(常见于 license 年度续期没做完):
MGLS License Error: License for feature "CALIBRE-DRC" has expired.
FlexNet Licensing error: -10,324. 席位占满,进入排队或直接被拒:
MGLS: All licenses for "CALIBRE-PEX" are currently in use.
Your request has been queued. Queue position: 3MGLS License Error: Cannot check out license "CALIBRE-DRC": all licenses are in use.
FlexNet Licensing error: -4,132一句话根因:Calibre 本身没坏,是客户端到 MGLS license server 这条链路某一环断了。 先抓报错里那个负数错误码:-15/-96/-97 是连不上(变量指错、lmgrd 或 mgcld 没起、防火墙拦端口),-5/-21/-10 是连上了但特性不存在、版本太新或已过期,-4 与 queued 是特性没问题但席位被占满。错误码比前面的大段英文更有指向性。
二、报错 → 原因 → 处置速查表
| 报错现象 | 最常见原因 | 一条命令确认 | 处置 |
|---|---|---|---|
-15 cannot connect | MGLS_LICENSE_FILE 端口或主机写错 | echo $MGLS_LICENSE_FILE | 改为 2100@license-server(端口以管理员通知为准)后重跑 |
-15 且变量看着对 | lmgrd 或 mgcld 没在跑 | lmstat -a -c 2100@license-server | 联系管理员重启 MGLS:lmgrd -c <license.dat> -l <log> |
-15 且 lmgrd UP | 防火墙拦了 mgcld 动态端口 | nc -vz license-server 2100 再测 vendor 口 | license 文件写 VENDOR mgcld port=<固定口>,两个端口一起放行 |
-96/-97 server down | 服务器整机停机,或 lmgrd 与 mgcld 版本不配 | lmstat -a -c ... 看 daemon 状态行 | 重启服务;lmgrd/mgcld 版本不得旧于客户端 |
-5 No such feature | 特性名不匹配,或买的是别的 Calibre 套餐 | lmstat -f CALIBRE-LVS -c ... | 核对 FEATURE/INCREMENT 行,向 Mentor 确认套餐特性名 |
-21 version not supported | Calibre 版本新于 license 支持期 | 对照 FEATURE 行版本日期与安装包发布日期 | 回退 Calibre 版本,或申请新的 increment |
-10 expired | license 到期未续 | lmstat -i CALIBRE-DRC -c ... 看到期日 | 走续期,拿到新 license 后 lmreread 重读 |
-4 / queued | 席位占满,含崩溃残留的僵尸占用 | lmstat -a -c ... | grep CALIBRE | 等释放,或管理员 lmremove 回收僵尸席位 |
| 交互能跑、回归脚本签不到 | 非交互 shell 没 source MGLS 环境 | 作业里 env | grep -i LICENSE | 变量写进工程环境脚本,不依赖个人 .bashrc |
换台机器就 -9/hostid 报错 | node-locked license 绑定了固定主机 | lmutil lmhostid | 用登记机器,或改用 floating license |
| 远程/在家办公签不到 | 借用(borrow)过期未还,或没走许可的 VPN | lmstat -a 看 borrowed 席位 | 到期自动归还,或管理员提前回收 borrowed 席位 |
三、排查决策树
按「变量 → 服务 → 端口 → 特性与席位」四环收敛,错误码直接替你选路:连不上的走前三环,连得上但拿不到的走第四环。
读这张图抓住一条主线:-15/-96/-97 是「路不通」,-5/-21/-10/-4 是「路通了货不对」。前三环解决「Calibre 知不知道去哪找、服务器活没活、网络通不通」,第四环解决「要的特性存不存在、版本认不认、有没有空席位」。任何一步命中都在那一层修,修完直接回到绿色收敛节点复验,不要同时改三处——否则下次复发时说不清是哪一处生效。
四、逐条排查展开
第一步:确认变量在「启动 calibre 的那个 shell」里真的有值。 Calibre 查找 license 的优先级是 MGLS_LICENSE_FILE → LM_LICENSE_FILE,值可以是 端口@主机(浮动 license),也可以是 license 文件的绝对路径(node-locked)。最常见的事故是管理员迁移了服务器,通用变量改了、MGLS_LICENSE_FILE 还指着旧机器,而私有变量优先,于是白改:
env | grep -iE "MGLS|LICENSE"
# MGLS_LICENSE_FILE=2100@license-server ← 与管理员给的主机/端口逐字符对交互终端里有值、LSF/cron/回归脚本里没有,几乎都是非交互 shell 不加载 .bashrc。把变量写进工程自己的环境脚本并在作业开头显式 source,不要假设调度系统继承你桌面的环境。
第二步:用 lmstat 看「双 UP」。 MGLS 安装目录(MGLS_HOME 下的 licensing bin,或 FlexNet 工具目录)自带 lmstat:
lmstat -a -c 2100@license-server
# 健康输出的两行关键状态:
# license-server: license server UP (MASTER) v11.19
# mgcld: UP v11.19lmgrd UP 和 mgcld UP 缺一不可:只有 lmgrd 活着、mgcld 没起来时,握手能开始但取 license 必败,客户端照样报 -15/-96。管理员更新了 license 文件后需要执行 lmreread -c 2100@license-server 让 daemon 重读,只换文件不重读,新特性不会生效;lmdown 会停掉整组服务、踢掉所有人,只能由管理员在维护窗口操作。
第三步:测两个端口,别只测 lmgrd 的口。 FlexNet 通信用两个端口:license 文件 SERVER 行上的固定端口(示例中的 2100,以实际文件为准)和 mgcld 的 vendor 端口,后者默认每次启动随机分配。防火墙只放行了固定端口时,现象很有迷惑性:lmstat 偶尔能应答,Calibre 真正 checkout 时超时报 -15:
nc -vz license-server 2100
lmstat -a -c 2100@license-server | grep -i "port" # 找 mgcld 实际端口后再 nc 一次根治办法是让管理员在 license 文件里写 VENDOR mgcld port=<固定端口> 钉死,防火墙把两个端口一起放行。若站点配的是三机冗余(triad),变量形如 2100@host1:2100@host2:2100@host3,三台里多数存活即可签到,排查时逐个 nc 测端口。
第四步:-5/-21/-10——连上了但货不对。 三种成因分开看。-5 是特性名不存在:不同 Calibre 套餐签出的特性名不同(如 CALIBRE-DRC、CALIBRE-LVS、CALIBRE-PEX,具体名以本单位 FEATURE 行为准),用 lmstat -f <特性名> 确认服务器上到底有没有。-21 是版本不支持:FEATURE/INCREMENT 行上的版本日期表示「支持该日期之前发布的工具」,装了比它更新的 Calibre 就会被拒——工具升级前必须先确认 license increment 到位,否则就是全员停工。-10 是 license 到期,lmstat -i <特性名> 能直接看到到期日,续期文件到位后让管理员 lmreread。顺带一提,客户端太新而服务器端 lmgrd/mgcld 太旧时也会签到失败,服务端版本需不旧于客户端,这条要管理员在服务侧核对。
第五步:-4 与 queued——席位满员。 lmstat -a 能看到每个席位被谁、从哪台机器、从几点占用。两种处置:排队等释放(Calibre 支持进入队列,席位空出后按位置自动重试,位置提示即来自这里),或请管理员用 lmremove 清掉异常退出残留的僵尸会话——被 kill -9 的 calibre 进程心跳超时前不会立刻释放席位。另外查一下 borrow(借用):有人为离线办公借出的席位在归还前一直占用额度,即使本人没在跑任务,lmstat -a 中 borrowed 计数能看出来,借用到期才自动归还,必要时由管理员提前回收。
第六步:每改一处立刻复验一次。 先空壳签到(calibre -drc 带一个最小 runset 起来即退),确认无 license 报错;再用真实 deck 完整跑一遍 DRC/LVS/PEX——PEX 等特性可能在运行到对应阶段才签出,启动能过不代表全程能过。两级都绿才算闭环。
五、预防与纪律
- 变量进工程脚本:
MGLS_LICENSE_FILE写进团队统一的环境 setup,回归作业开头 source,并打印一行确认,不靠个人.bashrc。 - 升级先查 increment:Calibre 大版本升级前,用 FEATURE 行版本日期对安装包发布日期,license 没到位就不全网推送。
- vendor 端口钉死:新装机或迁移服务器时,license 文件直接写
VENDOR mgcld port=<固定口>,避免动态端口与防火墙长期扯皮。 - 续期看日历:记下 license 到期日,提前两周走续期流程,不要等
-10在流片前夜出现。 - 报错原文先存档:保留第一次失败的完整 transcript,改一处重跑一次;MGLS 报错行自带错误码与 license path,原文即证据。
这一篇在知识体系里的位置
本篇是 EDA 排错速查簇的一员,总入口见 开源 EDA 报错排错中心。综合侧的同款 FlexNet 签到故障对照 Design Compiler license 获取失败速查,布局布线与静态时序侧还可参考 Innovus license 获取失败速查 和 PrimeTime license 获取失败速查,四篇的错误码表可以互换使用。license 是物理验证的前置门槛,签到过去之后的流程见 Calibre 物理验证实操。
一句话总结
Calibre license 取不出来,本质是 Calibre 经 MGLS(FlexNet 架构、vendor daemon 为 mgcld、优先读 MGLS_LICENSE_FILE)签到失败:按错误码分流——-15/-96/-97 依次核对变量主机端口、lmstat -a 看 lmgrd 与 mgcld 双 UP、nc 验固定端口与 vendor 端口两个端口;-5/-21/-10/-4 分别对应特性名不符、版本超出支持期、license 到期、席位占满排队,用 lmstat -f/-i 与 borrowed 计数定位,配合 lmreread 重读、lmremove 回收僵尸席位;修完以空壳签到加真实 deck 完整跑通为验证标准,防复发靠变量进工程脚本、升级前核对 increment、vendor 端口钉死三件事。