Как имитировать PCIe для отладки моей конечной точки fpga

#verilog #fpga #xilinx #pci-e #hardware-programming

#verilog #fpga #xilinx #pci-e #аппаратное обеспечение

Вопрос:

Я работаю над контроллером fpga, подключенным через pcie. Единственный способ, которым я могу отладить аппаратное обеспечение, — это использовать chipscope. Поэтому я выполняю команды через свой драйвер и проверяю сигналы от fpga.

Проблема в том, что сборка проекта и загрузка его в fpga занимает много времени каждый раз, когда я хочу проверить сигнал для отладки проекта.

Есть ли более простой способ отладки fpga, подключенной к pcie?

Есть ли способ, которым я могу имитировать все сигналы pcie и вообще не запускать fpga?

Комментарии:

1. Я думаю, это следует перенести в ElectronicsSE , поскольку речь идет в основном об отладке аппаратного обеспечения.

2. Найдите «PCIe BFM» (функциональная модель шины). Это то, что вы используете, когда хотите имитировать одну сторону протокола шины. Я не знаю, найдете ли вы что-нибудь такое, но, возможно, там что-то есть.

3. Какой уровень PCIe вы внедряете? Многие FPGA имеют жесткие IP-ядра и предоставляют потоковые интерфейсы для TLP…

4. @Morgan на самом деле вопрос заключается в том, как отойти от аппаратного обеспечения и отлаживать в симуляции, что исторически было приемлемой темой для SE.

5. @chiggs, я не так понял вопрос, я сосредоточился на этой строке Is there an easier way to debug an fpga connected to pcie но я думаю, что OP действительно просто хотел отладить дизайн.

Ответ №1:

Единственное, что вы можете сделать, это записать трассировку транзакций PCIe в буфер, затем прочитать это и воспроизвести в качестве стимула в тестовом модуле во время моделирования.

Вы можете использовать BRAM или, возможно, подключенный к FPGA DRAM для буфера.

Вероятно, вам понадобится альтернативный путь для считывания буфера. У Xilinx есть JTAG для AXI master, который вы могли бы использовать для считывания буфера. Или, если ваш PCIe стабилен, вы можете прочитать это таким образом.

Ответ №2:

Как упоминалось в нескольких комментариях, вы хотите выполнить детальную отладку в симуляции, а не в аппаратном обеспечении. Время цикла для отладки с помощью chipscope, определения проблемы, создания нового набора сигналов для проверки, перекомпиляции и ввода нового кода в FPGA. Это очень болезненный процесс по сравнению с отладкой в симуляции.

Если вы пытаетесь отлаживать PCIe, вы можете либо получить PCIe BFM от коммерческого поставщика или, возможно, от OpenCores, либо вы можете использовать описанный буфер захвата.

Если вы пытаетесь отладить свою собственную логику, а PCIe используется только потому, что это интерфейс к устройству, вам лучше всего написать свой собственный BFM, который управляет транзакциями для вашей внутренней логики, как если бы это было ядро PCIe. Воспроизведите проблему в sim, отладьте там, затем вернитесь к FPGA, как только у вас будет хорошее покрытие кода и приличный набор тестов прохождения.