如何模拟PCIe来调试我的fpga端点

时间:2014-07-03 12:30:12

标签: verilog fpga xilinx pci-e hardware-programming

我在通过pcie连接的fpga控制器上工作。 我可以调试硬件的唯一方法是使用chipcope。所以我通过我的驱动程序执行命令并检查来自fpga的信号。

问题是,每次我想检查信号以调试项目时,需要花费大量时间来构建项目并将其加载到fpga。

有没有更简单的方法来调试连接到pcie的fpga?

有没有办法可以模拟所有的pcie信号而不必运行fpga?

2 个答案:

答案 0 :(得分:0)

您可以做的一件事就是将一段PCIe事务捕获到一个缓冲区中,然后将其读出并在模拟过程中将其重放为测试平台中的激励。

您可以使用BRAM或可能附带FPGA的DRAM作为缓冲区。

您可能需要一个备用路径来读取缓冲区。 Xilinx有一个JTAG到AXI主机,你可以用来读出缓冲区。或者,如果您的PCIe稳定,您可以通过这种方式阅读。

答案 1 :(得分:0)

正如几条评论中所提到的,您希望在模拟中而不是在硬件中进行详细的调试。通过chipcope进行调试的循环时间,确定问题,提出一组新的信号来探测,重新编译,并将新代码推送到FPGA中。与模拟中的调试相比,这是一个非常痛苦的过程。

如果您正在尝试调试PCIe,您可以从商业供应商处获得PCIe BFM,也可以从OpenCores获取,或者您可以使用所描述的捕获缓冲区。

如果您正在尝试调试自己的逻辑而PCIe只是因为它是设备的接口而进入,您最好编写自己的BFM,将事务驱动到内部逻辑,就好像它是PCIe核心一样。在sim中重现问题,在那里调试,然后在你有良好的代码覆盖率和一套不错的通过测试后返回FPGA。