跳转至

FlexLM_License_Server_全量实战手册

上传件:FlexLM_License_Server_全量实战手册.md(原文件可下载)。

前言

FlexLM 是 Flexera Software 推出的业界通用许可证管理系统,广泛应用于 EDA、CAE、CAD 等商用工程软件的授权管控,支持 ** 浮动授权(Floating Mode)和节点锁定授权(Node-Locked Mode)** 两大核心模式,可满足单机、集群、分布式部署等不同场景的授权需求。

本手册为全量实战版,整合 FlexLM 核心工作原理、标准化 IT 部署、服务管理、许可证配置、高可用方案、混合授权架构,以及Floating License 精细化访问限制策略,从基础部署到高阶管控形成完整落地体系,为企业级 License Server 的搭建、运维、优化提供标准化、可落地的最佳实践,适配 Synopsys、Cadence、Mentor、Keysight、华大九天等主流 EDA 厂商工具。

一 FlexLM 核心工作原理

FlexLM 以许可证文件(lic file)*为核心做授权校验,通过服务端守护进程与客户端内置模块的交互实现授权管控,两种授权模式校验逻辑一致,部署形态与适用场景差异显著,其中*浮动模式为企业集群核心部署方式,也是本手册重点讲解对象。

1.1 浮动模式(Floating Mode)

适用场景:集群化环境、多终端共享授权、企业级批量部署,支持授权数量动态分配与复用

架构形态:典型 C/S(客户端 / 服务端)架构

  • 服务端:由lmgrd(主守护进程)+ Vendor daemon(厂商专属子进程)组成,是授权校验的核心
  • 客户端:各类 EDA / 工程工具的内置许可证模块,负责与服务端交互完成授权申请与校验
1.1.1 服务端启动验证流程
  1. lmgrd进程启动,通过启动参数-c指定路径查找许可证文件,文件不存在则直接退出;
  2. 校验 lic 文件中SERVER行的网卡 MAC 地址与服务器实际网卡 MAC 一致性,不一致则退出;
  3. 校验服务器当前系统时间与 lic 文件中授权过期时间,许可证过期则退出;
  4. 校验 lic 文件中Feature行的加密签名字段与明文信息(feature name、expired date、count、mac 等)匹配性,匹配则该功能模块授权有效,不匹配则标记为invalid license key并禁用;
  5. 所有校验通过后,lmgrd正式启动,同时调用对应厂商的Vendor daemon作为子进程启动,等待客户端连接。
1.1.2 客户端授权校验流程
  1. EDA Tools 启动,通过厂商专属环境变量(生产环境禁用通用变量)查找许可证服务端信息;
  2. 客户端以PORT@HOST格式与服务端lmgrd建立 TCP 连接,告知需访问的厂商Vendor daemon;
  3. lmgrd返回该Vendor daemon的通信 TCP 端口(lic 文件DAEMON行定义,无定义则随机分配合法端口);
  4. 客户端与Vendor daemon建立专属连接,提交许可证申请;
  5. Vendor daemon校验当前该功能模块的可用授权数量,有可用授权则完成分配,无则拒绝申请;
  6. 客户端许可证模块根据授权结果启动 / 终止工具,获权后正常运行,未获权则直接退出。

1.2 节点锁定模式(Node-Locked Mode)

适用场景:单工作站专属授权、个人研发终端、无需共享的独立使用场景

架构形态:无服务端进程,单机本地校验,许可证直接绑定终端网卡 MAC 地址,仅限授权节点使用

1.2.1 单机验证流程

  1. EDA Tools 启动,通过厂商专属环境变量查找本地许可证文件,文件不存在则退出;
  2. 校验系统当前时间与 lic 文件的过期时间,许可证过期则退出;
  3. 校验 lic 文件Feature行的加密签名字段与明文信息(feature name、expired date、count、本地 MAC)匹配性,匹配则该功能模块有效;若所有功能模块均不匹配则退出,部分匹配则仅启动有效模块。

1.3 两种模式核心差异

对比维度 浮动模式(Floating Mode) 节点锁定模式(Node-Locked Mode)
架构形态 C/S 架构,需部署 License Server 单机架构,无服务端进程
授权绑定 绑定 License Server 的 MAC 和端口 绑定客户端单机的 MAC 地址
访问方式 网络访问,需保证客户端与服务端网络连通 本地访问,无需网络
授权复用 支持多客户端共享授权数量,动态分配 仅限授权单机使用,无复用性
运维成本 需维护 License Server 的可用性、网络策略 无服务端运维成本,仅需管理本地 lic 文件
适用场景 企业集群、多终端共享、批量部署 个人单机、独立研发、专属授权

二 、IT 部署标准化要求

为保证 FlexLM License Server 的稳定性、兼容性和安全性,结合行业最佳实践制定以下标准化部署要求,CentOS 7 64bit为核心推荐系统,严格禁用非兼容系统与非标准配置,所有配置均经过主流 EDA 工具兼容性验证。

2.1 基础环境配置

  1. 网卡配置

:网卡名称统一修改为

eth0

  • 老版本 FlexLM 默认写死认证网卡名称为eth0,无法自定义;
  • 新版虽支持自定义网卡名称,但为兼容多版本 EDA 工具与 FlexLM,强制统一为eth0。

  • 操作系统

:CentOS 7 64bit

(唯一推荐)

  • 经全量 EDA 工具兼容性验证,为企业级部署最佳实践;
  • 严格禁用 Ubuntu、Debian 等非 RHEL 系系统,存在库文件、进程管理兼容性问题。

  • 权限控制

:禁用 NIS/LDAP 验证

  • 从安全角度出发,License Server 仅允许 IT 管理员直接登录;
  • 禁止普通研发用户、业务用户拥有服务器登录权限,防止误操作导致服务中断。

2.2 存储与挂载策略

采用分级挂载策略,根据安全要求分为默认模式和严格模式,核心原则为最小权限挂载,禁止无关目录挂载,防止许可证文件被篡改、删除。

  • 默认模式:仅通过 NFS 挂载software目录(存放 EDA 工具、FlexLM 程序),不挂载其他目录;
  • 严格模式:仅通过 NFS 挂载lic目录(存放许可证文件、日志文件、配置文件),不挂载其他目录;
  • 通用禁忌:禁止将lic目录与普通业务目录混合挂载。

2.3 网络与防火墙策略

License Server 为企业核心授权资源,禁止外网访问,仅对内部业务区(HPC 区)开放,分默认模式和严格模式管控,核心为端口级精准放行。

  • 默认模式:仅对企业内部 HPC 区开放 License Server 的 IP 地址,禁止其他网段访问;
  • 严格模式:仅放行lmgrd和Vendor daemon的专属 TCP 通信端口到 HPC 区,其他端口全部禁用;
  • 核心要求:防火墙策略需配置入站规则,仅允许 HPC 区的 IP 段发起连接,拒绝所有非授权网段的连接请求。

2.4 硬件与机型配置

License Server 对硬件资源要求较低,优先采用虚拟机部署(本地 / 云上均可),满足可靠性需求时需做高可用(HA)配置,硬件配置参考 FlexNetLicensingEndUserGuide.pdf 第 8 章(P67-P70)。

  1. 基础硬件配置:2Core CPU + 4GB Memory,满足常规集群授权需求;
  2. 部署形态:优先使用虚拟机,便于资源弹性调整、快照备份与 HA 漂移;
  3. 运行要求:服务器需7*24 小时常开,禁止随意关机、重启;
  4. 高可用要求:企业级核心业务场景,需部署 HA 方案,防止单点故障导致授权服务中断。

三 License Server 服务管理

3.1 核心程序说明

FlexLM 的核心程序为lmgrd,不同 EDA 厂商的lmgrd版本不可混用,存在厂商专属的协议与库文件依赖,程序获取方式分两类:

  1. Synopsys:lmgrd单独提供,组件名为scl,需从 Synopsys 官方获取对应版本;
  2. Cadence/Mentor/Keysight/ 华大九天:lmgrd整合在 EDA 工具安装包中,可从工具的lic/license目录中单独提取。

3.2 服务启动命令

3.2.1 基础启动命令
# 以Synopsys为例,通用格式:lmgrd -c 许可证文件路径 -l 日志文件路径
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
3.2.2 核心启动参数

lmgrd的启动参数大小写敏感,核心必选参数如下,其他参数参考官方文档:

参数 功能说明 必选 / 可选
-c 指定许可证文件(lic file)的路径 / 列表 必选
-l 指定调试日志(debug log)的存储路径 必选
-v 查看lmgrd的版本信息 可选
-o 指定访问限制策略配置文件(option file)路径 可选(精细化配置时使用)

3.3 服务自启动配置

为保证 License Server 重启后服务自动恢复,将启动命令添加至系统自启动脚本/etc/rc.local,并赋予脚本执行权限。

# 1. 编辑rc.local文件
vi /etc/rc.local
# 2. 添加启动命令(末尾行,以Synopsys为例)
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
# 3. 赋予执行权限
chmod +x /etc/rc.local

3.4 依赖库与系统组件

lmgrd运行依赖 Linux 系统核心库文件,需保证所有依赖库存在且版本兼容,同时安装redhat-lsb.x86_64组件(Linux Standard Base)。

3.4.1 核心依赖库文件
Linux-vdso.so.1
libpthread.so.0 => /lib64/libpthread.so.0
libm.so.6 => /lib64/libm.so.6
libgcc_s.so.1 => /lib64/libgcc_s.so.1
libc.so.6 => /lib64/libc.so.6
libdl.so.2 => /lib64/libdl.so.2
/lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2
3.4.2 系统组件安装
# 安装redhat-lsb.x86_64
yum install -y redhat-lsb.x86_64

3.5 进程状态检查

服务启动后,需验证lmgrd和对应Vendor daemon进程是否正常运行,避免进程启动失败导致授权服务不可用

# 检查lmgrd进程
ps -ef | grep lmgrd | grep -v grep
# 检查Vendor daemon进程(以Synopsys的snpslmd为例)
ps -ef | grep snpslmd | grep -v grep
# 检查端口监听状态(以lmgrd端口27000为例)
netstat -tulnp | grep 27000
# 或使用ss命令(CentOS 7推荐)
ss -tulnp | grep 27000

3.6 服务重启方案

服务配置修改后(如 lic 文件、option file),需重启lmgrd和Vendor daemon进程使配置生效,支持脚本重启(推荐)*和*手动重启(应急)。

3.6.1 脚本重启(推荐,避免进程残留)
#!/bin/bash
# 重启脚本(以Synopsys snpslmd为例),保存为restart_lic.sh,赋予执行权限chmod +x restart_lic.sh
# 1. 查询snpslmd进程PID(适配多空格分隔,awk更稳定)
export PID=`ps -ef | grep snpslmd | grep -v grep | head -n 1 | awk '{print $2}'`
# 2. 查杀进程
if [ -n "$PID" ]; then
    echo "Synopsys license process ID is $PID , kill it!"
    kill -9 $PID
else
    echo "No Synopsys license process running!"
fi
# 3. 等待60秒,确保进程完全退出
sleep 60
# 4. 重启lmgrd服务(指定lic文件和日志文件)
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
# 5. 验证重启后进程状态
export NEW_PID=`ps -ef | grep snpslmd | grep -v grep | head -n 1 | awk '{print $2}'`
if [ -n "$NEW_PID" ]; then
    echo "Synopsys license process restart success! New PID is $NEW_PID"
else
    echo "Synopsys license process restart failed!"
fi
3.6.2 手动重启(应急使用)
# 1. 查杀lmgrd进程
kill -9 `ps -ef | grep lmgrd | grep -v grep | awk '{print $2}'`
# 2. 查杀Vendor daemon进程(如snpslmd)
kill -9 `ps -ef | grep snpslmd | grep -v grep | awk '{print $2}'`
# 3. 等待30秒,确保进程退出
sleep 30
# 4. 重启lmgrd
/xxx/lmgrd -c /xxx/xxx.dat -l /xxx/xxx.log

四 许可证核心配置解读

4.1 常用许可证环境变量

环境变量是客户端查找许可证服务端 / 本地文件的核心,分通用环境变量和厂商专属环境变量,生产环境严格禁用通用变量,防止多厂商工具授权校验混乱。

4.1.1 配置规则
  • 浮动授权:格式为setenv 环境变量名 PORT@IP[:PORT@IP](主从备份用冒号分隔多个服务端);
  • 节点锁定授权:格式为setenv 环境变量名 许可证文件绝对路径;
  • 生效范围:建议在用户环境变量脚本(如~/.cshrc)或工具启动脚本中配置,保证仅对目标工具生效。
4.1.2 主流厂商环境变量配置示例
# 通用变量(仅技术测试使用,生产环境禁用!!!)
# setenv LM_LICENSE_FILE 27000@10.10.1.185

# Cadence
setenv CDS_LICENSE_FILE /fastone/software/lic/cadence.dat
setenv CDS_LIC_FILE /fastone/software/lic/cadence.dat

# Cliosoft SOS
setenv CLIOLMD_LICENSE_FILE 5217@10.10.1.185:5217@10.10.1.209

# Mentor
setenv MGLS_LICENSE_FILE /fastone/software/lic/calibre_Nodelocked.dat:27001@10.10.1.185

# Xilinx
setenv XILINXD_LICENSE_FILE /fastone/software/lic/xilinx_ise_vivado.lic

# Synopsys(主从备份配置示例)
setenv SNPSLMD_LICENSE_FILE 27000@10.10.1.185:27000@10.10.1.209

# Keysight & ADS
setenv ADS_LICENSE_FILE 27009@10.10.1.209
setenv ICCAP_LICENSE_FILE 5277@10.10.1.185

# Sonnet
setenv SONNETD_LICENSE_FILE 27002@10.10.1.185

# Ansys
setenv APACHEDA_LICENSE_FILE 27004@10.10.1.209
setenv ANSYSLMD_LICENSE_FILE /fastone/software/lic/ansyslmd.lic
4.1.3 核心禁忌

通用环境变量LM_LICENSE_FILE为所有 FlexLM 验证机制的软件共用,正式生产环境禁止使用:

  • 多厂商工具同时使用该变量时,会导致授权校验混乱;
  • 引发 EDA Tools 启动缓慢、授权校验失败、工具异常退出等问题

4.2 许可证文件(lic file)结构解读

许可证文件是 FlexLM 授权的核心,为明文 + 加密混合格式,包含SERVER、DAEMON/VENDOR、Feature三大核心段,部分字段不可修改,修改后会导致授权失效。

4.2.1 典型文件示例
# SERVER段:服务器基础信息
SERVER lic-1 00163e1b40a7 27000
# VENDOR段:厂商守护进程信息(Synopsys为snpslmd,Cadence为cdslimd等)
VENDOR snpslmd /opt/lic/bin/scl/2018.06-SP1/linux64/bin/snpslmd \
options=/opt/lic/option_exclude \
USER_SERVER
# Feature段:具体功能模块授权信息(核心加密段)
Feature hspice_adv snpslmd 2019.2019 30-jun-2029 254 \
 VENDOR_STRING=^1+S&PID=9b530424& SUPERSEDE ISSUED=01-apr-2004 \
 ck=216 SN=RK:2671-0:167603:0 START=01-apr-2004 AUTH={ snpslmd=( \
 LK=9F90391C24EB87215394) }

4.2.2 各段详细说明

  1. SERVER 段

:定义 License Server 基础信息,格式

SERVER 主机名 MAC地址 lmgrd端口

  • 可修改字段:主机名、lmgrd 通信端口(服务器变更后同步修改即可);
  • 不可修改字段:网卡 MAC 地址(修改后授权失效,需重新申请许可证)。

  • VENDOR/DAEMON 段

:定义厂商专属守护进程信息,格式

VENDOR/DAEMON 厂商daemon名称 进程路径 [端口/配置]

  • 必配项:厂商 daemon 名称、进程绝对路径;
  • 可配置项:通信端口(无定义则系统随机分配)、options=(关联访问限制配置文件)、USER_SERVER(强制服务端校验);
  • 换行标识:行尾加\,下一行继续书写,空格为分隔符。

  • Feature 段

:定义具体功能模块的授权信息,为核心加密段

  • 明文信息:feature 名称、厂商 daemon、授权版本、过期时间、授权数量(count);
  • 加密字段:ck、SN、AUTH等,由明文信息 + SERVER 段 MAC 加密生成;
  • 不可修改字段:所有字段均不可修改,任意修改会导致加密校验失败,标记为invalid license key。
4.2.3 关键关键字说明(VENDOR 段)
关键字 配置格式 功能说明
options= options = 绝对路径 关联访问限制配置文件(option file),精细化管控时必配,必须为绝对路径
USER_SERVER 单独占行 / 行尾 强制 EDA Tools 客户端通过 License Server 做浮动授权校验,禁止本地节点锁定校验

4.3 许可证调试日志(debug log)解读

调试日志由lmgrd启动参数-l指定,记录 License Server 的启动状态、进程信息、端口监听、配置加载、客户端访问、授权签出 / 归还、拒绝事件等所有核心信息,是故障排查和配置验证的唯一核心依据。

4.3.1 核心日志内容

  1. lmgrd 进程信息:启动时间、版本、PID、监听端口、启动命令;
  2. Vendor daemon 进程信息:启动时间、版本、PID、通信端口、支持的 feature 列表;
  3. 配置加载信息:option file 路径、访问限制规则、lic 文件完整性校验结果;
  4. 许可证校验信息:授权有效性校验、站点信息(Siteid)、服务器 MAC;
  5. 客户端访问信息:客户端 IP / 用户名、授权申请的 feature 名称、请求处理时间;
  6. 授权状态信息:授权签出(OUT)/ 归还(IN)记录、当前可用授权数量;
  7. 拒绝事件信息:非授权访问的拒绝记录、错误码、拒绝原因。
4.3.2 关键日志标识
标识 含义 核心说明
OUT: "feature名" 用户名@客户端节点 授权签出 License Server 的授权数量count-1,客户端获权使用
IN: "feature名" 用户名@客户端节点 授权归还 License Server 的授权数量count+1,客户端释放授权
[]内唯一标识 签出 / 归还关联标识 一次完整的签出 - 归还循环为同一个标识,用于追溯单次授权
Using options file: 路径 加载访问限制配置 表示成功关联 option file,精细化管控规则已加载
EXCLUDE XXX from XXX 加载拒绝规则 逐一打印 option file 中的所有访问限制规则
DENIED: "feature名" 用户名@节点 授权拒绝事件 触发访问限制规则,非授权访问被拒绝,附带错误码 (-38,348)
invalid license key 许可证密钥无效 Feature 段加密校验失败,该功能模块授权禁用
4.3.3 核心日志查看命令
# 实时跟踪日志(核心运维命令)
tail -f /fastone/software/lic/synopsys.log
# 查找option file加载信息
grep "Options file used" /fastone/software/lic/synopsys.log
# 查找所有访问限制规则加载信息
grep "EXCLUDE" /fastone/software/lic/synopsys.log
# 查找所有授权拒绝事件(核心排查命令)
grep "DENIED" /fastone/software/lic/synopsys.log
# 查找指定Feature的拒绝事件
grep "DENIED: VCSRuntime_Net" /fastone/software/lic/synopsys.log
# 查找授权签出/归还记录
grep -E "OUT:|IN:" /fastone/software/lic/synopsys.log
# 查找错误信息
grep -i "error|invalid|fail" /fastone/software/lic/synopsys.log

五 Floating License 精细化访问限制策略(核心高阶配置)

本策略仅对 Floating Mode 生效,对 Node-Locked Mode 无任何限制作用,通过编写option file定义访问规则,实现对指定 Feature、主机、用户、IP 段的许可证校验拒绝控制,精准管控 Floating License 的使用范围,杜绝非授权节点 / 用户占用授权资源,是企业集群 License 管控的核心配置。

5.1 核心配置原理

FlexLM 的访问限制通过 「规则配置文件(option file)+ 许可证文件(lic file)关联」 实现,核心逻辑为:

  1. 在option file中定义拒绝规则(如拒绝某主机 / 用户访问某 Feature);
  2. 在 lic 文件的VENDOR段中通过options=指定option file的绝对路径,建立策略关联;
  3. 添加USER_SERVER关键字强制服务端校验,禁止客户端本地校验;
  4. 重启 lmgrd 和 Vendor daemon 进程,使规则加载生效;
  5. 许可证校验时,Vendor daemon 会根据option file规则过滤请求,拒绝非授权访问并记录日志。

5.2 Step1:编写 Option File 访问规则

option file是纯文本配置文件,通过分组关键字 + 拒绝关键字组合定义规则,支持单对象 / 组对象、单 IP/IP 段的精细化限制,配置前需规划好需限制的 Feature、目标主机 / 用户 / IP,配置文件建议命名为option_exclude,存放于lic目录(如/opt/lic/)。

5.2.1 核心关键字说明

分为分组关键字(批量定义对象,减少重复配置)和匹配关键字(单对象定义),所有关键字大小写敏感,需严格按语法书写

关键字 类型 功能说明
HOST_GROUP 分组关键字 将多个主机名(hostname)定义为一个主机组,便于批量限制(如登录节点组 LOGIN)
USER_GROUP 分组关键字 将多个用户名定义为一个用户组,便于批量限制(如普通用户组 ANA)
HOST 匹配关键字 指定单个主机名,精准限制某一台节点
USER 匹配关键字 指定单个用户名,精准限制某一个用户
INTERNET 匹配关键字 指定单个 IP/IP 段(支持通配符*),限制某一 IP 段的节点访问
EXCLUDE 核心关键字 拒绝规则标识,后接需限制的 Feature 和目标对象,为所有规则的起始标识
5.2.2 标准配置语法

所有规则均以EXCLUDE开头,后接Feature 名称 + 匹配类型 + 目标对象,空格为分隔符,不可省略,一行定义一条规则,先分组后定义规则便于管理

# 基础语法
EXCLUDE <feature_name> HOST <hostname>               # 拒绝单个主机访问指定Feature
EXCLUDE <feature_name> HOST_GROUP <host_group_name>  # 拒绝主机组中所有主机访问指定Feature
EXCLUDE <feature_name> USER <user_name>              # 拒绝单个用户访问指定Feature
EXCLUDE <feature_name> USER_GROUP <user_group_name>  # 拒绝用户组中所有用户访问指定Feature
EXCLUDE <feature_name> INTERNET <IP_ADDR/*>          # 拒绝指定IP/IP段访问指定Feature(支持*通配符)
5.2.3 完整配置示例
# 保存为/opt/lic/option_exclude,纯文本无后缀
# 1. 定义主机组:将login-1/2/3/4登录节点划分为LOGIN组,批量限制
HOST_GROUP LOGIN login-1 login-2 login-3 login-4
# 2. 定义用户组:将user1/2/3/4划分为ANA组,批量限制
USER_GROUP ANA user1 user2 user3 user4
# 3. 拒绝单个IP访问VCSCompiler_Net
EXCLUDE VCSCompiler_Net INTERNET 10.100.100.16
# 4. 拒绝10.100.100.*段所有IP访问VCSRuntime_Net(通配符*适配IP段)
EXCLUDE VCSRuntime_Net INTERNET 10.100.100.*
# 5. 拒绝LOGIN主机组所有节点访问VCSCompiler_Net(批量限制)
EXCLUDE VCSCompiler_Net HOST_GROUP LOGIN
# 6. 拒绝LOGIN主机组所有节点访问VCSRuntime_Net(批量限制)
EXCLUDE VCSRuntime_Net HOST_GROUP LOGIN
# 7. 拒绝单个主机login-3访问VCSCompiler_Net(精准补充限制)
EXCLUDE VCSCompiler_Net HOST login-3
# 8. 拒绝单个主机login-3访问VCSRuntime_Net(精准补充限制)
EXCLUDE VCSRuntime_Net HOST login-3
# 9. 拒绝单个用户user1访问VCSRuntime_Net
EXCLUDE VCSRuntime_Net USER user1
# 10. 拒绝ANA用户组所有用户访问VCSRuntime_Net(批量限制)
EXCLUDE VCSRuntime_Net USER_GROUP ANA
# 11. 按用户设置最大并发数(MAX、MAX_INSTANCES)单用户最多 2 个 Innovus、3 个 VCS
MAX 2 pnr_tool user1
MAX_INSTANCES 5 vcs_user user*
# License 超时与自动回收(TIMEOUT、TIMEOUTALL)
TIMEOUT 3600 feature_name
TIMEOUTALL 7200
5.2.4 配置规范
  1. 配置文件无后缀,建议命名为option_xxx(如option_exclude),便于识别;
  2. 路径建议与 lic 文件同目录,且为绝对路径,避免路径映射问题;
  3. 注释用#开头,单独占行,不可与规则同行;
  4. Feature 名称需与 lic 文件中Feature段的名称完全一致(大小写敏感);
  5. 主机名 / 用户名 / IP 需与实际环境一致(通过hostname/whoami/ifconfig验证),避免拼写错误导致规则失效;
  6. 优先分组定义规则,减少重复配置,便于后期维护

5.3 Step2:修改 License File 关联策略

完成option file编写后,需在lic 文件的VENDOR段中添加配置,此步骤为规则生效的核心关联环节,修改后需保存 lic 文件,确保无语法错误。

5.3.1 核心修改要求
  1. 必须在VENDOR行中指定Vendor daemon 进程的绝对路径;
  2. 通过options=指定option file的绝对路径,路径需与实际存放位置一致;
  3. 行尾添加USER_SERVER关键字,强制客户端通过服务端校验,禁止客户端本地节点锁定校验;
  4. 换行用\标识(行尾加\,下一行继续书写),空格为分隔符,无多余空格。
5.3.2 完整配置示例(以 Synopsys 为例)
# SERVER段:保持原有配置不变,无需修改
SERVER lic-1 00163e1b40a7 27000
# VENDOR段:核心修改,关联option file并强制服务端校验
VENDOR snpslmd /opt/lic/bin/scl/2018.06-SP1/linux64/bin/snpslmd \
options=/opt/lic/option_exclude \
USER_SERVER
# Feature段:保持原有配置不变,无需修改
Feature hspice_adv snpslmd 2019.2019 30-jun-2029 254 \
 VENDOR_STRING=^1+S&PID=9b530424& SUPERSEDE ISSUED=01-apr-2004 \
 ck=216 SN=RK:2671-0:167603:0 START=01-apr-2004 AUTH={ snpslmd=( \
 LK=9F90391C24EB87215394) }

option file和 lic 文件修改后,必须重启 lmgrd 和 Vendor daemon 进程,规则才能被加载生效,重启后通过查看 debug log 验证配置是否生效,分为规则加载验证和拒绝事件验证

5.3.3 规则加载验证(启动日志)

重启服务后,日志中会打印已加载的 option file 路径和所有 EXCLUDE 规则,表示规则已成功加载,示例如下:

# 核心验证:option file路径正确
15:21:15 (snpslmd) (@snpslmd-SLOG@) Options file used:/opt/lic/option_exclude
# 所有拒绝规则逐一加载,无缺失
15:21:13 (snpslmd) EXCLUDE Internet Address 10.100.100.16 from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST GROUP LOGIN from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST Login-3 from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST_GROUP LOGIN from VCSRuntime_Net
5.3.4 拒绝事件验证(访问日志)

当非授权节点 / 用户发起许可证校验请求时,日志中会记录拒绝事件,核心关键字为DENIED,并附带标准错误码(-38,348),表示规则已生效并触发,示例如下:

# 拒绝login-3节点的fuyunlong用户访问VCSCompiler_Net
15:22:42 (snpslmd) DENIED: "VCSCompiler_Net" fuyunlong@login-3 [snps_checkout_1713252162] (User/host on EXCLUDE List for feature.(-38,348))
# 拒绝login-2节点的wangxs用户访问VCSRuntime_Net
16:35:41 (snpslmd) DENIED: "VCSRuntime_Net" wangxs@Login-2 [snps_checkout_1713256541] (User/host on EXCLUDE List for feature.(-38,348))

日志字段解读:DENIED: "Feature名" 用户名@主机名 [校验唯一标识] (拒绝原因+标准错误码)

六 高可用(HA)方案

为避免 License Server 单点故障导致企业级 EDA 工具无法使用,FlexLM 的 HA 方案采用双层架构实现,分别在IT 基础设施层和业务层做高可用配置,核心为主从备份、自动切换,保证授权服务 7*24 小时可用。

6.1 IT 基础设施层实现

核心方案:基于 Vmotion 的虚拟机漂移方案(VMware 虚拟化环境)

实现原理:将 License Server 部署在 VMware 虚拟化集群中,通过 Vmotion 和 Storage Vmotion 实现:

  1. 物理服务器故障时,License Server 虚拟机自动漂移至健康的物理节点;

  2. 存储故障时,虚拟机存储自动漂移至健康的存储设备;

核心优势

:无业务层改造,实现底层硬件 / 存储的无感知故障切换,保证 License Server 的基础运行环境可用。

6.2 业务层实现

为避免 License Server 单点故障导致企业级 EDA 工具无法使用,FlexLM 的 HA 方案采用双层架构实现,分别在IT 基础设施层和业务层做高可用配置,核心为主从备份、自动切换,保证授权服务 7*24 小时可用。

6.1 IT 基础设施层实现

核心方案:双 License Server 主从备份,客户端环境变量配置多服务端地址,实现自动故障切换

实现原理:

  1. 部署两台配置完全一致的 License Server(主 / 从),均配置相同的 lic 文件、option file、进程、网络策略;
  2. 客户端环境变量中配置两个服务端地址(PORT1@HOST1:PORT2@HOST2),用冒号分隔;
  3. 客户端优先连接主服务端(HOST1),连接失败 / 无响应时,自动切换至从服务端(HOST2);
  4. 双服务端均失败时,客户端授权校验失败,EDA Tools 退出。

6.2 业务层实现

核心方案:双 License Server 主从备份,客户端环境变量配置多服务端地址,实现自动故障切换

实现原理:

  1. 部署两台配置完全一致的 License Server(主 / 从),均配置相同的 lic 文件、option file、进程、网络策略;
  2. 客户端环境变量中配置两个服务端地址(PORT1@HOST1:PORT2@HOST2),用冒号分隔;
  3. 客户端优先连接主服务端(HOST1),连接失败 / 无响应时,自动切换至从服务端(HOST2);
  4. 双服务端均失败时,客户端授权校验失败,EDA Tools 退出。
6.2.1 客户端配置示例
# Synopsys双服务端配置(主:27000@10.10.1.185,从:27000@10.10.1.209)
setenv SNPSLMD_LICENSE_FILE 27000@10.10.1.185:27000@10.10.1.209
# Cadence双服务端配置(主:5280@172.16.1.156,从:5280@172.16.1.109)
setenv CDS_LICENSE_FILE 5280@172.16.1.156:5280@172.16.1.109
6.2.2 核心要求
  1. 主 / 从 License Server 的lic 文件、option file 完全一致,保证授权信息和访问规则相同;
  2. 双服务端的网络策略、硬件配置、系统环境完全一致,均对 HPC 区开放相同端口;
  3. 双服务端均配置7*24 小时运行和自启动脚本,防止单端重启导致切换失败;
  4. 双服务端的 Vendor daemon 进程端口建议统一,便于客户端配置。

七 混合许可证系统架构(商业 lic + 内部 lic)

企业场景中常存在商业许可证(商用 EDA 工具)*和*内部许可证(自研工具)*混合使用的需求,**核心禁忌为禁止商业版与内部版工具互相校验许可证**,会导致授权混乱、工具崩溃、许可证失效等严重问题,推荐两种架构方案,按*安全优先级选择。

7.1 方案一:独立集群方案(推荐,安全优先)

核心原则:环境完全隔离,商业 lic 和内部 lic 部署在两套独立的集群中,互不可访问,仅共享研发数据目录,从底层杜绝互访风险。

7.1.1 隔离配置要求

  1. License Server 隔离:部署两套独立的 License Server,分别管控商业 lic 和内部 lic,服务器之间禁止网络互通;
  2. EDA 工具隔离:商业 EDA 工具和自研工具存放在独立的 NFS 文件夹,分别挂载,禁止混合存放;
  3. 集群隔离:部署两套独立的计算集群,分别运行商业工具和自研工具,集群之间禁止网络互通;
  4. 数据共享:仅研发数据目录(如/fastone/projects)可跨集群挂载,保证研发数据的统一性。

7.1.2 核心优势与缺点

  • 优势:最大限度避免人为失误导致的许可证互访,彻底杜绝商业 / 内部工具的授权冲突,安全性最高,运维排查简单;
  • 缺点:需部署两套独立的硬件集群和 License Server,资源开销大,运维成本稍高。

7.2 方案二:环境变量隔离方案(成本优先)

核心原则:一套硬件集群,环境变量严格隔离,通过专属的环境变量脚本实现商业 / 内部 lic 的访问隔离,节省硬件资源。

7.2.1 隔离配置要求
  1. License Server 部署:部署两台独立的 License Server(商业 / 内部),同集群内网络可达;
  2. 环境变量脚本隔离:编写两套专属的环境变量初始化脚本(如cshinit_commercial、cshinit_internal),分别配置商业 / 内部工具的许可证环境变量;
  3. 工具启动隔离:运行商业工具前执行source cshinit_commercial,运行自研工具前执行source cshinit_internal,禁止同时执行两套脚本;
  4. 运维管控:制定严格的运维规范,禁止研发 / 运维人员随意修改环境变量,防止隔离失效。
7.2.2 核心优势与缺点
  • 优势:仅需一套硬件集群,节省硬件资源和部署成本,运维操作集中;
  • 缺点:对 IT-CAD 运维人员和研发人员的专业能力要求极高,环境变量配置失误易导致隔离失效,存在授权冲突风险,排查难度大

八 故障排查核心思路与常见问题解决

FlexLM 的故障主要分为客户端故障、服务端故障、精细化配置故障,排查核心原则为先客户端后服务端、先基础配置后网络、先日志后进程,结合 FlexLM ErrorCode 手册(FlexNetLicensingEndUserGuide.pdf 第 20 章 P231-P242)快速定位问题,debug log 是所有故障排查的核心依据。

8.1 通用故障排查流程

  1. 定位故障节点:确认是单个客户端故障、部分客户端故障,还是全量客户端故障(全量故障大概率为服务端问题);
  2. 检查基础配置:客户端环境变量、服务端进程状态、lic 文件路径 / 完整性;
  3. 检查网络连通性:客户端与服务端的 IP / 端口可达性(ping/telnet 测试);
  4. 分析 debug log:客户端工具日志、服务端 FlexLM debug log,查找错误关键字 / 错误码;
  5. 验证配置有效性:lic 文件 MAC / 时间 / 加密字段、option file 规则拼写、路径正确性;
  6. 重启服务验证:配置修改后重启服务,确认故障是否解决。

8.2 客户端常见故障与解决

故障现象 常见原因 解决方法
EDA Tools 启动提示无可用授权 1. 环境变量配置错误;2. 客户端无访问服务端端口权限;3. 授权数量被占满 1. 核对厂商专属环境变量,禁用通用变量;2. 测试端口连通性,开放防火墙;3. 查看服务端 OUT 记录,释放闲置授权
工具启动缓慢,卡在 license check 1. 生产环境使用了 LM_LICENSE_FILE 通用变量;2. 服务端网络延迟高 1. 删除通用变量,配置厂商专属变量;2. 检查网络链路,优化网络策略
提示 license key invalid 1. 本地 lic 文件被篡改;2. 客户端误做本地节点锁定校验 1. 替换为原始 lic 文件;2. 服务端添加 USER_SERVER,强制服务端校验

8.3 服务端常见故障与解决

故障现象 常见原因 解决方法
lmgrd 进程无法启动,无日志输出 1. lic 文件不存在(-c 参数路径错误);2. 依赖库缺失 1. 核对 lic 文件绝对路径,修正 - c 参数;2. 安装 redhat-lsb.x86_64,检查依赖库
lmgrd 启动后 Vendor daemon 进程崩溃 1. lic 文件 MAC 与服务器实际 MAC 不一致;2. lic 文件过期;3. Vendor daemon 进程路径错误 1. 核对 SERVER 段 MAC,重新申请 lic;2. 核对 lic 过期时间,更新 lic;3. 修正 VENDOR 段进程绝对路径
日志提示 invalid license key Feature 段加密字段被篡改 / 修改 替换为原始 lic 文件,禁止修改 Feature 段任何字段

8.4 精细化配置常见故障与解决

故障现象 常见原因 解决方法
日志中无 Options file used 信息,规则未加载 1. VENDOR 段 options = 路径错误;2. 换行符 \ 缺失;3. 多余空格 1. 核对 option file 绝对路径,确保文件存在;2. 补充行尾 \,删除多余空格;3. 重启服务
部分规则生效,部分规则失效 1. Feature / 主机名 / 用户名拼写错误(大小写敏感);2. IP 段通配符使用错误 1. 逐行核对规则与实际环境一致性;2. 通配符仅用于 IP 段,如 10.100.100.
合法节点 / 用户被误拒绝(DENIED) option file 规则配置错误,误将合法对象加入拒绝列表 1. 查找 DENIED 日志,定位误限制对象;2. 修改 option file 删除错误规则;3. 重启服务
提示错误码 (-38,348) 对象在 EXCLUDE 列表中,触发访问限制规则 1. 如需放行,删除 option file 中对应规则;2. 如需限制,保持规则不变即可

8.5 EDA 特有的 License 坑

同工具不同 Feature 消耗不同 License

  • VCS Runtime 与 VCS Compiler 不同
  • SPICE 仿真、Optimization 是不同 Feature

多线程工具会占多份 License

部分工具按 CPU 核数收费,-n N 会 checkout N 个 Lic

交互式 GUI 与 batch 占用同一份 License

有人开 GUI 不关,直接导致批量任务无 License

PnR、SPICE、Formal 一旦 checkout 基本不释放

不能靠 TIMEOUT 管理,必须靠 Slurm QoS + 监控

跨地域 License 漫游(License Borrow)

远程办公借用 License,离线可用

风险:借走不还,中心资源永久减少

九 运维最佳实践总结

标准化部署:严格遵循 CentOS 7 64bit、eth0 网卡、最小权限挂载、HPC 区专属访问的部署规范,禁用非兼容配置,从基础保证服务稳定性;

精细化管控:生产环境禁用通用环境变量LM_LICENSE_FILE,使用厂商专属变量;Floating License 配置 option file 做访问限制,杜绝非授权使用;

7*24 小时运维:License Server 设置自启动脚本和进程监控,配置 HA 方案,防止单点故障;定期检查进程状态、日志文件,及时发现异常;

日志化管理:开启 debug log 并配置日志滚动备份,避免日志文件过大;通过日志追溯授权使用情况、拒绝事件、故障问题,日志为唯一核心依据;

安全化隔离:商业 lic 与内部 lic 优先采用独立集群隔离,禁止工具互相校验许可证;License Server 仅允许 IT 管理员登录,限制文件操作权限;

配置规范化:lic 文件、option file 使用绝对路径,存放于专属 lic 目录;配置文件做版本控制,修改后记录变更内容,便于回滚;新规则先在测试环境验证,再部署生产;

最小限制原则:访问限制规则仅对非授权对象做拒绝限制,合法对象保持默认放行,避免过度配置导致授权异常;优先分组定义规则,便于后期维护

十 SOS 全量使用与运维手册

本手册整合 SOS(Cliosoft SOS)工具的环境配置、服务器部署、项目管理、数据迁移、客户端使用、故障排查等全维度内容,适用于 IC 设计团队管理员、项目负责人及普通用户,基于 SOS 7.04-7.05 版本编写,适配速石 FCC/FCCE 集群环境,兼顾运维部署与工程化实操需求。

SOS 是 Cliosoft 旗下IC 设计数据管理工具,主打项目文件版本控制、多用户协同、跨站点数据同步,与 Cadence Virtuoso 深度集成,支持原理图、版图、网表、模型文件等 IC 设计全流程数据的统一管理,是大规模 IC 设计团队协同开发的核心工具。

1 工具核心认知

1.1 核心功能与工程价值

SOS 的核心功能围绕 IC 设计数据的 “存储、协同、版本控制” 展开,解决多用户并行开发、数据一致性、历史回溯等痛点:

核心功能 具体说明 工程价值
项目数据管理 集中存储项目文件(原理图、版图、网表等),支持文件 check-in/check-out、版本追溯 避免本地文件丢失,统一数据存储规范
多用户协同 基于角色的权限控制(ADMIN/MEMBER/GUEST),支持并发编辑与冲突解决 多人并行开发,避免数据覆盖,提升协作效率
数据迁移与备份 支持项目归档、恢复、跨服务器迁移,自动备份关键数据 保障数据安全,支持项目迁移与历史数据回溯
跨站点同步 多 site 部署时,通过 Cache Server 实现跨地域数据同步 异地团队协同,降低跨站点访问延迟
Virtuoso 集成 与 Virtuoso Library Manager 无缝对接,支持设计库直接 check-in/check-out 无需切换工具,实现设计与数据管理一体化
1.2 系统架构与角色分工

SOS 采用典型 C/S(客户端 - 服务器)架构,包含 4 个核心角色,各角色独立部署且职责明确:

角色 部署位置 核心职责 依赖条件
Primary Server(主服务器) 集群常开节点 项目元数据管理、数据存储、权限控制 需接入 LDAP/NIS,独立 NFS 存储目录
Cache Server(缓存服务器) 各 site 本地节点 缓存常用数据,降低主服务器访问压力 与主服务器网络连通,相同存储路径映射
License Server(许可证服务器) 独立节点 提供浮动许可证(Floating License) 开放 5281/27009 端口,网络可达
Client(客户端) 用户本地 /login 节点 用户交互入口,执行项目文件操作 需加载 SOS 环境变量,获取许可证
1.2.1 单站点架构
[Primary Server] ←→ [Cache Server] ←→ [SOS Client(用户A)/SOS Client(用户B)]
       ↑
[PostgreSQL数据库](存储项目元数据、版本信息)
1.2.2 多站点架构
# 主站点(如San Jose)
[Primary Server] ←→ [Cache Server-1] ←→ [本地Client集群]
       ↑
[PostgreSQL数据库]
       ↓
# 从站点(如Shanghai)
[Cache Server-2] ←→ [本地Client集群]
1.3 版本与环境适配
SOS 版本 核心特性 适配场景
7.04.p1 基础项目管理、数据迁移功能,支持 LSF 调度器 单站点小规模团队,老项目兼容
7.05.p3 优化跨站点同步、Cache Server 性能,支持 Slurm 调度器 多站点协同、大规模团队,推荐新项目使用

环境适配要求:

  • 操作系统:CentOS 5 及以上(推荐 CentOS7,与集群环境兼容);
  • 网络要求:主服务器与客户端、缓存服务器间网络带宽≥1Gbps;
  • 存储要求:主服务器需挂载独立 NFS 存储(推荐 450GB 以上可用空间)

2 环境配置(速石 FCC/FCCE 平台)

2.1 基础环境变量配置

SOS 环境变量需通过modules统一管理,避免用户间配置冲突,核心配置如下(以 7.05.p3 版本为例):

2.1.1 csh/tcsh 环境
# SOS安装根目录
setenv CLIOSOFT_DIR /fastone/software/others/sos/sos_7.05.p3_linux64
# 许可证环境变量(优先5281端口)
setenv CLIOLMD_LICENSE_FILE 5281@licserver01  # 替换为实际License服务器IP
# 添加可执行文件路径
prepend-path PATH $CLIOSOFT_DIR/bin
# 添加库文件路径
prepend-path LD_LIBRARY_PATH $CLIOSOFT_DIR/lib
prepend-path LD_LIBRARY_PATH $CLIOSOFT_DIR/lib/64bit
# 图形界面依赖配置
setenv GDM_USE_SHLIB_ENVVAR 1
2.1.2 bash/zsh 环境
export CLIOSOFT_DIR=/fastone/software/others/sos/sos_7.05.p3_linux64
export CLIOLMD_LICENSE_FILE=5281@licserver01
export PATH=$CLIOSOFT_DIR/bin:$PATH
export LD_LIBRARY_PATH=$CLIOSOFT_DIR/lib:$CLIOSOFT_DIR/lib/64bit:$LD_LIBRARY_PATH
export GDM_USE_SHLIB_ENVVAR=1
2.2 环境验证

配置完成后,执行以下命令验证环境是否生效:

# 查看SOS版本
sos -version
# 启动服务器端管理工具(管理员权限)
sosadmin &
# 启动客户端(普通用户权限)
sos &

无报错启动且能看到 GUI 界面,说明环境配置成功;

若提示许可证错误,需检查CLIOLMD_LICENSE_FILE配置及 License 服务器网络可达性。

2.3 服务器端特殊配置(管理员)
2.3.1 NFS 挂载参数

主服务器的存储目录需通过 NFS 挂载,推荐参数(保障稳定性与性能):

# 挂载命令示例
mount -t nfs -o rw,hard,nointr,sync,actimeo=0,tcp <NFS服务器IP>:/repo/sos_repo /fastone/projects/sos_repo
2.3.2 端口开放

需在防火墙开放以下端口,避免通信失败:

  • Primary Server:6000 端口(主通信端口);
  • Cache Server:6001 端口(缓存通信端口);
  • License Server:5281 或 27009 端口;
  • 其他端口:6002-6020(预留,多项目 / 多服务器部署时使用)。
2.3.3 用户权限配置
  • 禁止使用root用户启动 SOS 服务或客户端,需创建专用运维账号sosadmin(LDAP/NIS 域用户);
  • sosadmin用户需拥有 NFS 存储目录的读写权限(chmod 755 /fastone/projects/sos_repo);
  • 普通用户需加入schematic用户组(默认权限组),避免权限不足

3 服务器端部署与项目管理(管理员操作)

3.1 启动 SOS 服务器(单站点)
  1. 以sosadmin身份登录主服务器节点;
  2. 加载环境变量并启动sosadmin:
source /fastone/software/cshinit
module load sos/7.05
sosadmin &
  1. 新建 SOS 服务器实例:

  2. 在sosadmin主界面点击New,创建服务器实例;

  3. 填写Symbolic name for Server(如SOS_server_1);
  4. 选择Set up a new primary server和Set up a new cache server(单站点建议主服务器与缓存服务器同节点);
  5. Repository Path:指定项目存储路径(如/fastone/projects/sos_repo/SOS_server_1);
  6. Cache Path:指定缓存路径(如/fastone/projects/sos_cache);
  7. 其他参数默认(端口自动分配:主服务器 6000,缓存服务器 6001);
  8. 点击OK,完成服务器创建。

  9. 启动服务器:

  10. 在sosadmin主界面选中新建的服务器实例;
  11. 点击Startup,启动主服务器与缓存服务器;
  12. 启动成功后,Status显示Running,可查看进程 ID(PID)与磁盘信息。

3.2 新建 SOS 项目

  1. 在sosadmin主界面点击Projects,打开项目管理窗口;

  2. 点击New,填写项目信息:

  3. Project Name:项目名称(如TSMC_018PDK_CCDR);

  4. Project Administrator:项目管理员(需为 LDAP/NIS 用户,默认sosadmin);

  5. 点击Create,完成项目创建;

  6. 权限配置(可选):

  7. 项目创建后,编辑项目目录下的setup/sosd.cfg文件,配置用户角色

ADMIN sosadmin;  # 管理员,拥有全部权限
MEMBER fuyunlong,admin;  # 项目成员,可读写文件
GUEST fssupport;  # 来宾用户,只读权限
ACL{
  READ world;  # 读权限:所有人
  WRITE owner;  # 写权限:所有者
  MODIFY ACL yes;  # 允许修改权限(Virtuoso集成时必须设为yes)
}
  • 保存后,权限配置立即生效。
3.3 项目状态管理
3.3.1 项目启动 / 停止
  • 启动:选中项目,点击Startup,加载项目元数据与存储目录;
  • 停止:选中项目,点击Shutdown,释放资源(不删除数据);
  • 锁定 / 解锁:选中项目,点击Lock/Unlock,锁定后禁止用户操作,用于维护场景。
3.3.2 项目删除(谨慎操作)
  • 在sosadmin项目管理窗口选中项目,点击Delete;
  • 警告:删除操作会物理删除项目存储目录,不可恢复,建议先归档再删除。

4 客户端使用(普通用户操作)

4.1 启动 SOS 客户端
  1. 以普通用户身份登录 login 节点;
  2. 加载环境变量并启动 SOS:
module load sos/7.05
sos &
  1. 客户端启动成功后,显示服务器与项目列表(自动获取主服务器信息)
4.2 新建工作区(Workarea)

工作区是用户本地与服务器同步的桥梁,所有文件操作均在工作区内进行:

  1. 在 SOS 客户端点击File→New Workarea;
  2. 配置工作区信息:
  3. Server Name:选择目标服务器(如SOS_server_1);
  4. Project Name:选择目标项目(如TSMC_018PDK_CCDR);
  5. Workarea Dir:指定本地工作区路径(如/home/fuyunlong/ccdr_work);
  6. Keep Files in Workarea as:选择文件存储方式(Local Copies本地副本,Links to Smart Cache缓存链接,推荐后者节省空间);
  7. Automatically update workarea:设置自动更新频率(如 60 分钟);
  8. 点击OK,完成工作区创建;
  9. 同步项目文件:
  10. 选中工作区,点击File→Populate,同步服务器项目文件到本地;
  11. 同步完成后,本地工作区将显示服务器上的所有项目文件(原理图、版图、模型等)。
4.3 文件操作(Check-in/Check-out)
4.3.1 检出文件(Check-out)
  1. 在 SOS 客户端树形结构中,选中需要编辑的文件(如cds.lib、schematic视图);
  2. 点击Chk Out,或右键选择Check Out;
  3. 检出成功后,文件状态变为Checked Out,用户可在本地工作区编辑。
4.3.2 检入文件(Check-in)
  1. 编辑完成后,在 SOS 客户端选中已检出的文件;
  2. 点击Chk In,或右键选择Check In;
  3. 可选:填写版本备注(如 “修改电源电压参数”),便于历史追溯;
  4. 点击OK,文件同步至服务器,版本号自动递增。
4.3.3 放弃修改(Discard)

若无需保留编辑内容,可放弃修改并恢复至服务器最新版本:

  1. 选中已检出的文件;
  2. 点击Discard,或右键选择Discard Checkout;
  3. 确认后,本地文件恢复为服务器版本,检出状态解除。
4.4 Virtuoso 集成使用

SOS 与 Virtuoso Library Manager 深度集成,可直接在 Virtuoso 中管理设计库:

  1. 打开 Virtuoso Library Manager;
  2. 执行File→SOS Design Manager,连接 SOS 服务器与项目;
  3. 设计库操作:
  4. 检入:选中设计库(如CCDR2_Sim),执行Check In,同步至 SOS 服务器;
  5. 检出:选中服务器上的设计库,执行Check Out,加载至本地 Virtuoso;
  6. 版本查看:执行Version Info,查看设计库的历史版本与修改记录。

5 数据迁移与备份

SOS 支持两种数据迁移场景:服务器内项目迁移(同一服务器下的项目归档恢复)和跨服务器迁移(GUI 故障时的文件级迁移),同时提供自动备份机制。

5.1 方案 1:服务器内项目迁移(Archive/Restore,推荐)

适用于同一 SOS 服务器下的项目备份、复制或重命名,通过sosadmin可视化操作:

  1. 归档旧项目:

  2. 以sosadmin身份启动sosadmin;

  3. 选中需要迁移的旧项目(如TSMC_018PDK_CCDR2);
  4. 点击Archive,选择归档路径(推荐 NFS 存储目录),完成归档;

  5. 恢复为新项目:

  6. 在sosadmin中切换至目标服务器(或同一服务器);

  7. 点击Restore,选择归档文件路径;
  8. 填写New sos project name(如SMIC18_BCD_CCDR2)和Full directory path to restore project data;
  9. 点击OK,完成项目恢复(新项目与原项目数据完全一致);

  10. 新建工作区:

  11. 客户端启动 SOS,创建新项目的工作区并Populate,即可使用迁移后的数据。

5.2 方案 2:GUI 故障时的文件级迁移

适用于 SOS 客户端 GUI 损坏,无法通过可视化操作迁移的场景,通过命令行与文件操作实现:

  1. 归档旧项目目录:
  2. 登录旧项目工作区所在节点;
  3. 执行压缩命令(-h参数跟随符号链接):
cd /home/fuyunlong
tar -h -zcvf old_sos_dir.tgz old_sos_dir/  # old_sos_dir为旧工作区目录
  1. 迁移归档文件:

  2. 创建新项目目录,将归档文件拷贝至该目录:

mkdir -p /home/fuyunlong/new_sos_project mv old_sos_dir.tgz /home/fuyunlong/new_sos_project/

  1. 解压归档文件:

bash cd /home/fuyunlong/new_sos_project tar -zxvf old_sos_dir.tgz

  1. 重新链接 PDK 模型文件:

  2. 删除旧工作区的models和stream目录(与 PDK 绑定,需重新链接):

  3. rm -rf old_sos_dir/models rm -rf old_sos_dir/stream

    链接至新 PDK 的对应目录:

    ln -s /pdk/tsmc/018pdk/models old_sos_dir/models ln -s /pdk/tsmc/018pdk/stream old_sos_dir/stream

    注意:不同 PDK 的模型目录结构可能不同,需参考 PDK 用户手册

  4. 新建 SOS 项目与工作区:

  5. 按 3.2 节新建 SOS 项目;
  6. 客户端创建工作区,选择解压后的目录作为数据源,完成迁移
5.3 数据备份策略
  1. 自动备份:SOS 主服务器默认每 60 分钟自动备份项目元数据,可在sosadmin中修改Update Mode调整频率;
  2. 手动备份:定期执行Archive操作,将项目归档至独立存储(如磁带库),避免存储故障导致数据丢失;
  3. 跨站点备份:多站点部署时,启用 Cache Server 自动同步,实现数据异地备份。

6 跨站点部署与数据同步(进阶)

6.1 多站点部署流程
  1. 主站点部署:按 3.1-3.2 节完成 Primary Server、Cache Server 部署与项目创建;

  2. 从站点部署:

  3. 在从站点节点启动sosadmin;

  4. 点击New,创建 Cache Server,选择Use an existing primary server;
  5. 填写主站点 Primary Server 的 IP 与端口(如10.30.1.23:6000);
  6. 配置从站点 Cache Path(与主站点路径一致,如/fastone/projects/sos_cache);

  7. 数据同步:

  8. 从站点客户端创建工作区时,选择本地 Cache Server;

  9. 首次Populate时,从主站点同步数据;后续操作优先从 Cache Server 读取,降低跨站点延迟。
6.2 同步优化
  1. 网络优化:确保主从站点间网络带宽≥1Gbps,减少同步延迟;
  2. 缓存策略:设置常用文件预加载至 Cache Server,提升访问速度;
  3. 冲突解决:多站点并发编辑同一文件时,以最后检入的版本为准,建议关键文件编辑前沟通确认。

7 常见问题与故障排查

7.1 环境类问题

(1)SOS 客户端启动失败,提示许可证错误

原因:License 服务器未连通,或CLIOLMD_LICENSE_FILE配置错误;

解决方法:

  1. 检查 License 服务器 IP 可达性(ping licserver01);
  2. 验证许可证端口是否开放(telnet licserver01 5281);
  3. 确认CLIOLMD_LICENSE_FILE格式正确(端口@IP);
  4. 执行lmutil lmstat -a -c 5281@licserver01,查看许可证是否可用

(2)Virtuoso 中无 SOS 菜单

原因:SOS 与 Virtuoso 集成配置缺失;

解决方法:

  1. 编辑 Virtuoso 的.cdsinit文件,添加集成脚本:

  2. lisp load(strcat(getShellEnvVar("CLIOSOFT_DIR") "/shared/pkgs/icv/tools/queryskl/calibre.skl")) hiMenuAdd("SOS Design Manager" "File" '("Check In..." "Check Out...") '("sosCheckIn" "sosCheckOut"))

7.2 服务器类问题

(1)SOS 服务器启动失败,提示目录权限错误

原因:sosadmin用户对 Repository Path 无读写权限;

解决方法:

  1. 检查存储目录权限:ls -ld /fastone/projects/sos_repo;
  2. 赋予sosadmin用户权限:chown -R sosadmin:schematic /fastone/projects/sos_repo;
  3. 重新启动服务器。

(2)Cache Server 同步失败

原因:主从站点网络不通,或 Cache Path 路径不一致;

解决方法:

  1. 验证主从站点网络连通性(ping 主站点IP);
  2. 确认从站点 Cache Path 与主站点一致(如/fastone/projects/sos_cache);
  3. 在sosadmin中点击Ping,测试主从站点通信;
  4. 重启 Cache Server,重新同步。
7.3 客户端操作类问题

(1)文件检入失败,提示 “文件被锁定”

原因:文件已被其他用户检出,或之前检出未正常释放;

解决方法:

  1. 在sosadmin中查看文件锁定状态:Projects→View Status;
  2. 若为其他用户锁定,沟通后让对方检入或放弃检出;
  3. 若为异常锁定,管理员执行Cancel Checkout,释放锁定。

(2)工作区同步失败,提示 “文件缺失”

原因:服务器文件被删除,或本地工作区文件损坏;

解决方法:

  1. 检查服务器项目目录,确认文件是否存在;
  2. 若服务器文件存在,删除本地工作区对应文件,重新Populate;
  3. 若服务器文件缺失,从归档中恢复文件后再同步。
7.4 数据迁移类问题

(1)归档 / 恢复失败,提示 “路径不存在”

原因:归档路径或恢复路径无读写权限,或路径不存在;

解决方法:

  1. 确认路径存在:mkdir -p /fastone/archive/sos;
  2. 赋予权限:chmod 775 /fastone/archive/sos;
  3. 重新执行归档 / 恢复操作。

(2)迁移后模型文件无法使用

原因:模型文件为符号链接,迁移时未跟随链接(未加-h参数);

解决方法:

  1. 重新压缩旧工作区,添加-h参数:tar -h -zcvf old_sos_dir.tgz old_sos_dir/;
  2. 解压后重新链接 PDK 模型文件(参考 5.2 节步骤 4)。