4. License配置与管理:License文件类型说明、环境变量设置方法、License服务器配置、License验证与故障排查

说到License,我估计不少刚入行的朋友都在这上面栽过跟头。其实说白了,License就是一把钥匙——没有它,Diamond软件连启动都别想。我自己刚用Diamond那会儿,就因为License配置不对,折腾了整整一个下午。嗯,今天咱们就把这块彻底讲清楚。

4.1 License文件类型说明

Lattice Diamond的License主要有两种形式,我分别说一下:

  • 节点锁定License(Node-Locked):绑定到一台电脑的MAC地址或硬盘序列号。适合个人使用,一台机器一个License。
  • 浮动License(Floating License):安装在服务器上,局域网内的多台客户端可以共享使用。适合团队协作,我之前的项目组就是用这种方式。

文件后缀通常是.lic.dat。你拿到License文件后,别急着双击——先拿记事本打开看看。里面会有一段类似这样的内容:

SERVER your_server_name 001122334455 27000
DAEMON lmgrd
FEATURE diamond_lic lmgrd 2024.12 31-dec-2024 5 \
    VENDOR_STRING=... HOSTID=ANY

注意看HOSTID字段。如果是节点锁定,这里会写你的MAC地址;如果是浮动License,一般是ANY。我在项目中遇到过有人拿浮动License当节点锁定的用,结果怎么都激活不了——其实就是没搞懂这个区别。

小提示:拿到License后,建议第一时间备份到U盘或云盘。我吃过这个亏——重装系统后找不到原文件,又得重新申请,耽误工期。

4.2 环境变量设置方法

环境变量是Diamond找到License的“导航仪”。设置不对,软件就报错。我个人习惯用两种方式:

方式一:设置LM_LICENSE_FILE变量

这是最通用的方法。在系统环境变量里新建一个:

  • 变量名:LM_LICENSE_FILE
  • 变量值:License文件的完整路径,比如C:\Lattice\license.dat

方式二:设置LICENSE_FILE变量

有些老版本Diamond认这个变量。我建议两个都设上,反正不冲突:

  • 变量名:LICENSE_FILE
  • 变量值:同上

设置完记得重启电脑,或者至少重启一下命令行窗口。我曾经犯过一个低级错误——设完变量没重启,直接打开Diamond,结果报错“找不到License”。嗯,这种坑踩过一次就记住了。

注意:如果你同时装了其他EDA工具(比如Quartus、Vivado),它们也可能用LM_LICENSE_FILE变量。这时候变量值里要用分号隔开多个路径,例如:C:\Lattice\license.dat;D:\Intel\license.dat

4.3 License服务器配置

浮动License需要配置服务器端和客户端。我简单说一下流程:

服务器端配置

  1. 把License文件放到服务器的一个固定目录,比如C:\Lattice\License\
  2. 安装Lattice自带的License管理工具lmgrd.exe(一般在Diamond安装目录下)
  3. 启动服务:lmgrd -c license.dat -l logfile.log
  4. 检查服务是否启动:lmstat -a

你想想看,服务器端其实就这几步。但要注意防火墙——端口27000默认用于License通信,如果被防火墙挡住了,客户端连不上。我遇到过一回,排查了半天才发现是防火墙的问题。

客户端配置

客户端不需要安装License文件,只需要设置环境变量指向服务器:

LM_LICENSE_FILE=27000@server_ip_address

比如服务器IP是192.168.1.100,就写成27000@192.168.1.100

核心要点:服务器端用lmgrd管理License,客户端用环境变量指向服务器。说白了就是“服务器管钥匙,客户端来借用”。

4.4 License验证与故障排查

配置完了怎么知道好不好使?我一般用这几个方法验证:

验证方法

  • 打开Diamond:如果能正常进入主界面,不弹License错误,基本就OK了。
  • 运行lmstat命令:在命令行输入lmstat -a,能看到License的详细信息,包括过期时间、已用数量等。
  • 查看Diamond的About页面:Help → About → License Information,这里会显示当前激活的License类型。

常见故障排查

我整理了几个高频问题,你遇到了可以直接对照:

错误现象 可能原因 解决办法
“Cannot find license file” 环境变量没设对,或路径写错了 检查LM_LICENSE_FILE变量值,确认路径存在
“License server does not support this feature” License文件不包含Diamond的feature 联系Lattice重新申请正确的License
“Unable to checkout license” 浮动License数量用完了 等别人释放License,或增加License数量
“Invalid host” 节点锁定License的MAC地址不匹配 检查本机MAC地址,重新申请License

我曾经遇到一个特别诡异的问题——Diamond能打开,但综合时报错“License check failed”。后来发现是License文件里少了一个diamond_syn的feature。说白了,License也分模块,不是所有功能都包含在一个文件里。所以申请License时,一定要说清楚你需要哪些功能。

避坑指南:如果你用的是虚拟机,节点锁定License可能会失效。因为虚拟机的MAC地址有时会变。我建议浮动License或者用物理机。

知识体系总览

下面这张图把License配置与管理的核心逻辑串起来了,你可以对照着看:

License配置与管理知识体系 License配置与管理 License文件类型 • 节点锁定(单机) • 浮动(服务器共享) • .lic / .dat 后缀 环境变量设置 • LM_LICENSE_FILE • LICENSE_FILE • 路径或端口@IP 服务器配置 • lmgrd启动服务 • 防火墙端口27000 • 客户端指向服务器 验证与故障排查 • lmstat -a 检查 • About页面查看 • 常见错误对照表 核心原则: 文件放对位置 → 变量指对路径 → 服务正常启动 → 验证通过

这张图把License配置的四个环节串起来了。你从文件类型入手,然后设置环境变量,再配置服务器(如果是浮动License),最后验证。每一步都走通了,Diamond就能正常工作了。


好了,License这块就讲这么多。配置这东西,说白了就是细心——路径别写错,变量名别拼错,防火墙别挡住。你按上面的步骤走一遍,基本不会出问题。如果真遇到报错,也别慌,对照表格排查,八成能解决。