Ubuntu22.04安装VCS2018踩坑记录
参考资料:VCS2018在Ubuntu20 18安装步骤、VCS compiling error issues - devindd、Ubuntu22.10安装VCS、Verdi
1 资源获取
百度网盘链接 提取码:3pib
- 文件内容
libpng12.so.0:
后面可能会需要这个包scl_keygen_2030:
这个是License生成器scl_v2018.06:
这个是SCL安装包,用来synopsysinstaller_v5.0:
这个是安装器vcs_vO-2018.09-SP2:
这个是vcs的安装包verdi-2018.9:
这个是verdi安装包
2 安装步骤
2.1 建立安装路径,更改权限
建立图2的安装目录文件:Liscen用来存放license文件,SCL2018;vcs2018、verdi是对应的安装路径;vcs_install用来存放安装包好安装器。
2.2 运行安装器进行安装
-
进入
synopsysinstaller_v5.0
文件夹,运行./SynopsysInstaller_v5.0.run
,会出现下面界面,提示选择安装器安装路径,直接在本路径下安装即可
安装后出现setup.sh
-
运行
setup.sh
,进入安装界面,当前安装器可以依次安装Scl、vcs、verdi。下面以vcs安装为例。 -
安装器安装的详细过程
选择安装包的路径
选择要安装的地址,也就是第一步创建的目录
点击next,进入下面界面,选择vcs
一路next,进入下面界面,点击Accept,install
,然后等待安装
安装完后会弹出安装失败,不管这个错误,点击OK
。
然后跳转到这个目录,手动运行这个脚本,根据提示选择路径。
出现下面界面,点击Dismiss
, vcs安装结束。
-
重复第2步和第3步,选择不同的安装包和安装路径,继续安装
verdi
和scl
2.3 生成License文件
- 在linux系统终端运行
ifconfig
获取电脑的物理地址和host-name,如下图所示;
- 前往window系统运行这个
scl_keygen.exe
文件生成License文件Synopsys.dat
。
出现下面界面,图中需要修改三个地方,
1 2
为电脑物理地址,填写物理地址的时候中间的:
记得去掉。3
为linux的host-name。 - 打开
Synopsys.dat
文件,需要修改的地方有一个
需要在1
这个地方添加snpslmd的路径,注意路径记得改成自己的路径,如下图所示
同时需要注意license有效期的问题,其他的license生成器可能生成的license有效期是2019,需要手动改成2030。本license生成器license有效期为2030,所以不需要改动。如下图所示
- 修改完毕之后,将
Synopsys.dat
转移到Linux系统下的Liscen目录中。
2.4 设置环境变量
在根目录下打开.bashrc
,将下面内容复制进去,下面的路径记得改成自己的路径;设置好后运行source .bashrc
命令使环境变量生效。
1 | export export SYNOPSYS="/usr/software/synopsys" |
2.5 验证License
通过下面命令验证license,直到出现Passed
,如下所示。如果多次验证依旧没有出现Passed
,那么重新生成license,重新验证
1 | sssverify 自己的license路径 |
2.6 启动lmgrd
lmgrd
是license管理工具,用于将license运行在后台,使软件正常工作,目前对于lmgrd理解只有这些。由于在环境变量设置了命令,所以输入lmli
就可以启动lmgrd
。
- 问题一:
路径明明正确,通过ls
也可以看到lmgrd
,但它就是找不到lmgrd 。
解决方案: 这是因为没有32位运行库导致的通过下面命令安装即可。
1 | apt-get install lsb |
-
问题二:
再次执行lmli
,提示没有/usr/tmp目录和在/usr/local/flexlm/licenses目录下找不到license。这个是肯定的,因为你压根就没有建这些目录
解决方案: 在/usr建立tmp目录,建立local/flexlm/licenses目录,把Synopsys.dat复制到licenses目录下,并把名字改成license.bat -
问题三:
提示打不开license,这是因为环境变量SNPSLMD_LICENSE_FILE
的问题,在这个环境变量中赋值了两次,第一次是license的位置,第二次是用户。
解决方案: 这里需要license的位置,所以先把第二个赋值注释,在后面启动DVE中,又会需要第二次赋值,再把注释打开 -
问题四:
由于上面lmgrd没有启动成功,但是端口号他还是占用的。当你再次输入lmli,应该会出现下面错误,显示端口号被占用
解决方案: 输入下面命令终止该端口号。首先释放license,显示lmgrd占用的端口号,然后结束这个端口号进程,如下图所示1
lmdown ps auf | grep lmgrd kill -9 2381
然后再次输入lmli
,启动lmgrd。
-
问题五:
提示verdi语法错误Syntax error: “(“ unexpected
解决方案: 代码对于标准bash而言没有错,因为Ubuntu为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。1
sudo dpkg-reconfigure dash
选择no
2.7 验证软件是否安装成功
- dve
输入dve
,再次报错,提示SNPSLMD_LICENSE_FILE指示错误server。
解决方案: 不慌,这个就是咱上面遗留的问题,把上面的注释打开即可。再次输入dve
,见证dve的真面目吧!!!
- verdi
输入verdi
,不要慌张,该来的总会来的。提示没有libpng12.so.0这个库
解决方案: 还记得第一步提到的那个库文件么,这时候就派上用场了。输入下面命令,注意libpng12.so.0是文件夹里面的文件,移动整个文件夹无法解决问题再次输入1
sudo cp libpng12.so.0 /usr/lib/x86_64-linux-gnu/
verdi
,激动吧!
- VCS
输入vcs -help
,坚持就是胜利!出现下面错误解决方案: 这是因为Ubuntu下默认将1
/bin/sh:0: illegal option –h
sh
链接到bash
,输入下面命令重新链接。输入1
rm -f /bin/sh ln -s /bin/bash /bin/sh
vcs -help
,好了,你的努力不是白费的。
2.8 设置开机自启动License
在/etc/profile.d/
目录下创建lmli.sh
1 | cd /etc/profile.d/ |
写入下面内容
1 | /usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd -c |
至此,vcs安装结束!
3 VCS启动过程中的问题
1. VCS安装license激活的问题
在VCS安装好后,使用scl工具对license进行激活时,可能会遇到如下错误:
1 | bash: /usr/synopsys/scl/scl/linux64/bin/lmgrd: No such file or directory |
该问题的原因是没有lsb库,在保证license文件路径正确的情况下,使用如下命令安装lsb库:
1 | sudo apt-get install lsb-core |
安装完成后reboot虚拟机即可解决上述问题,但可能还会出现flexlm文件不存在的问题:
1 | Can't make directory /usr/tmp/.flexlm, errno: 2(No such file or directory) |
这个问题比较好解决,直接创建一个flexlm文件就行了:
1 | 1. sudo mkdir /usr/tmp |
4 VCS编译仿真中的问题
4.1 recipe for target ‘simv’ failed问题
在临时license授权成功后,就可以对编写的RTL代码编译和运行,但由于系统一开始缺少一些设置,直接运行VCS可能会出现一些问题,一开始会遇到这样的问题:
1 | /bin/sh: 0: Illegal option -h |
该问题是由于Ubuntu操作系统将sh链接到了dash,手动修改sh链接到bash即可解决该问题:
1 | sudo mv /bin/sh /bin/sh_bak |
4.2 product_timestamp error问题
解决上述问题后,可能会遇到product_timestamp error的问题:
1 | Makefile:109: recipe for target 'product_timestamp' failed |
这是因为操作系统安装的gcc版本太高,VCS调用的版本较低,需要修改VCS启动的变量,将gcc指定为g+±4.8,同时在你的vcs命令中添加如下命令:
1 | simv:filelist.f |
如果操作系统没有安装gcc 4.8,会报错:
1 | make[1]: Entering directory '/home/alanwu/Documents/RISCV-SIM/csrc' |
安装gcc 4.8即可,这里安装直接从官方下载安装(如下方式)即可,不建议使用安装包的方式完成。
1 | cd |
4.3 g+±4.8 unrecognized command line option '-no-pie’错误
这里重点强调下g++的-no-pie错误,在安装好gcc 4.8和g+±4.8以后,可能还会报出g+±4.8: error: unrecognized command line option '-no-pie’的错误:
1 | g++-4.8: error: unrecognized command line option '-no-pie' |
出现该错误的原因是g++版本较低,VCS的预编译选项中会添加-no-pie标志,但g++不能够识别该命令,在VCS编译完成后的/csrc/Makefile文件中,会增加预编译选项:
csrc是个临时文件,真正产生该文件的位置是在安装的VCS路径下面:
因此,进入VCS安装路径对应的/bin/文件夹下,打开vcs文件,将其中的PRE_LDFLAGS参数后面的-no-pie删除,即可成功解决该问题。
4.5 undefined reference to ‘vfs_set_dir_map’问题
在vcs编译选项中加入下列语句:
1 | -LDFLAGS -Wl,--no-as-needed |
4.5 undefined reference to pthread_yield问题
原因是:/home/synopsys/vcs_2018.9/vcs/O-2018.09-SP2/linux64/lib/vcs_save_restore_new.o
中的pthread_yield已在最新的glibc放弃使用了。注意文件夹路径
1 | # 1. 备份 |