记忆一隅

VCS+Verdi仿真Xilinx FPGA Vivado工程

2024-07-27 · 3 min read
FPGA

在使用过VCS配合Verdi进行波形仿真之后,再也无法忍受vivado那缓慢的仿真与卡顿的界面,Verdi追踪信号更是极快加速问题定位。不过FPGA的IP不能像普通Verilog IP一样直接使用VCS进行编译仿真,需要调用一些Vivado IP Library才可以,下面分享一下如何使用VCS进行FPGA工程波形前仿真。

环境配置

需要使用VCS+Verdi进行仿真,这两个必须要是安装好的,这个参考其他教程。然后就是Vivado,开发 Xilinx FPGA这个也是必备的。这些都有安装后,基础的环境就算是OK了。

FPGA工程基础准备

在工程中,调用的vivado IP核,都需要完成调用和预综合,在对应的IP文件目录生成对应的xxx_sim_netlist.v,这个一般是放在/工程目录/sources/new/ip/xxx 中。这些需要先Ready,是后面在VCS编译过程中调用到这些IP的基础。工程中调用的vivado原语则不用处理,正常使用即可。然后是准备好工程中所有使用到的.v文件,除了testbench以外,其他文件都不需要做特殊的修改。testbench文件需要额外添加以下内容,用于dump fsdb波形和mem等内容:

initial begin
	$fsdbDumpfile("xxx.fsdb"); //xxx根据需要替换为文件名
	$fsdbDumpvars();
end

filelist准备

VCS和Verdi的仿真和波形查看都基于filelist进行维护,而不是和Vivado一样的图形化界面。需要将所有调用的.v文件,lib文件等的目录和文件名整理到filelist文件中,VCS和Verdi会自动根据文件列表分析结构层次。

  1. V文件列表整理:可以使用下面的脚本,一件生成当前目录及子目录下所有文件的filelist

    find . -name "*.v" -exec ls -dl \{\} \; | awk '{print $9}' >> flist.f
    
  2. ip sim netlist列表整理,根据项目中调用的IP情况,将所有调用的IP sim netlist添加到filelist中。

  3. Vivado LIb文件添加,为了能够正常仿真IP和原语,还需要在filelist中添加额外的Vivado库文件,这些文件都存放在vivado的安装目录中,一般必须添加unisim库和glbl库,如果有调用serdes源语或者GT收发器,则还需要调用额外的.vp加密库。目录参考:xxx/xilinx/vivado/$vivado version$/data/srcxxx/xilinx/vivado/$vivado version$/data/secureip/

run脚本准备

用于配置VCS编译选项,调用filelist,可以写一个简单run文件,也可以写一个makefile作为管理,这里以一个简单run文件为例:
vcs -R -full64 -debug_all -debug_region+cell+encrypt -f flist.f
仿真开始后,就可以打开Verdi查看已经完成部分的仿真波形,快捷迅速的追踪信号,仿真速度也会比Vivado自带仿真快很多。