Simulación FPGA - Banco de pruebas VHDL

He estado diseñando una placa FPGA que se convertirá en un solo nodo de muchos en un clúster de computación que estoy construyendo para computación científica. La esperanza es hacerlo escalable y permitirme actualizarlo para expandirlo a otras formas de computación (seguridad, simulaciones, etc.).

Esencialmente, he estado usando placas de desarrollo para simular y probar GPIO y USB, Ethernet y similares. Sin embargo, mi implementación actualmente usa 4 FPGA, y tengo la intención de aumentar ese número y mi presupuesto simplemente no admite la compra de múltiples placas de desarrollo para probar el movimiento de datos de trabajo entre los FPGA.

Esencialmente, necesito simular mi entorno y, aunque tengo mucha capacidad computacional (tengo un laboratorio completo a mi disposición), actualmente estoy tratando de desarrollar un banco de pruebas para mover datos entre los FPGA, así como un controlador de memoria DDR3. que tengo la intención de implementar para el movimiento y la manipulación de grandes datos.

Dado que la mayor parte de mi trabajo con FPGA me ha permitido evitar el uso de un banco de pruebas, todavía tengo que desarrollar uno para verificar mis resultados simulados. Todo lo cual se ha hecho en Xilinx hasta ahora.

¿Alguna idea sobre dónde puedo comenzar con el desarrollo de un banco de pruebas VHDL?

Respuestas (2)

Todo depende de lo que quieras simular.

Es bastante fácil crear un banco de pruebas para crear un reloj, configurar algunas E/S, etc., pero se vuelve mucho más complicado si desea simular USB u otros protocolos.

Esta página web le dará una comprensión general bastante buena sobre cómo hacer esto:

Programación de FPGA paso a paso

Existen algunas herramientas comerciales para ayudarlo con la creación de TB, pero también hay herramientas gratuitas como " The VHDL Test Bench " para ayudarlo a crear el TB de manera más rápida y sencilla.

Para un proyecto grande como el suyo (supongo que es grande ya que tiene 4 FPGA en su diseño y muchas IP), le sugiero que se siente y decida QUÉ quiere probar, cuál es su objetivo con la simulación y cuánto. tiempo que desea gastar en hacer esto. Luego haga una lista de los bloques que desea probar y busque archivos de estímulo para ellos o escríbalos usted mismo.

Estoy simulando el paso de datos entre los FPGA. Sé lo que quiero probar, solo que siempre he tenido hardware para verificar en lugar de simular todo el entorno. Intentaré usar el enlace que me proporcionaste para comenzar a hacerlo. Dado que lo que estoy haciendo es crear un paralelismo entre los FPGA dados grandes conjuntos de datos que deben calcularse. También configuraré pruebas para verificar la escritura en DRAM. ¡Gracias!
Si desea probar 4 FPGA, incluido el acceso a DRAM, está viendo una simulación MUY grande y lenta, ¿es la simulación RTL lo que le interesa (funcionalidad pura) o el tiempo?

Los bancos de pruebas no son tan difíciles. Un punto de partida en la lectura podría ser el sitio web de Doulos . Allí encontrará una breve introducción a los bancos de pruebas.

En resumen, los escribes en un lenguaje HDL (VHDL, Verilog, ...). El banco de pruebas está jugando el papel del mundo fuera de su diseño/FPGA. Entonces podría generar algunos relojes de entrada u otras señales de entrada. Y podría verificar si el resultado de su diseño es lo que esperaba. Su diseño en sí mismo es entonces un bloque instanciado (generalmente llamado DUT, Dispositivo bajo prueba) en su banco de pruebas.

Compile el banco de pruebas y diseñe con un compilador y simule con, por ejemplo, Modelsim (Mentor) o Isim (Xilinx).