前年,发表了一篇文章《VCS独立仿真Vivado IP核的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP核时遇到的一些问题及解决方案,发表之后经过一年多操作上也有些许改进,所以写这篇文章补充下。
在仿真Vivado IP核时分两种情况,分为未使用SECURE IP核和使用了SECURE IP核。
对于没有使用SECURE IP核的IP核仿真,只需要在VCS的命令行加上‘-y’选项,并给出库文件路径。这些库文件在$VIVADO_INSTALLER_PATHdataverilogsrc,其中$VIVADO_INSTALLER_PATH是VIVADO的安装路径,进入对应的版本号,比如2019.2,进入后找到data文件夹依次往下寻找。找到后可以把这些库文件复制到虚拟机,每个文件夹的库文件包含的内容不同,然后如下图:
即可加入对应的库文件夹。IP核仿真结束。
对于使用了SECURE IP核仿真的情况,除了要包含上面的这些库文件外,还要把SECURE IP加入到VCS;
首先,找到SECURE IP文件夹,在$VIVADO_INSTALLER_PATHdatasecureip,将里面的文件复制到虚拟机。每个文件夹包含的功能不同。
之前的文章讲接下来的操作如下:
操作上还是太复杂,这里简化操作如下。首先,VCS在仿真SECURE IP里面的VP文件时,需要加上一句“+verilog2001ext+.vp”,这句话的意思是将VP文件以verilog2001标准执行。出处在:
这是一份日语版本的UG900(参考资料2),但是在最新的UG900 英文版里(参考资料3),并没有这相关的内容;我的猜测是Xilinx不推荐独立仿真的方式,更加主推Vivado和VCS联合仿真,或者使用“export_simulation”等TCL语句将仿真库编译好直接使用的方式。
此外,也不需要我们修改SECURE IP文件夹的vcs_secureip_cell.list.f里面的路径,在makefile文件里使用如下方法:
使用export命令定义XILINX_VIVADO的路径,这样vcs_secureip_cell.list.f会根据这个路径去查找对应的文件。
注意,SECURE IP是加密之后的IP,而VIVADO在2016版本后更换了加密密钥,所以VCS2017之前的版本只能使用VIVADO2017之前的SECURE IP。
此外,还有网友提出问题,VIVADO项目(source)IP核文件夹里,哪些东西是对仿真有用的?
首先,IP核文件夹里的$IP_NAME_stub.v,$IP_NAME是生成IP的名字,这个文件是没有用的,它只有对IP的端口定义;其次,进行功能仿真时,可以选择$IP_NAME_sim_netlist.v,这个文件注释专门写着是为功能仿真准备的,推荐使用这类文件;最后,也可以使用$IP_NAME.v,这个文件大多数情况也可以用来仿真。
注意,如果存在$IP_NAME_sim_netlist.v和$IP_NAME.v时,只能选择一个文件加入仿真,否则会出现redefine的报错。因为IP核文件夹里面可能存在多个verilog文件,推荐删去$IP_NAME_stub.v,保留$IP_NAME_sim_netlist.v和$IP_NAME.v中的一个,然后在VCS命令里将文件夹的verilog都包含进来。
可能有人就会问,既然项目里的IP文件夹包含了verilog文件,为什么还要加入那些库;这些库大部分是作为基础库存在,供各类IP核调用,是它们的相同部分,而项目里的IP文件夹是它们之间不同的部分。
全部0条评论
快来发表一下你的评论吧 !