文章目录
一、安装流程
1.1 准备安装包:scl,vcs,verdi,sysynopsys installer。
sysynopsys installer:synopsys软件安装工具,通过该软件安装VCS和Verdi。
scl:license在线安装工具,最后通过该工具注册license。
vcs_mx_vO-2018.09-SP2:VCS Verilog+VHDL 混合仿真软件。
vcs_vO-2018.09-SP2:VCS Verilog仿真软件。
verdi-2018.9:Verdi软件。
scl_keygen:license生成工具。
1.2 安装vcs、verdi、scl软件
- 新建4个软件安装文件夹,并修改文件夹权限为777。
- sysynopsys_installer
- vcs
- verdi
- scl
- 首先运行synopsysinstaller_v5.0目录下的./SynopsysInstaller_v5.0.run文件,安装installer,安装路径选择上面新建的sysynopsys_installer目录。
- 安装vcs、verdi、scl。在这里,vcs、verdi、scl安装步骤是一样的。进入sysynopsys_installer文件夹,运行./setup.sh,会调出安装界面,需要注意的是,第一次会让你选择安装包所在的位置,第二次选择安装的地点。这里笔者的安装地点为上面路径提前准备好的文件夹,其他一路next结束。安装过程自动进行,直到安装结束。
1.3 配置环境变量
在~/.bashrc中添加如下的环境变量,需要修改SynopsysList路径、export LM_LICENSE_FILE=27000@ubuntu中的hostname,这里为ubuntu。$SynopsysList/scl/scl/2018.06/admin/license/Synopsys.dat为下面获得的license文件。
export SynopsysList=/home/Andy/eda_software
export DVE_HOME=$SynopsysList/vcs/vcs/O-2018.09-SP2/gui/dve/
export VCS_HOME=$SynopsysList/vcs/vcs/O-2018.09-SP2/
export VERDI_HOME=$SynopsysList/verdi/verdi/Verdi_O-2018.09-SP2/
#dve
export PATH=$PATH:$VCS_HOME/gui/dve/bin
alias dve='dve -full64'
#VCS
export PATH=$PATH:$VCS_HOME/bin
alias vcs='vcs'
#VERDI
export PATH=$PATH:$VERDI_HOME/bin
alias verdi='verdi'
#scl
export PATH=$PATH:$SynopsysList/scl/scl/2018.06/linux64/bin/
export VCS_ARCH_OVERRIDE=linux
#LICENCE
export LM_LICENSE_FILE=27000@ubuntu
alias lmg='lmgrd -c $SynopsysList/scl/scl/2018.06/admin/license/Synopsys.dat'
1.4 开放27000端口
license端口号设置为27000,一般都是这个端口号不需要修改,使用hostname查询hostid名称,将其填在LM_LICENSE_FILE后面。
环境变量设置好后,需要对开放设置的2700端口号,使用下面语句开放端口号。firewall没有安装的,需要apt安装。
firewall-cmd --zone=public --add-port=27000/tcp --permanent
firewall-cmd --reload
有些虚拟机中的应用程序可能会占用27000端口号,因此可以使用下面的语句对2700端口号的应用程序进行管理:
#允许27000端口号运行
sudo ufw allow 27000
sudo ufw enable
sudo ufw reload
sudo ufw status
#查询27000端口号进行并kill占用进程
netstat -ap | grep 27000
kill -9 XXX(看到的占用端口的ID号)
一般来说虚拟机并没有进程占用该端口,所以kill不kill就无所谓了。
1.5 生成license
生成之前,需要修改Synopsys.src中的时间,将下面的2020改为2029。对应scl_keygen.exe软件中的截止时间也改为30-dev-2029。
生成之前在虚拟机上查询hostid和安装MAC地址,这里需要记住ether后面的6个8bit数值。
hostname
ifconfig
打开scl_keygen.exe工具。
将查询到的hostname和MAC号填在上图指示的位置,HOST ID Daemon和HOST ID Feature填相同的内容,生成的license日期也需要修改下,修改到你需要的日期。
填完以后点Generate,会在目录下生成最新的Synopsys.dat文件,同时界面也会给出生成的文件代码。
打开生成的Synopsys.dat文件,修改第二行路径,将该路径指到scl安装的对应snpslmd路径下:
保存后退出,将该文件复制到共享文件夹下,同时共享到Ubuntu下面。这里需要注意的是,不要复制界面上的,虽然文件内容一致,但是copy到Ubuntu下面有编码格式不一致的问题。如果在Ubuntu下面打开Synopsys.dat不显示乱码,则表示两者编码格式一致。
上述完成后,切换到Ubuntu下,运行lmg命令激活,激活为自动过程,但是由于虚拟机的特性,需要每次启动虚拟机后注册激活一遍,最终显示激活完成。
1.6 激活
激活license是最关键的步骤。在之前可能需要安装:
sudo apt-get install lsb-core
终端输入lmg即可激活。
可能遇到的问题
- Failed to open the TCP port number in the license
解决:输入指令:lmdown,然后y。等待两分钟,再次输入指令:lmg_vcs。(激活license)
2. 问题:lmgrd can’t make directory /usr/tmp/.flexlm when running server on Ubuntu
解决:输入指令:
sudo -i
mkdir /usr/tmp/
chmod 777 /usr/tmp/
参考博客:https://blog.csdn.net/heyuming20062007/article/details/120744167
二、打开verdi、dve
2.1 输入dve
即可打开dve。dve是vcs的界面化。
- 解决Verdi使用报错的问题 链接库缺失问题
报错内容:sh: /usr/synopsys/verdi/Verdi_O-2018.09-SP2/etc/lib/libstdc++/LINUXAMD64/libtinfo.so.5: no version information available (required by sh)
解决方法
sudo apt-get install libncurses5 -y
sudo mv /usr/synopsys/verdi/Verdi_O-2018.09-SP2/etc/lib/libstdc++/LINUXAMD64/libtinfo.so.5 /usr/synopsys/verdi/Verdi_O-2018.09-SP2/etc/lib/libstdc++/LINUXAMD64/libtinfo.so.5.bak
sudo cp /lib/x86_64-linux-gnu/libtinfo.so.5 /usr/synopsys/verdi/Verdi_O-2018.09-SP2/etc/lib/libstdc++/LINUXAMD64/libtinfo.so.5
- 报错:verdi_2016/bin/verdi: 433: /home/book/synopsysoftware/verdi_2016/bin/verdi: Syntax error: “(” unexpected或者启动vcs总是报 Illegal option -h
在ubuntu上,/bin/sh默认是链接到/bin/dash的,当你从源代码编译软件的时候,dash可能会导致一些错误,至少我遇到过类似问题,因此,我把/bin/sh的连接改为了/bin/bash
应该这样做:
rm -f /bin/sh
ln -s /bin/bash /bin/sh
- 或者是libpng12.so.0: cannot open shared object file: No such file or directory
sudo -i #先进入root权限
wget -q -O /tmp/libpng12.deb http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
dpkg -i /tmp/libpng12.deb
rm /tmp/libpng12.deb
#用wget得到相应的包
2.2 使用中遇到的问题
-
vcs编译报错:未定义参数变量:libvcsnew.so: undefined reference to
-
问题描述:在利用vcs进行仿真的时候,遇到如下 “libvcsnew.so: undefined reference to xxxxxx" 这种报错,这里提供解决方法。
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs::vfsReleaseVirtualFileList(VFILE_LIST*)'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `ZsGetDfsInstId'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snpsCheckCallocFromGroupFunc'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `ZsFinalize'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_feof'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snps_mem_named_push_context'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_fflush'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_fseek'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snpsGroupSize'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_enable_multi_process_support'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snps_mem_get_current_group'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsucli.so: undefined reference to `storeMiscTfCb'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snpsHighMemory'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs::vfsGetVirtualFileList(char const*, char const*, int)'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snpsStrdupFunc'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs::fseek(vfs::CFile*, long, int)'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `ZsGetValueLocation'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsucli.so: undefined reference to `shutDownNativeUcli'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snps_mem_unmap_freed_pages'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_cleanup'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snpsCallocFromGroup'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsucli.so: undefined reference to `isUcliEngineStarted'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs::mfprintf(vfs::CFile*, char const*, ...)'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `ZsExecuteNBAs'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `snps_mem_set_out_of_memory_routine'
/opt/synopsys/vcs_vO-2018.09-SP2/linux64/lib/libvcsnew.so: undefined reference to `vfs_fwrite'
- 解决方案:
在vcs命令后面加入选项 -LDFLAGS -Wl,–no-as-needed。
vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
2.3 vcs的使用
- 验证license
sssverify /home/kx2/eda_software/scl/scl/2018.06/admin/license/Synopsys.dat