取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
376 次查看
注册日期: ‎05-05-2019

Vivado工程布局布线后功能仿真错误问题

跳至解决方案

我在用vivado2017.4版本软件生成XDMA IP的demo后,用vivado自带的仿真工具进行了布局布线后的仿真,但是工具报出了几个同类型的错误,请问是什么原因?谢谢!

log.png

0 项奖励
1 解答

已接受的解答
Highlighted
Xilinx Employee
Xilinx Employee
308 次查看
注册日期: ‎07-17-2008

我看了一下,确实可以复现这个错误。以其中一行出错为例,

case (board.EP.C_DATA_WIDTH)
64: data_beat_count = ((payload_bytes % 32'h8) == 0) ? (payload_bytes/32'h8) : ((payload_bytes/32'h8)+32'h1);
128: data_beat_count = ((payload_bytes % 32'h10) == 0) ? (payload_bytes/32'h10) : ((payload_bytes/32'h10)+32'h1);
256: data_beat_count = ((payload_bytes % 32'h20) == 0) ? (payload_bytes/32'h20) : ((payload_bytes/32'h20)+32'h1);
endcase

原因是行为级仿真中的EP模块(也就是设计的顶层xilinx_dma_pcie_ep.sv)并不是以RTL的形式被编译,而是实现后的仿真网表(board_func_impl.v),参数以运行时的值代入,写入网表,因此不存在像RTL一样的独立参数。

概括来说,就是example design的tb形式不适用于functional simulation。

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

在原帖中查看解决方案

5 回复数
Highlighted
Xilinx Employee
Xilinx Employee
359 次查看
注册日期: ‎07-17-2008

布局布线后的仿真理论上只编译test bench和单一的post-impl仿真网表。报错的这个文件看上去是相关的RTL wrapper文件,请确认。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
339 次查看
注册日期: ‎05-05-2019

报错的这个文件是Tesebench中的,从内容来看,并不是RTL wrapper,而且这个Testbench是通过Vivado生成的,并非自己编写的,所以理论上不会有啥问题。前仿真还是正常的,到后仿真就报错了。之前也在论坛上看了一些帖子,但没发现可用的解决方案。如果可以的话,我可以把工程发送给您,您在电脑上运行一下。

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

我自己生成个example design,看能否复现吧。

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
309 次查看
注册日期: ‎07-17-2008

我看了一下,确实可以复现这个错误。以其中一行出错为例,

case (board.EP.C_DATA_WIDTH)
64: data_beat_count = ((payload_bytes % 32'h8) == 0) ? (payload_bytes/32'h8) : ((payload_bytes/32'h8)+32'h1);
128: data_beat_count = ((payload_bytes % 32'h10) == 0) ? (payload_bytes/32'h10) : ((payload_bytes/32'h10)+32'h1);
256: data_beat_count = ((payload_bytes % 32'h20) == 0) ? (payload_bytes/32'h20) : ((payload_bytes/32'h20)+32'h1);
endcase

原因是行为级仿真中的EP模块(也就是设计的顶层xilinx_dma_pcie_ep.sv)并不是以RTL的形式被编译,而是实现后的仿真网表(board_func_impl.v),参数以运行时的值代入,写入网表,因此不存在像RTL一样的独立参数。

概括来说,就是example design的tb形式不适用于functional simulation。

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

在原帖中查看解决方案

Highlighted
Visitor
Visitor
301 次查看
注册日期: ‎05-05-2019

好的,明白了,非常感谢

0 项奖励