取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
2,396 次查看
注册日期: ‎10-19-2018

vivado下仿真错误的问题

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

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

1540022378.png

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

0 项奖励
17 回复数
Highlighted
Moderator
Moderator
2,388 次查看
注册日期: ‎05-23-2018

Hi, @juvanto

 

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

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
2,373 次查看
注册日期: ‎10-19-2018

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

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

1540026346(1).png

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,317 次查看
注册日期: ‎07-17-2008

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

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

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Visitor
Visitor
2,299 次查看
注册日期: ‎10-19-2018

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

1540206360(1).png

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,289 次查看
注册日期: ‎07-17-2008

你发过来的只是顶层及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 项奖励
Highlighted
Visitor
Visitor
2,259 次查看
注册日期: ‎10-19-2018

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

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

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,254 次查看
注册日期: ‎07-17-2008

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

FFTprocess1_0.xci

positioning_0.xci

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
2,246 次查看
注册日期: ‎10-19-2018

xci文件已经上传

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,216 次查看
注册日期: ‎07-17-2008

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

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

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
2,252 次查看
注册日期: ‎10-19-2018

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

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,236 次查看
注册日期: ‎07-17-2008

@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.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
2,230 次查看
注册日期: ‎10-19-2018

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

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

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

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

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,202 次查看
注册日期: ‎07-17-2008

新发送的工程可以复现此错误。原因是两个自定义的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.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
2,177 次查看
注册日期: ‎10-19-2018

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

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,171 次查看
注册日期: ‎07-17-2008

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

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
2,152 次查看
注册日期: ‎10-19-2018

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

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

 

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
2,129 次查看
注册日期: ‎07-17-2008

我的理解是底层的文件名应随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 项奖励