在CentOS7上搞定VCS、Verdi和SCL 2018.09-SP2:一份新手友好的避坑与配置全记录
CentOS7环境下EDA工具链深度配置指南:从依赖解析到自动化管理
在数字芯片设计领域,VCS、Verdi和SCL组成的工具链是功能验证的核心基础设施。不同于简单的软件安装,EDA工具的部署更像是一场与操作系统环境的精密对话——缺少的依赖库可能隐藏在不起眼的软件包中,许可证配置的细微差别会导致整个系统无法运作,而环境变量的设置更是需要毫米级的精确度。本文将采用病理学诊断式的排查方法,不仅提供标准流程,更会针对每个环节可能出现的异常情况给出修复方案,最终实现从基础安装到开机自启的全链路管理。
1. 预安装环境诊断与准备
1.1 系统基础依赖检测
在CentOS7最小化安装环境下,首先需要构建完整的编译工具链和图形支持库。执行以下命令建立基础环境:
sudo yum groupinstall "Development Tools" -y sudo yum install glibc.i686 libXext.i686 libXtst.i686 -y典型依赖问题排查表:
| 缺失文件 | 对应软件包 | 安装命令 |
|---|---|---|
| libXss.so.1 | libXScrnSaver | sudo yum install libXScrnSaver |
| libpng12.so.0 | libpng12 | sudo yum install libpng12 |
| libjpeg.so.62 | libjpeg-turbo | sudo yum install libjpeg-turbo |
| libfreetype.so.6 | freetype | sudo yum install freetype |
提示:使用
ldd <二进制文件>命令可以检查可执行文件的动态链接库依赖情况
1.2 存储空间规划建议
EDA工具安装需要合理的存储分配,建议采用以下目录结构:
/home/eda/ ├── install/ # 存放安装源文件 ├── tools/ # 安装目录(vcs/verdi/scl) └── license/ # 许可证文件存放处设置权限时避免直接使用777,推荐更安全的权限方案:
sudo mkdir -p /home/eda/{install,tools,license} sudo chown -R $USER:$USER /home/eda sudo chmod -R 755 /home/eda2. 安装流程的精细化控制
2.1 安装器依赖解析
Synopsys Installer常见的依赖问题可通过以下方式预防性解决:
# 预装所有可能需要的库 sudo yum install ksh tcsh libXp libXp-devel libXmu -y当遇到安装器报错时,可采用动态追踪法:
strace -f -o installer.log ./setup.sh grep "ENOENT" installer.log # 查找缺失的文件2.2 多工具安装顺序优化
推荐安装顺序及注意事项:
SCL优先原则:先安装License管理工具
./setup.sh -install_as_root -target /home/eda/tools/sclVCS组件安装:注意区分MX和标准版本
# 安装时指定非交互模式 ./setup.sh -batch -install_as_root -target /home/eda/tools/vcsVerdi视觉配置:需要额外的图形库支持
sudo yum install xorg-x11-fonts* -y
注意:每个安装步骤完成后,建议使用
echo $?检查上条命令的退出状态码
3. 许可证系统的深度配置
3.1 主机信息精准获取
生成license需要的主机信息应通过可靠方式获取:
# 获取真实物理地址而非虚拟网卡MAC hostid=$(cat /sys/class/net/$(ip route show | grep default | awk '{print $5}')/address | tr -d ':') hostname=$(hostname -f)3.2 License文件调优技巧
修改Synopsys.dat时需要特别注意:
SERVER localhost.localdomain 000c29xxxxxx 27000 - DAEMON snpslmd /home/eda/tools/scl/2018.06/linux64/bin/snpslmd + DAEMON snpslmd /home/eda/tools/scl/2018.06/linux64/bin/snpslmd $*添加$*参数可避免某些情况下license守护进程异常退出。
3.3 防火墙高级配置
除了开放27000端口外,还需设置SELinux策略:
sudo firewall-cmd --permanent --add-port=27000/tcp sudo firewall-cmd --reload sudo semanage port -a -t http_port_t -p tcp 270004. 环境变量的分层管理方案
4.1 模块化环境配置
建议将环境配置分解为多个文件,便于管理:
# 在~/.bashrc中添加 for config in ~/.eda/vcs ~/.eda/verdi ~/.eda/scl; do [ -f "$config" ] && . "$config" done各工具配置文件示例(~/.eda/vcs):
export VCS_HOME=/home/eda/tools/vcs/O-2018.09-SP2 export PATH=$VCS_HOME/bin:$PATH alias vcs="vcs -full64 -l vcs.log"4.2 动态库路径优化
解决常见的库冲突问题:
export LD_LIBRARY_PATH=\ ${VERDI_HOME}/share/PLI/VCS/LINUX64:\ ${SCL_HOME}/linux64/lib:\ /usr/local/lib645. 系统服务的自动化集成
5.1 systemd服务单元配置
更可靠的license服务管理方案:
# /etc/systemd/system/snpslmd.service [Unit] Description=Synopsys License Manager After=network.target [Service] ExecStart=/home/eda/tools/scl/2018.06/linux64/bin/lmgrd \ -c /home/eda/license/Synopsys.dat \ -l /var/log/snpslmd.log Restart=always User=eda [Install] WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload sudo systemctl enable --now snpslmd5.2 资源限制调整
在/etc/security/limits.conf中添加:
eda soft nofile 65536 eda hard nofile 65536 eda soft nproc 16384 eda hard nproc 163846. 验证与排错体系构建
6.1 工具链健康检查
创建验证脚本check_eda.sh:
#!/bin/bash tools=(vcs verdi lmgrd) for tool in "${tools[@]}"; do which $tool >/dev/null || \ { echo "[ERROR] $tool not in PATH"; exit 1; } $tool -version || \ { echo "[WARNING] $tool version check failed"; } done lmstat -c $LM_LICENSE_FILE | grep -q "UP" && \ echo "[OK] License UP" || \ echo "[ERROR] License DOWN"6.2 常见故障处理矩阵
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| verdi无法启动 | 缺少libpng12 | sudo yum install libpng12 |
| vcs编译失败 | 权限问题 | chmod +x $VCS_HOME/bin/* |
| license无法识别 | 主机名不匹配 | 检查.dat文件中SERVER行主机名 |
| 工具响应缓慢 | 文件描述符限制 | 调整/etc/security/limits.conf |
在完成所有配置后,建议执行完整的回归测试:
cd $VCS_HOME/examples/simple vcs -full64 -R +v2k hello_world.v verdi -ssf novas.fsdb &