Ancho de red parametrizado en Verilog

1

¿Es algo como esto posible?

parameter width;
wire[width-1] a_net = (width)'b0;

Básicamente necesito una variable para controlar el ancho del lado derecho. Estoy planeando usar esto en un banco de pruebas donde solo tengo que cambiar el ancho del parámetro al principio del archivo, y este parámetro establece el ancho neto en todas las demás apariciones de 'a_net'.

Si esto no funciona, ¿hay alguna otra solución?

    
pregunta Blackadder

2 respuestas

4

¿Desea hacer coincidir el ancho del lado derecho con el ancho de declaración para evitar las advertencias de la herramienta?

Primero use una constante de cero ancho de 1 bit, esto se expandirá usando las reglas de expansión de Verilog, lo que le dará un ancho cero apropiado:

wire [width-1:0] a_net = 1'b0;

Si eso genera un simulador / sintetizador de advertencia, sus herramientas están fuera de las especificaciones de Verilog. Una forma común de solucionar esto es con el operador de replicación, que puede tener un ancho constante:

wire [width-1:0] a_net = {width{1'b0}};
    
respondido por el shuckc
0

Puede hacer esto con los parámetros si lo desea solo en un módulo:

parameter width = 8;
wire [width-1:0] a_net = 0;

Para más de un módulo, es más fácil hacerlo con una definición:

'define WIDTH 8
wire ['WIDTH-1:0] a_net = 0;
    
respondido por el pjc50

Lea otras preguntas en las etiquetas