Con IP-Cores sin protocolo de intercambio, ¿cómo puedo verificar (afirmar VHDL?) su latencia?

2

Estoy usando un IP Core de Xilinx que se generó usando el Catálogo IP de Vivado IDE, específicamente estoy usando el Acumulator y el Multiplier .

Estos núcleos tienen una configuración de latencia de 6 y 3, respectivamente, y no utilizan un protocolo de intercambio (listo para datos, listo, señales de ejecución). Cuando uso los núcleos con una instanciación de componentes, necesito circuitos para manejar los retrasos de latencia.

¿Cómo puedo verificar que la latencia es en realidad 6 y 3 respectivamente? Imagine que el IP Core se actualiza y la latencia se cambia, o en mi código, lo tengo al revés y asumo las latencias 3 y 6 respectivamente. Quiero assert component'latency = 3 , o algo similar. ¿Cómo se hace esto?

    

2 respuestas

3

Si necesita una garantía de que el diseño no cambiará con una versión futura de la herramienta, entonces no use un núcleo de IP para este tipo de funcionalidad relativamente simple. Puede instanciar fácilmente una o más porciones DSP con una configuración fija que no cambiará entre las versiones de herramientas. La guía de usuario de DSP Slice tiene todo lo que necesita saber. Dependiendo de su caso de uso, podría inferir una implementación óptima utilizando un simple x <= a * b;

Puede encontrar que en su aplicación, puede multiplexar en el dominio de tiempo las entradas y el modo para un conjunto de segmentos DSP para lograr la misma funcionalidad con menos recursos; por ejemplo, ¿necesita multiplicar y acumular al mismo tiempo? El núcleo de IP nunca puede ser consciente de esto.

Si su objetivo principal es lograr que un diseño funcione rápidamente, entonces los núcleos de IP darán un resultado efectivo.

    
respondido por el scary_jeff
2

Como se explica en mi comentario, puedes escribir esto:

y0 <= a * b;
y1 <= y0 when rising_edge(Clock);
y2 <= y1 when rising_edge(Clock);
y3 <= y2 when rising_edge(Clock);
y  <= y3 when rising_edge(Clock);

En las herramientas de Xilinx, utilizamos la coincidencia de patrones y el reordenamiento como optimización:

  • crear instancias de DSP para su multiplicación
  • si es necesario, combine varias secciones DSP
  • mueva las etapas de registro al DSP habilitando registros internos de canalización.

Se pueden mover hasta 5 (o fue 7?) etapas de tubería al DSP48E2. Es posible que algunos deban describirse como registros antes de la multiplicación.

Las mismas técnicas se aplican a las operaciones de acumulación.

    
respondido por el Paebbels

Lea otras preguntas en las etiquetas