Eliminando la advertencia FF / Latch recorte

0

Tengo una señal de 16 bits, para mí solo los últimos 4 bits son importantes y los primeros 12 bits son siempre "0", así que no hago nada con los primeros 12 bits y al final sale de mi componente al siguiente componente como este:

my16bitsignal <= x"000"& my4bitsignal;

En mi componente VHDL hago muchas operaciones, etc. con my4bitsignal , pero al final, cuando sintetizo, Xilinx me da estas advertencias:

WARNING:Xst:1710 - FF/Latch <my16bitsignal_4> (without init value) has a constant value of 0 in block <MYCOMPONENT>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <my16bitsignal_5> (without init value) has a constant value of 0 in block <MYCOMPONENT>. This FF/Latch will be trimmed during the optimization process.
.
.
WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch <my16bitsignal_15> (without init value) has a constant value of 0 in block <MYCOMPONENT>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:2404 -  FFs/Latches <my16bitsignal<15:4>> (without init value) have a constant value of 0 in block <MYCOMPONENT>.

¿Cómo puedo evitar estas advertencias? ¿Crear una señal temporal de 12 bits con ceros y luego asignarla a los primeros 12 bits? Esta solución me parece muy aburrida, ¿hay otra manera?

    
pregunta Anarkie

1 respuesta

2

La única forma segura de eliminar esas advertencias es no generar los pestillos / FFs extraños en primer lugar, dimensionando sus buses adecuadamente. Desafortunadamente, esto a menudo está en desacuerdo con otros objetivos a nivel de sistema, como el diseño modular y las interfaces "estandarizadas". Entonces, la mayoría de nosotros simplemente vivimos con las advertencias.

En algunos casos específicos, es posible eliminar los pestillos sin demasiada molestia. Por ejemplo, en su caso específico, parecería que su declaración de asignación está dentro de un proceso cronometrado, por lo que en primer lugar crea cierres. Podría dividirlo en dos declaraciones separadas, con solo los 4 LSB asignados dentro del proceso y los 12 MSB asignados fuera del proceso.

Estoy de acuerdo, esto hace que el código fuente sea más complicado y más difícil de seguir, y puede que ni siquiera elimine el problema por completo. Muy a menudo, simplemente aparece en otro lugar. Es casi imposible eliminar todas estas advertencias, por lo que no vale la pena hacer un esfuerzo extremo para deshacerse de algunas de ellas.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas