这里是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
2
3
4
5
6
7
8
9
10
11
12
13
14

sudo dnf update -y # update dnf env

sudo dnf install -y gcc make perl bzip2 tar elfutils-libelf-devel kernel kernel-devel kernel-headers
# compile env.

# 检查内核版本是否匹配
uname -r
rpm -q kernel-devel-$(uname -r)

# 如果不匹配就需要更新内核
sudo dnf update -y kernel kernel-devel kernel-headers
sudo reboot

之后就可以完成vbox addition的编译和共享文件的使用了。

install synopsys verdi & vcs

生成installer非常简单,就不谈了,我们看过程中值得记录的东西:

  1. not found libXss.so.1

最简单的问题,下载即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

sudo dnf install -y epel-release
sudo dnf update -y
sudo dnf install -y libXScrnSaver

# editor
# sudo dnf install -y neovim ### need epel-release
# vscode:

# .sh
# sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

#sudo tee /etc/yum.repos.d/vscode.repo << 'EOF'
#[code]
#name=Visual Studio Code
#baseurl=https://packages.microsoft.com/yumrepos/vscode
#enabled=1
#gpgcheck=1
#gpgkey=https://packages.microsoft.com/keys/microsoft.asc
#EOF
#
#
#sudo dnf check-update
#sudo dnf install code

插播一则设置

其实也没啥大事,就是说咱们可以去设置几个镜像,这样下载可以快一点。我们可以编辑自己的镜像文件,首先进入/etc/yum.repos.d/,先看一下默认的文件,可以创建一个自己的repo almalinux.repo
并且配置相关mirrorlists,之后在运行:

1
2
3
4
sudo dnf clean all
sudo dnf makecache
sudo dnf update -y

  1. eth0

有种说法是synopsys公司设置的默认网卡名称是eth0,把自己的网卡改名为eth0可以节省很多麻烦,不管真假,我们先改了。

编辑文件/etc/default/grub,在GRUB_CMDLINE_LINUX=""当中加上net.ifnames=0 biosdevname=0,之后在重新生成grub.cfg:

1
2
3
4
5

sudo grub2-mkconfig -o /boot/grub2/grub.cfg # BIOS
sudo grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg # UEFI
sudo reboot

这个方法是简单的把所有网卡都改成eth的形式,也有只修改单个网卡的名称的办法:

通过ip link看到了网卡名为enp0s3,先查看其MAC地址:

1
2
3

cat /sys/class/net/enp0s3/address

然后修改/etc/udev/rules.d/70-presistent-net.rules

1
2
3
4


SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="08:00:27:12:34:56", NAME="eth0"

然后只修改网卡名称配置不修改会导致连不上网,所以我们还需要修改相关的配置文件。我们可以通过/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
2
3
4
5
6


sudo nmcli connection add type ethernet ifname eth0 con-name eth0
sudo nmcli connection modify eth0 ipv4.method auto
sudo nmcli connection up eth0

  1. verdi 的安装依赖

完成verdi的安装需要一些环境依赖,安装方式如下:

1
2
3
4
5
6
7

sudo dnf groupinstall "Development Tools" -y
sudo dnf install -y libXScrnSaver.x86_64 xcb-util xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil libXext libXrender libXtst libXi libXrandr libXt libXmu

# rocky
# sudo dnf install -y libXScrnSaver libnsl libpng12 glibc libX11 libXext libXrender libXtst libXss

  1. dat 文件格式修改

Synopsys.dat 直接搬到linux上会在行末多出^M,这是由于两个系统的行结束符不同导致的,我们需要一个工具进行修复。

1
2
3
4

sudo dnf install dos2unix && dos2unix Synopsys.dat


  1. FLEXlm version

真是太让我伤心了呀,我花了时间好不容易找到了一个24版,我看着崭新的vcs-all,留下了口水以后又看着license格式不匹配流下了失望的泪水。

license version

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
2
3
4
5
#include<sched.h>
void pthread_yield(){
sched_yield();
}

然后把它编译成.o:gcc -c pthread_yield.c -o pthread_yield.o

直接上演一出太子换狸猫。

成果展示

安装步骤

虽然感觉很多教程说的很详细了,但是我还是来简单口述一下流程:

首先在installer文件夹下运行SynopsysInstaller.run,我们就获得了下载器setup.sh,用这个下载器分别下载scl verdi vcs,用hostnameip 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28




# Synopsys

export SNPSLMD_LICENSE_FILE=27000@archlinux

#vcs
export VCS_HOME=/home/jiao/synopsys/vcs-mx/O-2018.09-SP2/
export PATH=$PATH:$VCS_HOME/bin
export LD_LIBRARY_PATH=$VCS_HOME/linux64/lib:$LD_LIBRARY_PATH
export VCS_ARCH_OVERRIDE=linux64
export VCS_NO_LINUX_CHECK=1
#verdi
export LD_LIBRARY_PATH=/home/jiao/synopsys/verdi/Verdi_O-2018.09-SP2/share/PLI/VCS/linux64
export VERDI_HOME=/home/jiao/synopsys/verdi/Verdi_O-2018.09-SP2/
export PATH=$PATH:$VERDI_HOME/bin
#scl
export SCL_HOME=/home/jiao/synopsys/scl/2018.06/
export PATH=$PATH:$SCL_HOME/linux64/bin


#LICENCE
export LM_LICENSE_FILE=/home/jiao/synopsys/scl/2018.06/admin/license/Synopsys.dat
alias lmg="lmgrd -c /home/jiao/synopsys/scl/2018.06/admin/license/Synopsys.dat"


之后就可以快乐的开始sv了。

注:此处我使用的scl工具实际上是2024.06版本,因为2018.06版本的scl需要一些32位文件的运行支持,我不太愿意捣鼓这个就直接用的新版本。

此处给出我的pacman/yay lists方便对照安装以及修复

pacmanlists

yaylists

从零开始的DFT工程师! homepage

project homepage is here.