Cómo activar con éxito un núcleo ILA en Vivado

0

Estoy intentando depurar mi proyecto VHDL en Vivado 2014.03 en un KC705 .

Mi proyecto consta de varios módulos VHDL implementados como núcleos IP personalizados, que están conectados en un diseño de bloque.

Seleccioné mark debug en las señales que están conectadas al núcleo ILA.

Después de la síntesis, utilicé setup debug y agregué las redes que mi núcleo de ILA está analizando. El archivo .xdc se modificó e incluso volví a sintetizar el proyecto en caso de ...

Después de escribir el archivo binario resultante en el FPGA, obtengo dos núcleos ILA, los cuales se atascan en "esperando el disparador". A veces mis núcleos ILA respondieron a trigger immediate , pero siempre devuelven el mismo resultado y no es útil porque la ventana de tiempo que necesito es bastante corta.

Asigné una de las señales a un LED y confirmé que la señal existe.

También sinteticé todo el proyecto en VHDL puro sin utilizar ningún núcleo IP personalizado. De nuevo, tuve los mismos problemas.

Me gustaría realizar movimientos inteligentes al depurar este problema, ya que cada síntesis tarda aproximadamente dos horas y es muy fácil que el proyecto quede obsoleto.

¿Qué podría estar haciendo mal? ¿Qué puedo intentar a continuación?

    

1 respuesta

1

EDIT

Mientras tanto los problemas se han resuelto:

  1. Como era mi primer proyecto VHDL, pensé que sería una buena idea combinar la lógica combinatoria con la lógica síncrona para reducir el retardo de propagación del circuito. La parte combinatoria tenía un error, pero aún así simulaba con éxito porque no configuré la lista de sensibilidad correctamente.

Solución: evite utilizar circuitos combinatorios siempre que sea posible.

  1. Estaba haciendo algunos cálculos en tiempo de compilación , que funcionó bien en la simulación (probablemente computada con 64 bits), pero dio lugar a un desbordamiento durante la síntesis (probablemente computada con 32 bits). Como resultado del desbordamiento, el optimizador eliminó la mayor parte de mi proyecto, pero dejó la parte que estaba viendo con el LED de depuración sin tocar ...

Solución: configure el módulo manualmente en lugar de configurarlo en tiempo de compilación.

Esto resuelve mis problemas principales, pero no explica el comportamiento inconsistente que observé en Vivado al tratar de reducir el problema.

ANTES DE EDITAR

Lamentablemente, el problema no se resolvió, pero prometí volver e informar sobre cómo fue.

La respuesta corta:

  • Comience con un pequeño proyecto manejable.
  • Comprueba tus desencadenantes
  • Asegúrese de estar archivo XDC está bien.
  • No intentes todas las instrucciones a la vez
  • Intente reproducir sus problemas en el banco de trabajo de otra persona si tiene la oportunidad.

La respuesta larga:

Los disparadores no fueron el problema en mi proyecto. Seguí recortando partes de mi proyecto para reducir la causa del problema, ¡hasta que me quedé con un simple contador!

Así que implementé un contador que controlaba el LED en un proyecto de prueba y analicé la señal con éxito. ¡Extrañamente esto no fue reproducible con un contador idéntico cuando se copió en el proyecto de prueba de mi proyecto real!

Alguien que tiene el mismo FPGA y una versión ligeramente más nueva de Vivado hizo exactamente lo que hice y él analizó con éxito el proyecto en su mesa de trabajo. Después de enviarlo, me envió el proyecto de prueba modificado, pude crear el núcleo de depuración y funcionó como estaba previsto.

Conclusión: terminé culpando a la versión 2014.03 de Vivado.

    
respondido por el Chandran Goodchild

Lea otras preguntas en las etiquetas