Cómo depurar diseños FPGA

3

Se supone que esto es un seguimiento de mi pregunta anterior cómo obtener un diseño FPGA que definitivamente funcionará en hardware real . He progresado mucho desde que hice la pregunta anterior (gracias a los increíbles consejos y comentarios). Ahora he pasado a diseñar diseños FPGA mucho más grandes, he aprendido mucho y ahora me enfrento a problemas mucho más difíciles de resolver (nada que no me guste, pero algunos consejos ocasionales siempre son buenos).

Ahora estoy muy familiarizado con las diversas metodologías y prácticas de diseño que deben realizarse al diseñar circuitos FPGA. Sin embargo, de vez en cuando logro arruinar las cosas escribiendo algo estúpido en el código que me cuesta mucho tiempo y energía. Además, como mis diseños se han vuelto mucho más complicados (recientemente, he estado trabajando en usar el Controlador de Memoria dentro del FPGA de Xilinx Spartan 6 y en escribir un generador de tráfico para el mismo) y la simulación en Xilinx ISim ahora lleva mucho tiempo (A veces tengo que esperar media hora para comprobar si mi diseño funciona, solo para encontrar que cometí un error estúpido y comenzar de nuevo).

Esto se ha vuelto frustrante ahora, y necesito un consejo. Hasta ahora, el plan a prueba de tontos que solía garantizar para que todo en mi diseño funcionara correctamente era verificar el valor de todos y cada uno de los registros y conexiones en mi diseño y verificar si sus valores son los esperados, y algunas veces mirar el esquema de RTL. Se ha vuelto muy tedioso ahora (debido a la razón mencionada anteriormente) y me pregunto si hay mejores maneras de depurar un diseño de FPGA y asegurar que funcionen correctamente:

  • quizás una mejor manera de depurar circuitos
  • quizás un mejor software de simulación

El consejo que recibí sobre temas similares en el pasado ha sido oro, y les agradezco a todos por sus esfuerzos.

    
pregunta ironstein

2 respuestas

3

La clave para reducir el tiempo de simulación es dividir el diseño en submódulos más pequeños que se pueden simular o incluso verificar mucho más rápido. Por lo tanto, identificarás y corregirás errores aún más rápido.

Por supuesto, en algún momento debe simular el diseño general (o partes más grandes de él). Pero, si diseña la interfaz de los submódulos con cuidado, generalmente solo será necesario corregir un pequeño número de errores. Y cada error identificado en el diseño más grande se puede usar para mejorar el banco de pruebas para el sub-módulo.

Sí, la simulación del controlador de memoria Xilinx lleva mucho tiempo, pero vale la pena. También es posible depurar un diseño utilizando el analizador lógico en el chip (Xilinx Chipscope o Xilinx Vivado), pero tendrá que colocar & dirija su diseño cada vez que esté agregando una señal al analizador lógico para identificar el error al principio. Luego, para corregir el error, tienes que sintetizarlo de nuevo. Esto suele requerir más tiempo, y luego simula incluso un diseño compacto.

    
respondido por el Martin Zabel
1

¡Es fantástico ver que has llegado a esta etapa! De ahora en adelante, debes tratar de comprender este hecho bien conocido que dice: "escribir bancos de pruebas es verdaderamente un arte".

Debe conocer los "bancos de pruebas de autocomprobación", la técnica le ayuda a automatizar algunos procedimientos de prueba.

Recuerde que incluso las grandes empresas como Intel no pudieron dominar el arte de las pruebas y, por ejemplo, produjo procesadores Pentium defectuosos en 1994 que podrían producir resultados incorrectos al realizar cálculos avanzados de punto flotante.

Las pruebas son difíciles, es un arte.

    
respondido por el Ehsan

Lea otras preguntas en las etiquetas