【问题标题】:How to simulate PCIe to debug my fpga endpoint如何模拟 PCIe 来调试我的 fpga 端点
【发布时间】:2014-07-03 12:30:12
【问题描述】:

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

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

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

有没有一种方法可以模拟所有的 pcie 信号而根本不必运行 fpga?

【问题讨论】:

  • 我觉得这个应该移到ElectronicsSE,因为它主要是关于调试硬件的。
  • 搜索“PCIe BFM”(总线功能模型)。当您想要模拟总线协议的一侧时,您可以使用它。我不知道你能不能找到,但那里可能有一些东西。
  • 您实施的是哪一层 PCIe?许多 FPGA 具有硬 IP 内核并为 TLP 提供流接口......
  • @Morgan 问题实际上是在询问如何摆脱硬件并在仿真中进行调试,这在历史上一直是 SE 可以接受的话题。
  • @chiggs,这不是我理解问题的方式,我专注于这一行 Is there an easier way to debug an fpga connected to pcie 但我认为 OP 真的只是想调试设计。

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


【解决方案1】:

您可以做的一件事是将 PCIe 事务跟踪捕获到缓冲区中,然后将其读出并在模拟期间将其作为测试台中的激励进行重放。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2012-12-22
      • 2020-06-18
      • 2015-06-17
      相关资源
      最近更新 更多