UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor juvanto
Visitor

vivado下仿真错误的问题

我用vivado写了两个IP核,两个IP核都用到了一些浮点运算的IP核。

在同一个testbench文件下单独进行仿真时,两个IP核都能成功仿真,但同时仿真两个IP核时则出现了下面这个错误:

1540022378.png

请问这个错误是什么原因,我的ip核和testbench文件都是用verilog写的,有大神可以解答一下吗?在此谢过

0 项奖励
17 条回复
Moderator
Moderator

回复: vivado下仿真错误的问题

Hi, @juvanto

 

从报错信息来看是Axi-stream的data端口数据位宽不匹配的问题。你有检查过相关端口吗?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

我检查过,端口宽度都是匹配的。

图上是我的两个IP核,我把FFTprocess1这个IP核去掉,只仿真positioning时是可以成功仿真的

1540026346(1).png

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

上述错误所报的positioning.v line 73是对应什么样的代码呢?

能否把示例工程打包上传看一下?

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

第73行就是这样一句例化语句,工程已经上传在附件。

1540206360(1).png

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

你发过来的只是顶层及IP wrapper文件,从positioning.v报错部分看,是例化了floating point IP,需要再看一下IP的模型文件。

 

请将工程打包( File > Project > Archive)上传。如果文件太大,可以去除仿真结果( <project>.sim/sim_1文件夹)再打包,同时打包对话框中去除Include Run Results选项。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

我去除了sim再打包工程有190MB,上传提示文件太大了无法上传。

floating point IP用的是vivado2017.2自带的浮点数运算IP核

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

那么你将两个IP的配置文件上传吧,我可以本地尝试重建复现。

FFTprocess1_0.xci

positioning_0.xci

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

xci文件已经上传

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

这两个不是IP Catalog的自带IP,是自己打包生成的,所以还是需要相应的IP文件才能在本地生成。

从EzMove给你发了链接,你注册的邮箱会收到两封邮件,包含地址和临时用户名密码,请登陆上传之前压缩的整个工程。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

你好,我已经把工程发给你了,谢谢!

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

@juvanto我在本地打开工程跑仿真获取FFTprocess1_0的文件失败,尝试重新生成这个IP也无法成功。

CRITICAL WARNING: [IP_Flow 19-663] Failed to copy file 'e:/position/testFFT/fftnpo/fftnpo/posi.v', it does not exist.
CRITICAL WARNING: [IP_Flow 19-157] Failed to copy file from 'e:/position/testFFT/fftnpo/fftnpo/posi.v' to '/fftnpo/fftnpo.srcs/sources_1/ip/FFTprocess1_0/e:/position/testFFT/fftnpo/fftnpo/posi.v'.
ERROR: [IP_Flow 19-167] Failed to deliver one or more file(s).
ERROR: [IP_Flow 19-3505] IP Generation error: Failed to generate IP 'FFTprocess1_0'. Failed to generate 'Synthesis' outputs:

 

是否还有其他自定义打包的IP文件没有包含进来?

positioning_0可以生成。

 

另外,我看了一下positioning.v,报错的floating point IP输入管脚s_axis_a_tdata由以下内部信号驱动,

reg signed [63:0] p_rec_led_reci_s_data;

但此信号并没有驱动源。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

你好,不好意思,之前发给你的工程可能有点问题,我重新发了一个新的给你

关于仿真的问题,当我像图中这样在testbench把FFTprocess1这个IP注释掉不仿真时,positioning这个IP是可以仿真的;

但当FFTprocess1和positioning同时进行仿真时则会报错。

5J7NM6T]O~8EUP[O{{WI3LQ.png

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

新发送的工程可以复现此错误。原因是两个自定义的IP中包含的floating_point_0.vhd对于s_axis_a_tdata有不同的位宽定义。

到工程目录的fftnpo1\fftnpo1.sim\sim_1\behav,打开VHDL编译列表testbench_vhdl.prj,

# compile vhdl design source files
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/positioning_0/src/floating_point_0_1/sim/floating_point_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_1/sim/floating_point_1.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/xfft_0/sim/xfft_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_0/sim/floating_point_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_2/sim/floating_point_2.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_3/sim/floating_point_3.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_4/sim/floating_point_4.vhd"

 

注意到有两个同名的vhdl文件,这两个文件中对报错端口定义是不一样的。

在编译的打印log中,也可以看到相关告警:

INFO: [VRFC 10-307] analyzing entity floating_point_0
WARNING: [VRFC 10-1193] overwriting existing primary unit floating_point_0 [xxx/fftnpo1/fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_0/sim/floating_point_0.vhd:59]

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

那请问应该怎样解决这个问题

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

避免同名的module有不同的定义。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Visitor juvanto
Visitor

回复: vivado下仿真错误的问题

因为floating_point IP核有很多功能,对于不同的功能,同名端口的位宽定义可能不同。这么说的话,在我的工程里,

FFTprocess1和positioning这两个自定义IP核就不能同时使用具有不同功能的floating_point IP核了?

 

0 项奖励
Xilinx Employee
Xilinx Employee

回复: vivado下仿真错误的问题

我的理解是底层的文件名应随IP命名而改变,以区分不同的配置。在你的这个例子里,floating_point_0_1和floating_point_0都对应了同样的文件名floating_point_0.vhd。

vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/positioning_0/src/floating_point_0_1/sim/floating_point_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_1/sim/floating_point_1.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/xfft_0/sim/xfft_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_0/sim/floating_point_0.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_2/sim/floating_point_2.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_3/sim/floating_point_3.vhd"
vhdl xil_defaultlib "../../../fftnpo1.srcs/sources_1/ip/FFTprocess1_0/ip/floating_point_4/sim/floating_point_4.vhd"

 

可以看到,其他的IP都有对应同名的文件名,比如floating_point_1 --> floating_point_1.vhd。

 

建议均改为完全不同的后缀名试一下。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励