vcs与vivado联合仿真
系统:redhat8.10
软件版本:vivado2024.2,vcs-2023.12-SP2,verdi-2023.12-SP2
前言
一直听说vcs仿真非常之快(传言大型工程可以比moldesim快上4~5倍),还能够直接抓取所有波形,不用繁琐的手动添加重新仿真,verdi的界面也十分人性化,加之实在想摆脱vivado自带的仿真器,便有了这次折腾
vcs和verdi安装资料教程在创芯网有非常多,不同vivado版本适配的vcs版本也不同,不再赘述安装教程
基础环境
vcs2023要求使用gcc9.2编译vivado2024.2的IP库,gcctool中gcc9默认版本为gcc9.3.1,安装gcc9.2只能手动下载编译
安装gcc9_2
参考以下文章
Linux安装GCC 9.2.0-CSDN博客
安装后使用which gcc命令查看gcc9.2.0安装路径,然后将该地址复制到vivado编译IP库的gcc路径,如下图所示
其中预编译库路径vcs_lib 选项需要自己创建文件

安装以上配置完成IP库的编译
注意:在哪个路径打开的vivado,编译IP库后会在该路径生成一个synopsys_sim.setup文件,该文件非常重要,之后不管在哪个路径打开vivado,都需要拷贝一份在该路径下,不然会报错找不到预编译库的路径,这里博主踩了很久的坑!!
联合仿真教程
本次使用的参考工程为vcs内自带的test同步fifo工程,路径如下/home/yian/Synopsys/vcs/V-2023.12-SP2/doc/examples/basic-hdl/verilog/syn_fifo
只有一个hdl和一个bench文件,代码贴在最后,其中bench文件做了修改,在最后加入如下代码,生成verdi所需的fsdb文件
initial
begin
$fsdbDumpfile("fifo.fsdb");
$fsdbDumpvars(0,"tb_fifo","+all");//第一个参数表示dump所有层级的信号,第二个表示测试bench的名称,第三个表示dump进入fsdb中信息的种类,前两个参数实测可以缺省
end
创建vivado工程,将两个文件加入
基础配置
打开一个任意工程
进入设置,从上到下分别设置vcs的安装路径,gcc的安装路径,预编译库的路径

仿真配置
进入仿真配置界面,配置如下,其他选项保持默认



导出脚本
不知什么原因,vivado GUI界面直接launch可以运行不报错,但是却不能生成fsdb文件,因此采用脚本导出的方式,这种方式可以实现后期全脚本化仿真
在打开的工程中选择File–>Export Simulation,进行如下配置

仿真
将脚本导出来后,发现工程目录下多了一个VCS文件夹;
在VCS目录下有一个*.sh脚本文件,仿真直接执行该脚本,此时成功生成fsdb文件,执行命令
verdi -ssf fifo.fsdb &
打开verdi并且自动导入fsdb文件,界面如下

点击该按钮添加波形

点击左边的按钮全选波形,点击右边的按钮添加波形

效果如下,仿真成功

添加代码仿真
Verdi有一个非常强大的功能,就是可以根据代码定位波形,但是我们导入的波形里却没有代码,是因为没有filelist文件
查看vivado自带的shell脚本,发现里面有对应的filelist,在"compile()"之后的字符都是对应的RTL文件,将其copy出来,创建一个file.f文件,再拷贝进去即可。

执行命令
# -f为添加filelist
verdi -f file.f -ssf fifo.fsdb &
得到verdi的完全体

总结
经过以上操作,配合makefile和tcl脚本,我们可以实现全脚本化仿真编译等操作,无GUI的vivado运行比带GUI的快很多,vcs➕verdi还有非常多强大的功能,后续再探索吧。
分享一些十分优质的学习博文
VCS+DVE+Verdi+Makefile使用 - 咸鱼IC - 博客园
[VCS]VCS常用命令詳解_vcs -y-CSDN博客
Comments 7 条评论
@heisuo 3
博主你好,请问可以提供一份vcs-2023.12-SP2、verdi-2023.12-SP2的安装包吗?
请问可以分享下 vcs-2023.12-SP2,verdi-2023.12-SP2 的安装包吗?
没有eetop的账号
@sususu 不好意思,安装包我也没了
博主,请问我的vivado2024.2和vcs-2023.12-SP2联合仿真在编译库的时候会提示版本不匹配是怎么回事?我运行compile_simlib -help后提示兼容的版本是vcs – (Linux only) Verilog Compiler Simulator version V-2023.12-SP1,我的是SP2所以编译不了,请问博主是怎么解决这个问题的?
@ray 不好意思,时间太久远,有点忘记是怎么弄的了,你现在解决了吗