Ancho neto parametrizado en Verilog

¿Es algo así posible?

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

Básicamente necesito una variable para controlar el ancho del lado derecho. Planeo usar esto en un banco de pruebas donde solo tengo que cambiar el ancho del parámetro al comienzo 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?

Respuestas (2)

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

Primero use una constante cero de 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 una advertencia de simulador/sintetizador, sus herramientas están fuera de la especificación de Verilog. Una forma común de evitar esto es con el operador de replicación, que puede tomar un ancho constante:

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

Puede hacer esto con 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;