ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Synopsys License 部署与排错实战:从 lmgrd 到 snpslmd 全解析

Synopsys License 部署与排错实战:从 lmgrd 到 snpslmd 全解析 简介这份资源面向需要配置Synopsys工具授权环境的学习者尤其是Windows平台下进行license生成与调试的初学者和进阶用户。压缩包内仅含1个docx文档体积约269KB以文字说明形式梳理了授权文件从获取到可用的完整流程涵盖网盘文件提取、时间戳调整、scl_keygen.exe参数填写、snpslmd路径修改以及fix.bat执行等关键环节。文档还针对lmgrd报错未找到feature、SIGN与SN标识符手动插入、project_id对应修改等常见问题给出了排查思路并提醒2004年时间戳不稳定、改用2018年更可靠。目前已有573人学习适合希望理解license文件结构、掌握授权生成与排错方法的读者参考需注意该资源仅限学习使用应遵守相关版权与合法性要求。1. 从一次 VCS 编译卡死说起Synopsys 工具 license 到底在管什么凌晨两点vcs -full64跑了十分钟没吐一个字lmgrd进程活着lmstat却显示Cannot connect to license server。这种场景做数字 IC 的几乎都遇到过工具装好了环境变量也配了偏偏 license 这一关卡住编译、仿真、综合全线停摆。Synopsys 工具链VCS、Verdi、Design Compiler、PrimeTime、ICC2、SpyGlass 等的授权不是单个文件丢进去就完事它由 license 文件、license 服务器进程lmgrd snpslmd、客户端环境变量三部分咬合而成任何一环错位都会报出五花八门的错误码。这篇把 Synopsys license 资源的获取、部署、排错、优化按一线做法讲透适合刚接手 EDA 环境搭建的工程师也适合被license request failed for feature折磨过的老手对照排查。2. Synopsys license 机制与资源构成先搞懂 snpslmd 在做什么2.1 license 文件里的三行关键字段一份 Synopsys license 文件常见后缀.dat或.lic核心就三类行SERVER行声明服务器主机名、MAC 地址和端口VENDOR行声明守护进程snpslmd及其路径INCREMENT/FEATURE行声明具体工具、版本、到期日和授权数量。看一个典型片段SERVER eda-server 001122aabbcc 27000 VENDOR snpslmd /opt/synopsys/linux64/bin/snpslmd INCREMENT vcs_sim snpslmd 2026.12 31-dec-2026 20 \ VENDOR_STRING... HOSTID001122aabbcc ISSUED...SERVER行的 MAC 必须和运行 lmgrd 的机器物理网卡一致虚拟机克隆后网卡变了是最高频的失效原因。VENDOR行的路径必须指向真实存在的snpslmd可执行文件路径写错 lmgrd 会启动但 vendor daemon 起不来。INCREMENT行里的vcs_sim是 feature 名客户端报license request failed for feature时括号里那个名字就是它对不上说明工具版本和 license 版本不匹配。2.2 lmgrd 与 snpslmd 的父子进程关系Synopsys 用的是 FlexNet原 FLEXlm授权体系lmgrd是调度进程负责读 license 文件、监听端口、拉起各厂商的 vendor daemon。snpslmd才是真正判断 feature 是否可用的进程。两者是父子关系lmgrd挂了snpslmd也会跟着退。启动命令常见写法# 前台启动便于看日志调试阶段用 /opt/synopsys/linux64/bin/lmgrd -c /opt/synopsys/license/synopsys.dat -l /var/log/snps.log # 后台常驻生产环境用 /opt/synopsys/linux64/bin/lmgrd -c /opt/synopsys/license/synopsys.dat -l /var/log/snps.log -2 -p-c指定 license 文件-l指定日志路径-2让日志覆盖写而非追加-p让 lmgrd 以伪后台方式运行。日志文件是排错第一现场snpslmd启动失败、端口占用、feature 过期都会写在这里。2.3 客户端环境变量LM_LICENSE_FILE 与 SNPSLMD_LICENSE_FILE客户端要告诉工具去哪找 license两个变量都常见export LM_LICENSE_FILE27000eda-server export SNPSLMD_LICENSE_FILE27000eda-server27000eda-server中端口号必须和SERVER行一致主机名要能被 DNS 或/etc/hosts解析。Synopsys 工具优先读SNPSLMD_LICENSE_FILE没设才回落到LM_LICENSE_FILE。多个 license 源用冒号分隔。这里有个坑如果同时设了两个变量且指向不同服务器工具行为会变得难以预测建议只保留SNPSLMD_LICENSE_FILE。2.4 用 lmstat 和 lmutil 验证授权状态部署完别急着跑工具先用lmutil自检# 查看服务器整体状态 /opt/synopsys/linux64/bin/lmutil lmstat -c 27000eda-server -a # 只看某个 feature 的占用情况 /opt/synopsys/linux64/bin/lmutil lmstat -c 27000eda-server -f vcs_sim # 查看谁在用 /opt/synopsys/linux64/bin/lmutil lmstat -c 27000eda-server -f Verdi-a输出所有 feature 的授权数和已用数-f精确到单个 feature。如果lmstat报Cannot connect问题在服务器或网络如果能连上但-f显示0 of 20可用说明授权被占满需要等释放或加授权。3. 从零部署一套可用的 Synopsys license 服务3.1 拿到 license 资源后的第一步核对拿到 license 文件先别急着启动逐项核对SERVER行的 hostname 和 MAC 是否和部署机一致ip link或ifconfig看 MACVENDOR行路径下snpslmd是否存在且有执行权限INCREMENT行的到期日是否已过feature 名是否覆盖你要用的工具。常见做法是把 license 文件里所有INCREMENT行的 feature 名提取出来存一份清单grep -E ^(INCREMENT|FEATURE) synopsys.dat | awk {print $2} | sort -u feature_list.txt这份清单后面排查license request failed for feature时直接对照比翻文件快得多。3.2 启动脚本与 systemd 常驻配置生产环境不建议手工敲 lmgrd用 systemd 托管更稳。写一个 unit 文件[Unit] DescriptionSynopsys License Server Afternetwork.target [Service] Typeforking Usereda ExecStart/opt/synopsys/linux64/bin/lmgrd -c /opt/synopsys/license/synopsys.dat -l /var/log/snps.log ExecStop/opt/synopsys/linux64/bin/lmutil lmdown -c /opt/synopsys/license/synopsys.dat -q Restarton-failure [Install] WantedBymulti-user.targetTypeforking是因为 lmgrd 会 fork 出 snpslmd 后自身转入后台。ExecStop用lmdown优雅关闭直接 kill 进程可能导致 license 句柄未释放下次启动报端口占用。Restarton-failure让服务器异常退出后自动拉起。3.3 端口、防火墙与主机名解析的联动检查license 服务默认走 27000 端口客户端连不上十有八九是这三件事之一端口被防火墙拦、主机名解析不到、端口被别的进程占了。检查顺序# 端口是否在监听 ss -tlnp | grep 27000 # 从客户端测连通性 telnet eda-server 27000 # 主机名解析 getent hosts eda-server如果ss显示 lmgrd 没监听 27000看日志里是不是Failed to open the TCP port那通常是端口被占或权限不足低于 1024 的端口需要 root。主机名解析失败就在客户端/etc/hosts里补一条IP eda-server比改 DNS 快。3.4 多版本工具共存时的 license 合并策略一个团队往往同时用 VCS 多个版本、Verdi、DC、PTlicense 文件可能来自不同批次。合并时把多个文件的INCREMENT行汇总到一个文件SERVER和VENDOR行只保留一份。注意 feature 名冲突不同版本可能用同一个 feature 名但授权数不同合并后以先出现的为准容易导致高版本工具拿不到授权。稳妥做法是按工具分文件用SNPSLMD_LICENSE_FILE冒号分隔多个源export SNPSLMD_LICENSE_FILE27000eda-server:27001eda-server每个端口对应一个独立的 lmgrd 实例和 license 文件互不干扰。4. 典型报错逐条拆解与修复路径4.1 license request failed for feature 的定位流程这个报错后面通常跟 feature 名和错误码。定位三步第一步lmutil lmstat -f feature看服务器端该 feature 是否存在、是否被占满第二步核对客户端工具版本和 license 里该 feature 的版本号是否匹配license 里2026.12表示支持到该版本第三步看SNPSLMD_LICENSE_FILE是否指向了正确的服务器。如果lmstat显示 feature 存在且有空闲但客户端仍报错多半是客户端环境变量指向了另一台服务器。4.2 Cannot connect to license server 的网络层排查这个报错发生在客户端连不上 lmgrd。按网络分层查ping eda-server通不通telnet eda-server 27000端口通不通lmutil lmstat -c 27000eda-server能否握手。三层都通还报错检查客户端是否设了LM_LICENSE_FILE指向了错误地址或者SNPSLMD_LICENSE_FILE里有多个源其中一个是坏的。常见做法是临时只保留一个源测试export SNPSLMD_LICENSE_FILE27000eda-server vcs -full64 -ID-ID让 VCS 打印它实际用的 license 信息比猜快。4.3 snpslmd 启动失败与日志关键行解读lmgrd 起来了但 snpslmd 没起来日志里会有明确行。常见几类日志关键行含义处理Failed to open the TCP port端口被占换端口或杀占用进程Wrong hostid on SERVER lineMAC 不匹配改 license 或改网卡snpslmd: cannot execute路径错或无执行权限检查 VENDOR 行路径Expired license授权过期换新 licenseInvalid license key文件被篡改或格式错重新获取日志路径就是启动时-l指定的文件tail -f盯着看启动瞬间的错误最清楚。4.4 虚拟机克隆后 MAC 变化导致的授权失效虚拟机克隆是 license 失效的重灾区。克隆后新虚拟机网卡 MAC 变了但 license 文件里SERVER行还是旧 MAClmgrd 启动直接报Wrong hostid。两种处理一是把新虚拟机 MAC 改回旧的VMware 里编辑 vmx 文件ethernet0.address二是重新生成 license。前者快但多台克隆会冲突后者正规但需要重新走授权流程。临时应急可以在 license 文件里把SERVER行的 MAC 改成新机器的但要注意这属于本地调试手段正式环境还是走正规授权。5. 让 license 服务更稳的几个进阶技巧5.1 用 lmstat 做授权占用的定时巡检授权被占满往往发生在项目冲刺期与其等报错不如定时巡检。写个脚本每 10 分钟记录一次关键 feature 的占用#!/bin/bash # 巡检脚本输出到日志供后续分析 LMUTIL/opt/synopsys/linux64/bin/lmutil SERVER27000eda-server for feat in vcs_sim Verdi dc_shell pt_shell; do echo $(date) $feat $LMUTIL lmstat -c $SERVER -f $feat | grep -E Users of|Total of done /var/log/license_monitor.loggrep抓Users of和Total of两行前者看谁在用后者看总量和已用。跑一段时间后能看出哪个 feature 是瓶颈为加授权提供依据。5.2 授权超时释放与 timeout 参数调整FlexNet 默认在客户端异常退出后一段时间才释放授权这个时间由 license 文件里的TIMEOUT或工具自身的 heartbeat 决定。如果发现用户关了工具但授权没释放可以在 license 文件VENDOR行加TIMEOUT300单位秒让 snpslmd 更快回收。注意这个值设太小可能误杀正常但空闲的会话300 到 600 秒是常见区间。改完重启 lmgrd 生效。5.3 客户端侧减少 license 争抢的配置习惯除了服务器端客户端也有优化空间。VCS 编译时用-licqueue让工具在授权不足时排队等待而不是直接失败vcs -full64 -licqueue -f filelist.f -o simv-licqueue会阻塞直到拿到授权适合批量跑回归的场景。另外把不用的工具及时退出Verdi 这类图形工具常被开着不关占着 feature 不放。团队里约定用完即关比加授权省钱。5.4 授权文件到期前的平滑切换license 到期前一周就该准备新文件。切换时不要直接覆盖旧文件重启那样正在跑的任务会中断。做法是先把新文件放到另一个路径用新端口起第二个 lmgrd 实例客户端SNPSLMD_LICENSE_FILE同时指向新旧两个源等旧授权自然到期后再摘掉旧源。这样切换期间新旧任务都能跑不会因为一次重启打断整个团队的仿真。切换完成后记得把 systemd unit 里的路径更新避免下次重启又回到旧文件。本文还有配套的精品资源点击获取
返回列表