使用VCS仿真Vivado IP核时遇到的问题及解决方案

描述

前年,发表了一篇文章《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文件夹依次往下寻找。找到后可以把这些库文件复制到虚拟机,每个文件夹的库文件包含的内容不同,然后如下图:

Vivado

即可加入对应的库文件夹。IP核仿真结束。

对于使用了SECURE IP核仿真的情况,除了要包含上面的这些库文件外,还要把SECURE IP加入到VCS;

首先,找到SECURE IP文件夹,在$VIVADO_INSTALLER_PATHdatasecureip,将里面的文件复制到虚拟机。每个文件夹包含的功能不同。

之前的文章讲接下来的操作如下:

Vivado

操作上还是太复杂,这里简化操作如下。首先,VCS在仿真SECURE IP里面的VP文件时,需要加上一句“+verilog2001ext+.vp”,这句话的意思是将VP文件以verilog2001标准执行。出处在:

Vivado

这是一份日语版本的UG900(参考资料2),但是在最新的UG900 英文版里(参考资料3),并没有这相关的内容;我的猜测是Xilinx不推荐独立仿真的方式,更加主推Vivado和VCS联合仿真,或者使用“export_simulation”等TCL语句将仿真库编译好直接使用的方式。

此外,也不需要我们修改SECURE IP文件夹的vcs_secureip_cell.list.f里面的路径,在makefile文件里使用如下方法:

Vivado

使用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文件夹是它们之间不同的部分。  

      审核编辑:彭静

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分