Cómo simular PCIe para depurar mi punto final de FPGA

2

Estoy trabajando en un controlador FPGA conectado a través de PCIe. La única forma en que puedo depurar el hardware es usando chipscope. Así que ejecuto comandos a través de mi controlador y reviso las señales del FPGA.

El problema es que lleva mucho tiempo construir el proyecto y cargarlo en el FPGA cada vez que quiero verificar una señal para depurar el proyecto.

¿Hay una forma más fácil de depurar un FPGA conectado a PCIe?

¿Hay alguna manera de simular todas las señales PCIe y no tener que ejecutar el FPGA en absoluto?

Para ser más específico, me gustaría algún tipo de infraestructura en la que pueda escribir un comando a través del controlador de Linux (writeq) y los paquetes de TLP se enviarían a mi diseño de verilog ...

    
pregunta yonigo

1 respuesta

3

Sí: debería estar depurando en la simulación en lugar de usar el chipscopio en el hardware. Para diseños complejos, casi seguro que ahorrará tiempo a largo plazo simulando.

Xilinx proporciona alguna ayuda para simular PCIe, primero debe probar y simular los diseños de ejemplo (consulte aquí para Virtex 7 o este Registro de respuestas para 6 series ).

Dado que es probable que esté utilizando un núcleo de IP rígido, es probable que no quiera verificar el propio núcleo PCIe, solo desea simular conjuntamente su software de controlador con su RTL. ¿Esencialmente desea ejecutar su código de controlador para crear TLP en su simulación para depurar la interacción entre su controlador y el hardware?

La mejor manera de lograr esto depende de su controlador. Por ejemplo, he hecho algo similar para un controlador basado en el espacio de usuario mmap : el código fuente está disponible en Github . Si desea simular los controladores del kernel, puede investigar QEMU o similar. Alternativamente, podrías burlarte de las llamadas del kernel.

La mejor opción realmente depende precisamente de lo que está tratando de lograr. Para validar su hardware, puede que sea mejor construir los ejemplos de Xilinx, manejar los BFM y no intentar simular de forma conjunta su controlador. Si desea desarrollar software contra hardware, invertir tiempo en co-simulación puede ser beneficioso.

    
respondido por el Chiggs

Lea otras preguntas en las etiquetas