搞EDA的同学应该都有体会VCS和Verdi这对组合在数字IC验证里几乎是绕不开的“标配”VCS负责仿真Verdi负责调试波形两者配合起来的流程从RTL仿真到后仿都离不开。最近我在自己的工作站上装了一套Ubuntu 22.04折腾了一把VCS和Verdi的安装配置这里把完整过程记录下来。这篇是给同样需要在Ubuntu 22.04上搭建数字IC验证环境的朋友看的尤其是刚入行或者想在自己电脑上搞一套仿真环境的人。整个流程走下来我认为最关键的不是点几次Next而是搞清楚依赖库、license服务、环境变量这三件事很多安装失败都栽在这上面。先说这次实验的背景工作站硬件是普通的x86_64 CPU系统是Ubuntu 22.04 LTS内核版本6.x左右。安装的是Synopsys VCS和Verdi属于常见的2018版或2020版系列工具。我选择在这套系统上装主要是看中它的软件源比较新、社区文档多而且日常使用比企业版Linux顺手。不过请注意Ubuntu并不在Synopsys官方支持列表里官方推荐的是RHEL或SUSE所以Ubuntu上安装属于“自己折腾”的范畴相关兼容性问题需要自己解决这也是这篇记录的核心价值所在。1. 整体设计与思路拆解1.1 为什么选择Ubuntu 22.04作为仿真平台很多公司服务器上跑的是RHEL 7或RHEL 8但个人电脑和工作站上Ubuntu使用率明显更高。我自己选Ubuntu 22.04的原因很简单软件源新、驱动好装、社区资料丰富而且对VCS/Verdi这种老牌EDA工具的兼容性其实没有想象中那么差。有人可能会担心Ubuntu的glibc版本、GCC版本太新导致VCS编译生成的C代码出问题。这个担心有道理VCS仿真时会把Verilog代码转换成C/C再编译所以对GCC版本比较敏感。但实测下来通过设置VCS自带或系统自带的GCC工具链并配置VCS_ARCH_OVERRIDE等环境变量多数情况下能跑通。再加上Ubuntu 22.04的长期支持到2027年作为个人开发环境稳定性足够。需要特别提醒的是如果公司有标准的验证环境建议先和IT或CAD团队确认工具版本避免自己装的工具和公司流程不一致。如果是个人学习或本地验证Ubuntu 22.04完全没问题。1.2 VCS与Verdi的角色划分和配合逻辑理解VCS和Verdi的分工对后面的安装路径和环境变量设置很有帮助。VCS是编译型仿真器它把Verilog/SystemVerilog代码编译成可执行文件再运行。它的核心动作有两个编译和仿真。编译时生成可执行文件仿真时跑这个可执行文件。VCS的调试能力很强支持-debug_accessall等选项来生成供Verdi读取的波形和断点信息。Verdi是调试工具它读取VCS生成的FSDB格式波形文件VCS通过-fsdb选项配合PLI接口生成然后提供层次化的信号追踪、波形查看、状态机分析等功能。Verdi最初是Novas公司的产品后来被Synopsys收购所以和VCS的配合度相当高。在安装层面VCS和Verdi是独立的软件包各有各的安装目录但两者共享同一个license服务通常是Synopsys Common Licensing即SCL并通过SNPSLMD_LICENSE_FILE环境变量指向license服务器。安装顺序上建议先装SCL和license再装VCS和Verdi因为后两者的安装脚本在license配置过程中会检查license文件。1.3 版本选择与安装方案取舍VCS和Verdi的版本有很多常见的有2017、2018、2019、2020系列最新到2023甚至2024。我这次用的是2018版因为它在Ubuntu上的兼容性问题相对少网上的踩坑记录也多遇到问题好查。太老的版本比如2014之前在Ubuntu 22.04上容易出现32位库缺失的问题太新的版本则可能对系统的某些库版本要求苛刻。安装方式有两种主流选择一种是使用Synopsys Installer图形界面安装另一种是解压tar包手动拷贝。我推荐用Synopsys Installerinstaller_v5.x或者更高版本因为它能自动处理安装路径、文件权限和部分平台检测省去很多麻烦。手动解压的方式适合安装包不带installer的情况但需要自己搞定目录结构和环境变量。关于目录规划我建议把所有Synopsys工具统一放在一个根目录下比如/opt/synopsys下面再分vcs、verdi、scl、installer等子目录。这样做的好处是环境变量配置简单、升级维护方便也符合很多企业的安装习惯。以下是我实际使用的目录结构。/opt/synopsys/ ├── installer/ ├── scl/ │ └── 2018.06/ ├── vcs/ │ └── O-2018.09-SP2/ └── verdi/ └── VERDI_2018.09-SP2/这样一眼就能看清各个工具的版本后续做版本切换也容易只需要改一下环境变量里的路径即可。2. 安装前的环境准备2.1 确认硬件架构与操作系统基础环境安装前先把基础环境摸清楚。我这里的机器是x86_64架构操作系统是Ubuntu 22.04 LTS内存16GB硬盘剩余空间80GB以上。VCS仿真大的设计很吃内存和硬盘如果只是做教学实验或者小模块仿真16GB内存也够用但如果打算跑大型SoC验证建议内存32GB起步磁盘能上NVMe更好。确认操作系统版本可以用lsb_release -a或cat /etc/os-release确认架构用uname -m。x86_64没问题VCS对ARM架构的支持目前还不成熟不建议在Apple Silicon的虚机里直接跑原生VCS。另外要注意系统时区和日期一定要设置正确因为license验证对时间敏感。如果系统时间和license服务器时间差太多启动工具时会报license过期或时间戳错误这个问题我在4.3节还会细说。2.2 安装必要的系统依赖包Ubuntu 22.04默认安装比较精简需要补充一些32位库和基础工具。VCS和Verdi虽然是64位程序但内部的某些组件特别是老版本工具带的库会依赖32位兼容库比如lsb-release相关的包。以下是我实测需要装的依赖包你可以直接复制执行。sudo apt update sudo apt install -y build-essential gcc g make perl lsb-release lib32z1 lib32ncurses6 lib32stdc6 libc6-i386 lsb-core这里重点解释一下几个关键依赖。build-essential提供GCC、G、Make等编译工具链VCS编译Verilog代码时必须用到。lib32z1和lib32stdc6提供32位兼容库老版本VCS的某些二进制依赖这些。lib32ncurses6是终端界面库Verdi的某些文本界面组件会使用。lsb-core提供LSBLinux Standard Base兼容层很多EDA工具安装脚本检测系统时依赖它。Ubuntu 20.04及之前的版本可能还需要libncurses5但Ubuntu 22.04的软件源里已经没有了所以直接用lib32ncurses6即可。如果安装过程中提示缺少某个libX系列图形库比如libXext、libXft那是因为Verdi图形界面需要可以一并装上。sudo apt install -y libxext6 libxft2 libx11-6 libxt6 libsm6 libice6图形库缺失的表现通常是Verdi启动时黑屏、报libXext.so.6: cannot open shared object file类似的错误。提前装上能省很多事。2.3 创建专用用户与目录权限规划EDA工具不建议直接用root运行一方面有安全风险另一方面很多license验证工具会检查当前用户是否有读写license文件的权限。我建议创建一个专用用户比如eda然后把Synopsys工具和license文件都归到这个用户下。sudo useradd -m -s /bin/bash eda sudo passwd eda sudo mkdir -p /opt/synopsys sudo chown -R eda:eda /opt/synopsys创建目录后切换到eda用户进行后续安装操作su - eda为什么特意把安装目录的属主改成eda因为Synopsys Installer在安装时需要写安装目录VCS在运行编译时会向安装目录写入一些临时文件license工具lmgrd也会在安装目录下生成日志文件。如果权限不够安装过程可能卡在某一步或者仿真时莫名其妙报错。提前把权限规划好后面省心很多。另外建议把Install脚本和安装包放在eda用户有读写权限的目录下比如/home/eda/Downloads。安装包文件比较大建议提前解压好避免安装过程中因为磁盘空间不足中断。2.4 准备好安装包和license文件我这里的安装包是从公司内部服务器下载的包含以下几个核心组件。SynopsysInstaller_v5.4.0.runSynopsys官方安装器。VCS_O-2018.09-SP2_full.tgzVCS主程序包。Verdi_O-2018.09-SP2_full.tgzVerdi主程序包。SCL_2018.06_common.tgz和SCL_2018.06_linux64.tgzSynopsys Common Licensing即license服务工具。license.dat授权文件由公司license服务器发放或由license管理员生成。license文件的获取这里多说一句正版用户通过Synopsys官方渠道获取或由企业内部license管理员统一管理。如果你是个人学习也应当确保拥有正版授权或学校/公司提供的合法许可。本文不讨论任何绕过授权的方式只介绍在拥有合法license文件的前提下如何正确配置。拿到的license.dat需要确认里面的关键信息包括license服务器的hostname、端口号默认通常是27000和feature名称。可以用文本编辑器打开看一眼重点确认有没有VCS和Verdi相关的feature行形如FEATURE VCS synopsysd 2018.12 31-dec-2023 uncounted ... FEATURE Verdi synopsysd 2018.12 31-dec-2023 uncounted ...如果没有这些feature即使安装成功VCS和Verdi也启动不了。如果license是浮动license还需要确认服务器端已经启动lmgrd服务。3. 安装实操全流程解析3.1 用Synopsys Installer安装VCS主程序一切准备就绪后开始正式的安装。首先执行installer安装包把自己安装到一个固定目录我放在/opt/synopsys/installer。chmod x SynopsysInstaller_v5.4.0.run ./SynopsysInstaller_v5.4.0.run -d /opt/synopsys/installer这里-d参数指定安装目录执行完以后installer会被解压到/opt/synopsys/installer并生成一个installer可执行文件。接下来用这个installer来安装VCS。打开installer图形界面有两种方式。在SSH终端里可以直接运行/opt/synopsys/installer/installer如果是在有图形界面的Ubuntu桌面环境下也可以直接双击运行但建议在终端里启动方便查看日志。在installer界面里点击Add选择安装包导航到存放VCS安装包的目录选择tgz文件。installer会自动解压并识别软件包。你只需要选择安装路径/opt/synopsys/vcs然后点Install。整个过程大概10到20分钟取决于机器性能。这里有一个注意点installer可能提示需要root权限来安装或者提示平台不支持。如果出现平台不支持的提示可以看看installer的选项里有没有-platform强制指定的参数。如果实在不行最简单的方式是手动解压安装包。3.2 手动解压安装VCS和Verdi的替代方案并不是每个人都有installer有些渠道拿到的安装包就是一个tar.gz压缩包。这种情况下的安装步骤其实更简单本质就是把压缩包解压到指定目录。cd /opt/synopsys tar -xzf VCS_O-2018.09-SP2_full.tgz解压后会在当前目录生成一个vcs目录里面包含bin、etc、lib等子目录。Verdi同理cd /opt/synopsys tar -xzf Verdi_O-2018.09-SP2_full.tgz解压后生成verdi目录。手动解压安装最大的问题是缺少installer自动设置的平台检测和符号链接不过对我们后续使用影响不大只要环境变量路径指对了就行。实际项目中我通常两种方式都会准备installer优先如果installer出问题就手动解压。手动解压时要注意解压后的目录属主必须是eda用户否则运行时报权限错误。3.3 安装SCL并配置license服务SCL是Synopsys的许可证管理工具负责管理license文件的解析和发放。安装SCL有两种方式用installer安装或者手动解压。我这次手动解压更直观。cd /opt/synopsys tar -xzf SCL_2018.06_common.tgz tar -xzf SCL_2018.06_linux64.tgz解压后会生成/opt/synopsys/scl目录。确认一下scl/2018.06/linux64/bin下面的lmgrd和snpslmd是否存在。ls /opt/synopsys/scl/2018.06/linux64/bin能看到lmgrd、snpslmd、lmutil这几个文件基本就说明SCL安装成功。接下来测试license文件能否被正确加载。先用lmgrd在前台模式启动测试/opt/synopsys/scl/2018.06/linux64/bin/lmgrd -c /opt/synopsys/license.dat -l /tmp/license.log如果license文件本身没有问题启动后可以用lmutil lmstat查看license状态/opt/synopsys/scl/2018.06/linux64/bin/lmutil lmstat -a -c /opt/synopsys/license.dat这里要注意license文件里指定的hostname必须能解析到本机一般用hostname命令查看主机名然后在/etc/hosts里加上本机IP和主机名的对应关系。如果hostname对不上lmgrd启动时日志会报Invalid host或Cannot connect to license server。配置完成后如果license是单机版可以直接用环境变量SNPSLMD_LICENSE_FILE指向license文件路径如果是浮动license则指向27000license_server_host。具体的环境变量配置方法下一节详细展开。3.4 配置环境变量的完整模板环境变量配置是整个安装流程里最容易错也最关键的一步。配置不当的典型表现是输入vcs提示command not found或者启动Verdi时报license错误。下面是我多次实验后整理的一套环境变量配置模板放在/home/eda/.bashrc里。# Synopsys tools env export SYNOPSYS_HOME/opt/synopsys export VCS_HOME$SYNOPSYS_HOME/vcs/O-2018.09-SP2 export VERDI_HOME$SYNOPSYS_HOME/verdi/VERDI_2018.09-SP2 export SCL_HOME$SYNOPSYS_HOME/scl/2018.06/linux64 # License export SNPSLMD_LICENSE_FILE27000localhost # 如果license是文件形式改为 # export SNPSLMD_LICENSE_FILE/opt/synopsys/license.dat # export LM_LICENSE_FILE$SNPSLMD_LICENSE_FILE # PATH export PATH$VCS_HOME/bin:$VERDI_HOME/bin:$SCL_HOME/bin:$PATH # 兼容性配置 export VCS_ARCH_OVERRIDElinux64 export VERDI_HOME_64BIT$VERDI_HOME export LD_LIBRARY_PATH$VCS_HOME/lib:$VERDI_HOME/lib:$LD_LIBRARY_PATH # 避免某些GUI界面字体乱码 export LANGC这里有好几处需要解释一下。VCS_HOME指向VCS的根目录必须是包含bin目录的上一级。如果你装的是VCS 2018.09-SP2目录名里要带版本号否则后面vcs -version可能找不到可执行文件。SNPSLMD_LICENSE_FILE是Synopsys系列工具通用的license环境变量优先级高于LM_LICENSE_FILE只要设置了前者VCS和Verdi都会读取。如果你在公司环境中可能要设置为27000license_server_ip而不是本机的localhost。VCS_ARCH_OVERRIDE这个变量很多人会忽略但它相当重要。VCS在编译时会根据这个变量选择架构相关的库路径设置为linux64可以强制使用64位库避免在Ubuntu里因为库路径探测失败而报错。LD_LIBRARY_PATH把VCS和Verdi的库目录加进去防止运行时找不到共享库。如果发现Verdi启动时报libstdc.so.5 not found这类错误很可能就是库路径没配好或者系统缺少老版本的libstdc。配置完后要重新加载配置source ~/.bashrc然后验证VCS和Verdi的版本信息vcs -version verdi -version如果出现版本信息说明安装基本成功。如果提示vcs: command not found就是PATH没配对如果提示license错误就是SNPSLMD_LICENSE_FILE没配对往下看问题排查部分。3.5 验证安装VCS和Verdi联合仿真最小测试安装完成不能只看版本号最好跑一个最简单的仿真用例验证工具链是否完整可用。我习惯用下面这个非常简单的Verilog模块做冒烟测试。先创建一个测试目录mkdir -p ~/test_run cd ~/test_run创建hello.vmodule hello; initial begin $display(Hello, VCS!); #10 $finish; end endmodule然后运行VCS编译和仿真vcs -sverilog hello.v -o simv ./simv如果一切正常终端输出Hello, VCS!并且能正常结束。接下来验证Verdi能否读取VCS生成的波形。需要修改一下测试代码让它能产生波形并加上-fsdb相关的PLI支持。module hello; reg clk 0; integer i; initial begin $display(Hello, VCS with Verdi!); $fsdbDumpfile(hello.fsdb); $fsdbDumpvars(0, hello); for (i 0; i 10; i i 1) begin clk ~clk; #10; end $finish; end endmodule编译时需要加上调试选项和fsdb支持vcs -sverilog hello.v -debug_accessall -fsdb -P $VERDI_HOME/share/PLI/VCS/LINUX64/novas.tab \ $VERDI_HOME/share/PLI/VCS/LINUX64/pli.a -o simv注意这里$VERDI_HOME/share/PLI/VCS/LINUX64/novas.tab和pli.a是Verdi提供的VCS接口文件路径在不同版本下略有差异。我这里的路径是2018版的如果你的版本不同用find $VERDI_HOME -name novas.tab查找一下。编译成功后运行./simv会生成hello.fsdb文件。然后用Verdi打开verdi -f filelist.f -ssf hello.fsdb filelist.f是可选的但如果你有源码文件列表用-f加-ssf一起打开Verdi会同时加载源码和波形用起来最方便。看到波形界面正常显示就说明VCS和Verdi的联合仿真环境已经打通了。4. 常见问题与排查技巧实录4.1 依赖库缺失类问题这是Ubuntu上装VCS最常遇到的坑。典型报错信息有error while loading shared libraries: libtinfo.so.5: cannot open shared object file error while loading shared libraries: libstdc.so.5: cannot open shared object file error while loading shared libraries: libXext.so.6: cannot open shared object file这类问题本质上是工具编译时链接的系统库版本和当前系统提供的版本对不上。Ubuntu 22.04的libtinfo已经到6但VCS老版本还在找libtinfo.so.5。解决办法有两种。第一种是安装兼容库能用apt解决的尽量用aptsudo apt install libtinfo5 lib32ncurses6 libstdc5 libxext6如果apt里找不到libtinfo5可以考虑从Ubuntu 20.04的软件源里手动下载deb包安装。但更稳妥的办法是建立软链接sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5软链接的方式简单粗暴但要注意如果同时装了依赖libtinfo6的其他软件可能有兼容性风险。建议优先用apt装对应版本库实在没有才用软链接。还有一个更容易被忽视的库是libnss3和libnspr4Verdi的GUI在某些版本下需要它们。报错表现为Verdi启动后界面白屏或直接崩溃。安装命令sudo apt install libnss3 libnspr44.2 GCC版本与VCS编译不兼容问题VCS在编译Verilog代码时会将代码转为C/C然后调用GCC编译。如果GCC版本太新可能编译报错常见错误是Error: Could not find the compiler gcc in the PATH或者编译过程中出现一堆模板和标准库相关的报错。针对这个问题我的建议是检查当前GCC版本gcc --version如果是11或更高版本可以先试试直接跑VCS部分新版本VCS已经支持新GCC。如果报错可以安装旧版本GCC比如GCC 9sudo apt install gcc-9 g-9然后在~/.bashrc里设置环境变量让VCS使用GCC 9export CC/usr/bin/gcc-9 export CXX/usr/bin/g-9VCS的编译流程会读取CC和CXX环境变量如果设置了就优先使用。如果VCS还是不认可以使用VCS_CC和VCS_CXX这两个VCS专用变量不同版本变量名有差异可以通过vcs -help查一下。还有一种情况是VCS自带的gcc和系统gcc冲突。这时候优先确保PATH里$VCS_HOME/bin在前面同时注意VCS的bin目录下没有gcc可执行文件它调用的是系统gcc。所以本质上还是系统GCC版本问题。4.3 license相关问题的完整排查思路license问题占安装问题的一半以上。常见报错如下Cant get license for VCS Invalid host License server system does not support this version of feature排查思路按以下顺序来。第一步确认SNPSLMD_LICENSE_FILE的指向正确。如果是license文件方式确保指向的是实际存在的文件路径如果是服务器方式确保端口和host正确。可以先用lmutil lmstat直接测试连接lmutil lmstat -a -c 27000localhost第二步确认license文件里hostname是否和当前机器匹配。打开license.dat看SERVER行SERVER localhost 001122334455 27000其中localhost必须能解析到本机IP通常改成hostname命令的输出或者直接改成127.0.0.1。如果用服务器方式且license文件在远端确认远端server的hostname和IP没变过。第三步确认时间同步。EDA工具的license对时间很敏感如果系统时间和license文件里的日期范围对不上会报License expired解决办法是确认系统时间和真实时间一致。如果是在虚机里特别容易出现时间漂移最好安装chrony或ntpdate做时间同步。sudo apt install chrony sudo systemctl enable chrony sudo systemctl start chrony第四步确认VCS_ARCH_OVERRIDE没有乱设。在某些情况下如果架构变量设置不当VCS会找错license feature的种类报Feature is uncounted之类的错误。通常设为linux64就不会错。如果以上步骤都排查完还是不行打开license日志文件在lmgrd启动时通过-l参数指定看具体报错这是最直接的定位方式。日志里会详细记录哪个feature被拒绝、原因是什么。4.4 Verdi图形界面启动异常问题Verdi是图形化工具比VCS更容易出界面相关的问题。常见现象有双击启动后无响应、窗口黑屏、菜单栏乱码、无法输入中文等。首先确认你的Ubuntu桌面环境已经安装了图形界面所需的组件。如果是在远程SSH上启动记得用-ssh X11转发或者在VNC环境下操作直接无图形终端里启动Verdi大概率会报cannot open display。其次Verdi启动时可以加-debug参数看内部日志定位到具体是哪一步卡住。比如verdi -debug -f filelist.f -ssf hello.fsdb 如果报缺少图形库按照2.1节里的列表补齐即可。如果菜单栏文字显示为方块或乱码大部分情况下是字体配置问题可以在.bashrc里设置export LANGC export LC_ALLC这里把locale强制成C比让Verdi去适配UTF-8更可靠。虽然界面显示全英文但至少不会乱码。还有一个影响体验但影响不大但也很常见的问题Verdi在Ubuntu 22.04的Wayland显示服务器下可能会有缩放异常或无法正常弹出窗口。遇到这种情况切换到Xorg会话再启动Verdi通常就能解决。4.5 常见问题速查表把上述问题整理成一个速查表后续再遇到问题可以按图索骥。现象可能原因解决方式vcs: command not foundPATH未设置或未生效检查~/.bashrc中PATHsource ~/.bashrc找不到libtinfo.so.5系统库版本过新安装libtinfo5或做软链接找不到libstdc.so.5缺少兼容库sudo apt install libstdc5找不到libXext.so.6缺少图形库sudo apt install libxext6VCS编译时GCC报错GCC版本不兼容安装gcc-9设置CC/CXXlicense连接失败SNPSLMD_LICENSE_FILE配错lmutil lmstat测试连接license报Invalid hosthostname不匹配修改license文件或/etc/hostsVerdi黑屏图形库缺失安装libnss3、libnspr4、libxext6Verdi乱码locale问题设置LANGC仿真时提示内存不足物理内存不够增加swap或加物理内存仿真卡死无响应磁盘空间不足df -h检查磁盘清理日志这张表里包含了我实际踩过的一大部分坑。另外还有一个经验每次改完环境变量或库都要新开一个终端再测试因为source ~/.bashrc只对当前终端生效。很多同学在同一个终端里反复开关环境结果误判成配置不生效。5. 实际安装中的补充经验与建议5.1 安装日志留存和回滚策略安装EDA工具最怕的是装到一半失败然后不知道从哪一步开始。所以我每次安装都会把终端输出保存一份到日志文件比如installer 21 | tee /home/eda/install_log.txt手动解压的时候也一样把命令和输出都记下来。这样出问题时能回溯是哪一步报错。同时每完成一个大步骤比如VCS装好、Verdi装好、license启动好我就做一个标记文件touch /home/eda/install_progress_1_vcs_done这个习惯看起来土但在多台机器上重复安装时特别有用。哪一步漏了、哪一步出错了一目了然。如果安装失败想重来不建议直接删除/opt/synopsys整个目录再重装。更好的做法是保留安装包和解压目录只删除对应子目录然后重新安装或重新解压。比如VCS装坏了只需要sudo rm -rf /opt/synopsys/vcs然后重新解压或重新installer安装即可不会影响已经配好的license和Verdi。5.2 shell环境选择bash还是csh很多EDA工具的官方文档和教程默认使用csh/tcsh因为老一代工具和脚本很多是csh写的。但Ubuntu默认shell是bash这在配置环境变量时会产生一些小分歧。我的建议是现代VCS和Verdi对bash的支持已经很完善用bash完全没问题。只需要确保.bashrc里语法正确即可。但如果你沿用了公司里csh风格的脚本那就要额外注意变量引用的差异。比如csh里设置环境变量用setenvbash里用export。如果你需要同时兼容两种shell可以在~/.cshrc和~/.bashrc里各写一份环境变量配置。这样做确实麻烦但对于需要跑老脚本的验证环境来说能省掉不少麻烦。还有一个细节用su - eda切换用户时会加载目标用户的~/.bashrc所以环境变量会正常生效。但如果用sudo -iu eda或su eda不带-可能不会加载~/.bashrc导致环境变量缺失。这个问题在研究环境里特别容易碰到。5.3 多版本共存与版本切换有时候工作中需要多个VCS版本共存比如一个老项目用2016版一个新项目用2020版。我建议利用环境变量来做版本切换而不是同时把多个版本都加到PATH里。比如在/home/eda/下创建两个文件setenv_vcs2018.sh和setenv_vcs2020.sh内容类似export VCS_HOME/opt/synopsys/vcs/O-2018.09-SP2 export PATH$VCS_HOME/bin:$PATH想用哪个版本就source哪个文件。这样完全避免了多个版本的vcs命令互相覆盖的问题。Verdi同理用VERDI_HOME切换。实际使用中VCS和Verdi的版本不一定需要严格配对但建议使用同一发布周期的版本比如都是2018.09-SP2这样PLI接口文件匹配度最高联合仿真时出问题的概率最小。5.4 从安装到协同工作流的完整清单最后给出一个我在每台新机器上部署VCS和Verdi时都会走的完整清单照着做基本不会漏步骤。确认系统架构、磁盘空间、内存。更新系统并安装基础依赖包。创建专用用户和安装目录。准备好安装包和合法license文件。安装SCL并启动license服务。安装VCS和Verdiinstaller或手动解压。配置环境变量并验证vcs -version和verdi -version。运行最小仿真用例验证编译和仿真链路。运行FSDB用例验证Verdi联调链路。将安装步骤和踩坑记录存档方便后续维护。这套流程我自己已经走了很多遍每次遇到新机器都能在一个小时内完成部署。第一次装的时候因为不知道依赖库和license的坑折腾了整整一天。所以我特别理解第一次接触这些工具的同学希望这篇记录能帮你把时间从“折腾安装”挪到“真正做验证”上去。写这篇文章时我又特意从零开始在我的Ubuntu 22.04工作站上走了一遍安装流程确认文中的命令和步骤都能复现。如果你在安装过程中遇到文里没提到的问题建议先去查VCS的安装日志和license日志这两份日志能告诉你百分之八十以上的真相。EDA工具安装本身不复杂复杂的是把系统环境、工具版本、license三者的兼容性对上只要耐下心来一步步排查最终都能搞定。