从零开始的DFT工程师! 特别篇:synopsys 安装
这里是EDA工具安装特别篇,来进行一个synopsys verdi 和 VCS的安装记录。网上关于synopsys的安装教程其实也不少了,我这里就简单记录一下我在安装过程中遇到的问题。
参考安装步骤:https://zhenhuizhang.tk/post/icsynopsys-xi-lie-ruan-jian-an-zhuang/
step 1 : archlinux
我首先想到的是在archlinux上安装,这个系统算是我最熟悉用的也最习惯的一个了,hyprland配置的也不错(无用的知识增加了)
但是实话说问题是很多的,包括但不限于对synopsys的某些32位文件的运行失败,安装vcsmx失败等等,总之算是很难做出来,尤其是似乎synopsys遇到非远古lib的时候很容易出错,正所谓学习知识和使用舒心养眼的现代化工具不可兼得(逃)
这里有时间再去试试能不能解决这些问题,不过现在还是先去进行下一步了。
step2 : almalinux
familiar with RedHat
在centos停止维护的今天redhat系大家用的多的就是rocky和alma,这里选择用alma试一试,先开一个虚拟机尝试能不能完成安装。
首先第一步当然是创建一个共享文件夹,这一部分我在上一期已经写过详细步骤了,这里需要注意的地方是我对于redhat系不太熟悉,准备VBoxAddition的环境方式如下:
1 |
|
之后就可以完成vbox addition的编译和共享文件的使用了。
install synopsys verdi & vcs
生成installer非常简单,就不谈了,我们看过程中值得记录的东西:
- not found libXss.so.1
最简单的问题,下载即可:
1 |
|
插播一则设置
其实也没啥大事,就是说咱们可以去设置几个镜像,这样下载可以快一点。我们可以编辑自己的镜像文件,首先进入/etc/yum.repos.d/,先看一下默认的文件,可以创建一个自己的repo almalinux.repo,
并且配置相关mirrorlists,之后在运行:
1 | sudo dnf clean all |
- eth0
有种说法是synopsys公司设置的默认网卡名称是eth0,把自己的网卡改名为eth0可以节省很多麻烦,不管真假,我们先改了。
编辑文件/etc/default/grub,在GRUB_CMDLINE_LINUX=""当中加上net.ifnames=0 biosdevname=0,之后在重新生成grub.cfg:
1 |
|
这个方法是简单的把所有网卡都改成eth的形式,也有只修改单个网卡的名称的办法:
通过ip link看到了网卡名为enp0s3,先查看其MAC地址:
1 |
|
然后修改/etc/udev/rules.d/70-presistent-net.rules,
1 |
|
然后只修改网卡名称配置不修改会导致连不上网,所以我们还需要修改相关的配置文件。我们可以通过/etc/NetworkManager/system-connections/文件下的<网卡name>.nmconnection文件来配置,写入interface-name=eth0,之后reload NetworkManager: sudo chmod 600 <.nmconnection> && sudo nmcli connection reload && sudo systemctl restart NetworkManager && sudo nmcli connection up eth0
也可以通过nmcli直接配置:
1 |
|
- verdi 的安装依赖
完成verdi的安装需要一些环境依赖,安装方式如下:
1 |
|
- dat 文件格式修改
把 Synopsys.dat 直接搬到linux上会在行末多出^M,这是由于两个系统的行结束符不同导致的,我们需要一个工具进行修复。
1 |
|
- FLEXlm version
真是太让我伤心了呀,我花了时间好不容易找到了一个24版,我看着崭新的vcs-all,留下了口水以后又看着license格式不匹配流下了失望的泪水。

step3 : come back to archlinux
还是回到自己熟悉的地方去了。由于在做这一部分的时候处于红温的状态很多东西没有记录,不过其实多数也是补依赖或者构建软链这种操作,类似于上一期的操作。
我印象中需要补充的东西有:gnu-time(感觉vcs的time是一个硬编码,不然为什么会有这个错),libxml2.so.2.
一开始就应该坚持到底的呀
一个小巧思
在初次进行vcs测试的时候,报错里有一句:undefined reference to pthread_yield,看起来是因为glibc的部分函数被废弃了,当时很想给他vcs文件直接改了,但是怕出现无法解决的巨大问题我还是先去找函数了。经过grep sched_yield/usr/include/sched.h,发现其实还是留了一个接口,那就可以直接进行一个编译:
1 |
|
然后把它编译成.o:gcc -c pthread_yield.c -o pthread_yield.o
直接上演一出太子换狸猫。
成果展示

安装步骤
虽然感觉很多教程说的很详细了,但是我还是来简单口述一下流程:
首先在installer文件夹下运行SynopsysInstaller.run,我们就获得了下载器setup.sh,用这个下载器分别下载scl verdi vcs,用hostname 和 ip a查出自己的hostname和mac地址(这个地址如果使用有线网卡就用enpxxx,如果是wifi就用wlpxxxx),获取license,在Synopsys.dat 里面第二行,DAEMON 后面改成snpslmd <SCL_HOME>/linux64/bin/snpslmd,使用dos2unix完成从win到unix文件结束符形式的修改,把Synopsys.dat 放到<SCL_HOME>/admin/license,然后在自己的shell配置里写好路径,我这里给出我的示例:
1 |
|
之后就可以快乐的开始sv了。
注:此处我使用的scl工具实际上是2024.06版本,因为2018.06版本的scl需要一些32位文件的运行支持,我不太愿意捣鼓这个就直接用的新版本。
此处给出我的pacman/yay lists方便对照安装以及修复
从零开始的DFT工程师! homepage
project homepage is here.




