之前在Ubuntu20
上下VCS
,花了好几天时间,本来想写博客避免以后重复劳动。但由于各种原因拖了一两个月,这次由于疫情原因,期末考试推迟,所以就再次在Ubuntu18
上下了VCS
,顺便写博客记录。
以下VCS2018
安装方法适用于 Ubuntu20
、Ubuntu18
,亲测可用。其他Linux发行版没试过,但应该步骤差不多。
文章目录
安装包
百度网盘:链接:https://pan.baidu.com/s/19CtwqWcxpv-4wPyAD4_ITw
提取码: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安装包
安装步骤
1、建立安装路径,更改权限
建立图2的安装目录文件:Liscen用来存放license文件,SCL2018;vcs2018、verdi是对应的安装路径;vcs_install用来存放安装包好安装器。通过以下命令建立目录和更改拥有者,以为后面需要对这些文件进行读写,更改拥有者比每次sudo
更加方便,当然也可以chmod 777 ./
。
sudo mkdir 文件名
sudo chown 拥有者 文件名
2、运行安装器进行安装
进入synopsysinstaller_v5.0
文件夹,运行SynopsysInstaller_v5.0.run
,会出现下面界面,提示选择安装器安装路径,直接在本路径下安装即可
安装后出现setup.sh
运行setup.sh
,进入安装界面,点击next
依次安装Scl、vcs、verdi。下面以vcs安装为例:
./setup.sh
选择安装包的路径
选择要安装的地址,也就是第一步创建的目录
点击next,进入下面界面,选择vcs
一路next,进入下面界面,点击Accept,instaall
,然后等待安装
安装完后会弹出安装失败
错误原因如下所示,这个没影响,只是一个脚本没有被执行,这个脚本是用来安装
文档的
可以跳转到这个目录,手动运行这个脚本,根据提示选择路径。也可以不管这个错误,点击OK
出现下面界面,点击Dismiss
,vcs安装结束。然后重复运行setup.sh
,按照上面步骤安装verdi SCL
3、生成License文件
在window下运行这个.exe
文件,.exe是windows下的执行文件,无法在linux下运行,所以先在window下生成License,再放到linux下。
出现下面界面,图中需要修改三个地方,
1 2
为电脑物理地址,通过ifconfig
命令可以查看。填写物理地址的时候中间的:
记得去掉。3
为linux的host-name,如下图所示。点击Generate
,可以在本文件夹下看到Synopsys.dat
,这个就是生成的License文件。
打开Synopsys.dat
文件,需要修改的地方有一个
需要在1
这个地方添加snpslmd的路径,注意路径记得改成自己的路径,如下图所示
同时需要注意license有效期的问题,其他的license生成器可能生成的license有效期是2019,需要手动改成2030。本license生成器license有效期为2030,所以不需要改动。如下图所示
改完之后把Synopsys.dat
移到Liscen目录下。window下的文件放到linux下每行会有^M
字符,这是因为linux和doc的换行符不一样。需要通过下面命令去掉^M
dos2unix 文件名
4、设置环境变量
通过下面命令在根目录下打开.bashrc
,有其他编辑器也可以通过其他编辑器打开,如:sublime
gedit .bashrc
将下面内容复制进去,下面的路径记得改成自己的路径,改完后记得cd
一下自己的路径,避免手残出错,找半天找不出来
#export export SYNOPSYS="/usr/software/synopsys"
export VCS_TARGET_ARCH="amd64"
export PATH="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/gui/dve/bin:"$PATH
export DVE_HOME="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/gui/dve"
export PATH="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/bin:"$PATH
export VCS_HOME="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2"
#export VCS_ARCH_OVERRIDE="linux"
#verdi
export PATH="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2/bin:"$PATH
export VERDI_HOME="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
export LD_LIBRARY_PATH="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2/share/PLI/lib/LINUX64":$LD_LIBRARY_PATH
export VERDI_DIR="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
export NOVAS_INST_DIR="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
export NPI_PLATFORM="LINUX64_GNU_472"
export LD_LIBRARY_PATH="$NOVAS_INST_DIR/share/NPI/lib/LINUX64_GNU_520":$LD_LIBRARY_PATH
export NOVAS_HOME="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
#LICENSE
export SNPSLMD_LICENSE_FILE="/usr/stone/software/Liscen/Synopsys.dat"
export SNPSLMD_LICENSE_FILE=27000@自己的host-name
export LM_LICENSE_FILE="/usr/stone/software/Liscen/Synopsys.dat"
alias lmli="/usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd -c /usr/stone/software/License/Synopsys.dat"
#SCL
export PATH=/usr/stone/software/SCL2018/scl/2018.06/linux64/bin:$PATH
alias dve="dve -full64 &"
alias vcs64="vcs -full64"
alias verdi="verdi -full64 &"
设置好环境变量后记得通过下面命令生效环境变量
source .bashrc
5、验证License
通过下面命令验证license,直到出现Passed
,如下所示。如果多次验证依旧没有出现Passed
,那么重新生成license,重新验证
sssverify 自己的license路径
6、启动lmgrd
lmgrd
是license管理工具,用于将license运行在后台,使软件正常工作,目前对于lmgrd理解只有这些。由于在环境变量设置了命令,所以输入lmli
就可以启动lmgrd
。大部分问题都出现这个地方!!!
问题一:
路径明明正确,通过ls
也可以看到lmgrd
,但它就是找不到lmgrd 。
解决方案: 这是因为没有32位运行库导致的通过下面命令安装即可,第一个为Ubuntu下的命令,第二个是centos下的命令,根据需要选择一个执行命令。
apt-get install lsb
yum 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占用的端口号,然后结束这个端口号进程,如下图所示
lmdown
ps auf | grep lmgrd
kill -9 2381
然后再次输入lmli
,启动lmgrd,好了,见证成功吧~~跑着这里就算启动成功,可以ctrl+c
结束
验证软件是否安装成功
dve
输入dve
,再次报错,提示SNPSLMD_LICENSE_FILE指示错误server。
解决方案: 不慌,这个就是咱上面遗留的问题,把上面的注释打开即可。再次输入dve
,见证dve的真面目吧!!!
verdi
输入verdi
,不要慌张,该来的总会来的。提示没有libpng12.so.o这个库
解决方案: 还记得第一步提到的那个库文件么,这时候就派上用场了。输入下面命令,注意libpng12.so.0是文件夹里面的文件,移动整个文件夹无法解决问题
sudo cp libpng12.so.0 /usr/lib/x86_64-linux-gnu/
再次输入verdi
,激动吧!
VCS
输入vcs -help
,坚持就是胜利!出现下面错误
/bin/sh:0: illegal option –h
解决方案: 这是因为Ubuntu下默认将sh
链接到bash
,输入下面命令重新链接。
rm -f /bin/sh
ln -s /bin/bash /bin/sh
输入vcs -help
,好了,你的努力不是白费的。
验证vcs与verdi联调
写一个简单的加法器
add.v
module add (
input [20:0] A ,
input signed [17:0] B ,
output signed [22:0] C);
wire signed [21:0] A_signed;
assign A_signed = {1'b0,A};
assign C = A_signed + B;
endmodule
test.v
`timescale 1ns/1ns
module test;
reg clk;
reg rst_n;
reg [20:0] A;
reg signed [17:0] B;
wire signed [22:0] C;
initial begin
clk = 0;
rst_n = 0;
A = 21'b0;
B = 18'b0;
#10;
rst_n = 1;
repeat(80) @(posedge clk) begin
A = A + 21'b1;
end
#2000;
$finish;
end
always #5 clk = ~clk;
initial begin
$fsdbDumpfile("./rtl.fsdb");
$fsdbDumpvars("+all");
end
add add_inst(
.A(A),
.B(B),
.C(C));
endmodule
Makefile
假设你已经装上的 make 和 gcc,且熟悉make编译规则
VCS = vcs -full64 -sverilog -timescale=1ns/1ns \
+v2k \
-debug_access+all -kdb -lca\
-f file.f
comp:
$(VCS)
verdi:
verdi -ssf rtl.fsdb
clean:
rm -rf csrc simv* *.lib *.lib++ nLint*
rm -rf *.log *.vpd *.fsdb* *.key *log rtl.fsdb*
-full64: 在64-bit模式下编译,生成64-bit模式仿真的可执行文件
-sverilog: 支持systemverilog语法
-timescale=1ns/1ns: 仿真时间刻度,要和tb保持一致
+v2k: 支持verilog2001
-debug_access+all: VCS2014之后加入debug_access,不需要手动配置verdi.tab,和静态库pli.a,只需要设置$VERDI_HOME,VCS会自动查找所需文件
-kdb -lca: 用于生成kdb.elab++,位于simv.daiddir目录下
-f file.f: 指定文件列表,file.f存着要编译文件的路径,可以通过shell命令find 该目录路径 -name "*.*v" 生成的文件名
-ssf rtl.fsdb: 加载fsdb波形文件。verdi是第三方软件,支持的波形文件为.fsdb
,dve为vcs自带的软件,支持的波形文件为.vpd
。
verdi -ssf rtl.fsdb: verdi加载.fsdb文件
生成.fsdb有两种方法,一种是在vcs编译时生成,需要在tb顶层添加下面两个系统函数
$fsdbDumpfile("./rtl.fsdb");//生成rtl.fsdb波形文件
$fsdbDumpvars("+all");//把所有变量全都加进去
然后在用verdi加载波形文件。
第二种方法是通过verdi界面生成fsdb。编译完后通过输入下面命令
./simv -gui=verdi
打开verdi界面,然后在verdi命令行输入run
,也可以生成.fsdb文件,但是这种方法比较麻烦,而且每加一个变量都得重新run
,不然看不到这个变量的波形。所以一般采用第一种方式。
仿真
也可以通过输入下面命令通过dve仿真
./simv -gui
开机自启动License
在/etc/profile.d/
目录下创建lmli.sh
cd /etc/profile.d/
sudo touch lmli.sh
sudo chmod 777 lmli.sh
写入下面内容
`/usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd -c /usr/stone/software/License/Synopsys.dat -l /usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd.log`
这样开机不用手动启动lmgrd了
好了,vcs安装至此结束。能够看到这里的人应该都对vcs有着某种强烈的欲望吧。总得来说,安装vcs就是简单的排错,需要耐心。