¿Cómo eliminar esta advertencia en Verilog?

1

Tomé una señal sum[8:0] en mi código. Además, solo necesito sum[8] en mi código (M.S.B de suma). Entonces utilicé la declaración assign sum[7:0]=0;

Me dio la siguiente ADVERTENCIA después de la síntesis:

  

ADVERTENCIA: Xst: 646 - Señal < suma < 7: 0 > > Se asigna pero nunca se usa. Esta   La señal desconectada se recortará durante el proceso de optimización.

¿Debo preocuparme por ello o ignorarlo?

    
pregunta SW.

3 respuestas

8

Si sabe que no necesita las señales, ignore la advertencia. Pero, ¿por qué declararía un bus de 9 bits mientras solo necesita una señal? Esa es una mala práctica.

Generalmente acerca de dicha advertencia:

¡Definitivamente deberías preocuparte por eso!

Esta advertencia significa que no estás utilizando señales que has declarado de manera sintética, siendo lo más inteligente que es, optimiza esas. Por lo general, esto sugiere que hay algo lógicamente incorrecto en su implementación y que su salida no será lo que pretende que sea.

Solo ignora las advertencias que entiendas completamente.

Finalmente, ¡no desactives ese tipo de advertencia ya que no lo verás cuando realmente importe!

    
respondido por el Saar Drimer
2

La advertencia es correcta y debes corregir tu código. Esto es lo que está sucediendo: su módulo toma una señal de entrada de 8 bits, pero solo le importa el MSB (eso es un requisito legítimo). Por lo tanto, su módulo no necesita una copia de 8 bits de la entrada. Así que no asigne los 7 bits inferiores a cero, es una declaración inútil y una señal inútil.

En su lugar, su módulo debería tener algo como: wire msb = sum [8]. Y luego usa msb en tu código.

Luego, la advertencia desaparecerá y su módulo no contendrá cables no utilizados.

    
respondido por el Alain
1

A continuación se muestra una forma de minimizar las advertencias, pero también permitir que la síntesis recorte el cono lógico. Uso esto cuando estoy usando un bus varado, pero no todos los pines en el bus.

El ejemplo viene de:

enlace

// Linting
wire _unused_ok = &{1'b0,
           // Put list of unused signals here
           1'b0};

Para quitar las hebras del bus, uso:

wire _unused_ok = &{1'b0,
           a_bus[0],
           1'b0};
    
respondido por el ElderDelp

Lea otras preguntas en las etiquetas