在Ubuntu 20.04上搞定Synopsys VCS 2018.09和Verdi:一个IC验证新手的踩坑与填坑全记录
在Ubuntu 20.04上搭建Synopsys EDA工具链:从零开始的完整指南
作为一名刚踏入IC验证领域的新手,第一次在Ubuntu虚拟机上搭建Synopsys工具链的经历让我记忆犹新。那些深夜调试环境变量的日子,那些因为一个缺失的依赖库而反复尝试的挫折,最终都化作了宝贵的经验。本文将分享我在Ubuntu 20.04上安装VCS 2018.09和Verdi的全过程,包括那些官方文档没有提及的"坑"和解决方案。
1. 环境准备:打好基础才能事半功倍
在开始安装之前,确保你的系统环境已经准备就绪。我使用的是VMware Workstation 16 Pro运行的Ubuntu 20.04 LTS虚拟机,分配了8GB内存和100GB存储空间。这个配置对于运行EDA工具来说是最低要求,如果你的项目较大,建议分配更多资源。
1.1 系统更新与依赖安装
首先更新系统并安装必要的依赖库:
sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential libncurses5-dev libx11-dev libxtst-dev \ libxft-dev libc6:i386 libncurses5:i386 libstdc++6:i386 libxext6:i386 \ libxrender1:i386 libxtst6:i386 openssh-server ksh tcsh gcc-multilib \ g++-multilib lib32z1 lib32stdc++6这些依赖库中,特别是32位兼容库(i386)经常被忽略,但却是Synopsys工具正常运行的关键。我在第一次安装时就因为缺少libstdc++6:i386而导致VCS无法启动。
1.2 创建专用用户和目录结构
为了避免权限问题,我建议创建一个专用用户来运行EDA工具:
sudo adduser eda sudo usermod -aG sudo eda然后建立清晰的目录结构来存放各种工具:
mkdir -p ~/synopsys/{installer,vcs,verdi,scl,license}这种结构化的目录管理在后期维护和升级时会带来很大便利。
2. 安装Synopsys Installer:工具链的基础
Synopsys Installer是所有Synopsys工具的统一安装入口。我使用的是5.0版本,虽然官方文档没有特别说明,但这个版本与2018.09工具链兼容性最好。
2.1 获取和运行安装程序
将SynopsysInstaller_v5.0.run文件下载到~/synopsys/installer目录后:
cd ~/synopsys/installer chmod +x SynopsysInstaller_v5.0.run ./SynopsysInstaller_v5.0.run安装过程中有几个关键点需要注意:
- 安装路径选择之前创建的
~/synopsys/installer - 不要使用root用户运行安装程序
- 确保安装目录有足够的空间(至少20GB)
2.2 验证安装
安装完成后,可以通过以下命令验证:
cd ~/synopsys/installer ./setup.sh如果能看到图形化安装界面,说明安装成功。我在第一次尝试时因为缺少libX11.so.6而无法启动图形界面,通过安装libx11-6解决了这个问题。
3. 安装VCS和Verdi:核心工具配置
有了Installer,接下来就可以安装VCS和Verdi了。这两个工具是IC验证的核心,安装过程需要特别注意版本匹配。
3.1 安装VCS 2018.09-SP2
使用Installer安装VCS时,选择以下组件:
- vcs_vO-2018.09-SP2 (Verilog仿真器)
- vcs_mx_vO-2018.09-SP2 (混合语言仿真器)
安装路径设置为~/synopsys/vcs。安装完成后,需要检查几个关键文件:
ls -l ~/synopsys/vcs/vcs/O-2018.09-SP2/bin/vcs ls -l ~/synopsys/vcs/vcs-mx/O-2018.09-SP2/bin/vcs如果这两个文件都存在且可执行,说明VCS安装基本成功。我遇到的一个常见问题是安装过程中断导致文件不完整,这时需要完全删除安装目录重新安装。
3.2 安装Verdi 2018.09
Verdi的安装过程类似,选择verdi-2018.9包,安装到~/synopsys/verdi目录。安装完成后,验证:
ls -l ~/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdiVerdi对图形界面的依赖较强,如果启动时遇到图形问题,可能需要安装额外的库:
sudo apt install -y libjpeg62 libpng16-164. 配置SCL和License:让工具真正可用
没有正确的license配置,前面安装的所有工具都无法使用。Synopsys的license管理通过SCL(Software Configuration Library)实现。
4.1 安装SCL 2018.06
选择SCL 2018.06版本安装到~/synopsys/scl目录。安装完成后,需要检查关键文件:
ls -l ~/synopsys/scl/scl/2018.06/linux64/bin/lmgrd4.2 配置License文件
将生成的Synopsys.dat文件放在~/synopsys/license目录。文件内容应该包含类似以下信息:
SERVER your_hostname 000000000000 27000 DAEMON snpslmd ~/synopsys/scl/scl/2018.06/linux64/bin/snpslmd特别注意检查your_hostname和MAC地址是否正确。我在第一次配置时因为MAC地址错误导致license无法识别。
4.3 启动License服务
设置环境变量后,启动license服务:
export LM_LICENSE_FILE=27000@your_hostname ~/synopsys/scl/scl/2018.06/linux64/bin/lmgrd -c ~/synopsys/license/Synopsys.dat验证license是否正常工作:
~/synopsys/scl/scl/2018.06/linux64/bin/lmstat -c 27000@your_hostname如果看到类似"9 licenses for vcs"的输出,说明license配置成功。我遇到的一个棘手问题是端口冲突,可以通过以下命令检查:
sudo netstat -tulnp | grep 27000如果端口被占用,可以kill相关进程或更改license文件中的端口号。
5. 环境变量配置:将所有工具串联起来
正确的环境变量配置是工具链正常工作的关键。以下是我的.bashrc中相关配置:
# Synopsys Tools Base Directory export SYNOPSYS_HOME=$HOME/synopsys # VCS Configuration export VCS_HOME=$SYNOPSYS_HOME/vcs/vcs/O-2018.09-SP2 export VCS_MX_HOME=$SYNOPSYS_HOME/vcs/vcs-mx/O-2018.09-SP2 export PATH=$PATH:$VCS_HOME/bin:$VCS_MX_HOME/bin # Verdi Configuration export VERDI_HOME=$SYNOPSYS_HOME/verdi/verdi/Verdi_O-2018.09-SP2 export PATH=$PATH:$VERDI_HOME/bin export LD_LIBRARY_PATH=$VERDI_HOME/share/PLI/VCS/LINUX64:$LD_LIBRARY_PATH # SCL Configuration export SCL_HOME=$SYNOPSYS_HOME/scl/scl/2018.06 export PATH=$PATH:$SCL_HOME/linux64/bin export VCS_ARCH_OVERRIDE=linux # License Configuration export LM_LICENSE_FILE=27000@$(hostname) alias startsynopsys='lmgrd -c $SYNOPSYS_HOME/license/Synopsys.dat'配置完成后,执行source ~/.bashrc使更改生效。环境变量配置不当会导致各种奇怪的问题,比如:
VCS_ARCH_OVERRIDE未设置可能导致32/64位兼容问题LD_LIBRARY_PATH缺失可能导致PLI接口无法工作
6. 常见问题与解决方案
在实际使用中,我遇到了许多官方文档没有提及的问题。以下是几个典型问题及其解决方法:
6.1 缺少动态链接库
运行VCS或Verdi时可能会报错缺少.so文件。解决方法:
# 查找提供该库的包 apt-file search missing_library.so # 安装对应的包 sudo apt install libpackage-containing-the-library6.2 图形界面显示问题
如果Verdi或DVE无法正常显示,可以尝试:
# 设置正确的DISPLAY变量 export DISPLAY=:0 # 如果使用SSH连接,确保X11转发已启用 ssh -X username@hostname6.3 License检查失败
如果工具报告license无效,按以下步骤排查:
- 确认
lmgrd进程正在运行:ps aux | grep lmgrd - 检查license文件中的hostname和MAC地址是否正确
- 确认系统时间没有超过license的到期日期
- 检查防火墙是否阻止了27000端口
7. 验证安装:运行第一个仿真
为了确认所有工具都正确安装,让我们运行一个简单的测试:
# 创建测试文件 echo 'module test; initial $display("Hello VCS!"); endmodule' > test.v # 使用VCS编译 vcs -full64 test.v # 运行仿真 ./simv # 使用Verdi查看波形(如果需要) verdi -ssf waves.fsdb如果看到"Hello VCS!"输出,说明VCS安装成功。Verdi应该能正常启动并显示图形界面。
8. 性能优化与日常使用技巧
经过多次实践,我总结出一些提高工作效率的技巧:
8.1 虚拟机性能优化
- 启用VMware的3D图形加速
- 为虚拟机分配更多CPU核心
- 使用SSD存储
- 调整Ubuntu的swappiness值:
sudo sysctl vm.swappiness=108.2 工具使用技巧
- 使用
alias简化常用命令:
alias vcs='vcs -full64 -sverilog +v2k -debug_access+all' alias verdi='verdi -ssf waves.fsdb'- 创建常用脚本存放在
~/bin目录 - 使用
screen或tmux管理长时间运行的仿真任务
8.3 定期维护
- 清理VCS生成的临时文件:
find . -name "simv*" -o -name "csrc" -o -name "DVEfiles" | xargs rm -rf- 备份license和配置文件
- 定期检查磁盘空间使用情况
9. 替代方案与工具链扩展
虽然本文聚焦于VCS和Verdi,但完整的IC验证环境可能还需要其他工具:
| 工具类别 | 推荐工具 | 备注 |
|---|---|---|
| 版本控制 | Git | 配置Git LFS管理大型设计文件 |
| 脚本语言 | Python/Perl | 用于自动化流程 |
| 文本编辑 | VSCode/Vim | 配置Verilog/SystemVerilog插件 |
| 项目管理 | Makefile | 组织复杂的编译流程 |
对于资源有限的开发者,也可以考虑以下替代方案:
- Icarus Verilog + GTKWave (开源工具链)
- ModelSim Starter Edition (免费版本)
- Verilator (开源的Verilog仿真器)
10. 从新手到熟练:我的学习路径建议
回顾我的学习过程,如果重来一次,我会采取更系统化的学习路径:
基础阶段:
- 掌握Verilog/SystemVerilog语法
- 理解基本的验证概念(定向测试、随机测试、覆盖率)
- 熟悉Linux基本操作
工具阶段:
- 从简单项目开始使用VCS
- 逐步学习Verdi的调试功能
- 探索DVE的波形查看功能
项目阶段:
- 参与开源IP核的验证
- 构建自己的验证环境
- 学习UVM等高级验证方法学
优化阶段:
- 编写脚本自动化流程
- 优化仿真性能
- 学习高级调试技巧
对于初学者,我建议从小的设计开始,逐步增加复杂度。例如,先验证一个简单的ALU,然后是流水线CPU,最后是带有缓存和总线的复杂系统。
