我正在研究通过 pcie 连接的 fpga 控制器。我可以调试硬件的唯一方法是使用chipscope。所以我通过我的驱动程序执行命令并检查来自 fpga 的信号。
问题是每次我想检查信号以调试项目时,构建项目并将其加载到 fpga 都需要花费大量时间。
有没有更简单的方法来调试连接到 pcie 的 fpga?
有没有办法可以模拟所有的 pcie 信号而根本不必运行 fpga?
我正在研究通过 pcie 连接的 fpga 控制器。我可以调试硬件的唯一方法是使用chipscope。所以我通过我的驱动程序执行命令并检查来自 fpga 的信号。
问题是每次我想检查信号以调试项目时,构建项目并将其加载到 fpga 都需要花费大量时间。
有没有更简单的方法来调试连接到 pcie 的 fpga?
有没有办法可以模拟所有的 pcie 信号而根本不必运行 fpga?
您可以做的一件事是将 PCIe 事务跟踪捕获到缓冲区中,然后将其读出并在仿真期间将其作为测试台中的激励进行重放。
您可以使用 BRAM 或可能连接 FPGA 的 DRAM 作为缓冲区。
您可能需要一条备用路径来读取缓冲区。Xilinx 有一个 JTAG 到 AXI 主控器,您可以使用它来读出缓冲区。或者,如果您的 PCIe 稳定,您可以通过这种方式读取它。
正如一些评论中提到的,您希望在仿真中而不是在硬件中进行详细调试。通过chipscope调试、确定问题、提出一组新信号来探测、重新编译并将新代码推送到FPGA中的循环时间。与仿真中的调试相比,这是一个非常痛苦的过程。
如果您尝试调试 PCIe,您可以从商业供应商或可能从 OpenCores 获得 PCIe BFM,或者您可以使用所描述的捕获缓冲区。
如果您尝试调试自己的逻辑并且 PCIe 只是因为这是设备的接口而出现,那么您最好编写自己的 BFM,将事务驱动到您的内部逻辑,就好像它是 PCIe 内核一样。在 sim 中重现问题,在那里进行调试,然后在您拥有良好的代码覆盖率和一套体面的通过测试后返回 FPGA。