Aprendí que usar un parámetro para definir un módulo es un buen hábito, como tener un valor predeterminado para el parámetro en C ++ u otros idiomas.
Por lo tanto, he usado mucho el valor de un parámetro, pero enfrenté un problema cuando quiero comparar una variable de registro con un valor constante que tiene el mismo tamaño que el parámetro.
Por ejemplo, declaro un tamaño variable cuyo valor es el parámetro y me gustaría compararlo con un valor constante de 8 bits, como 8'b0.
module top_module #(parameter SIZE = 8) (output out_top);
reg [(SIZE-1):0] temp_var;
assign out_top = (temp_var == 8'b0) ? 1'b0 : 1'b1;
endmodule
Si uso el valor constante con el tamaño específico, en este caso, 8'b , sería problemático cuando quiero crear una instancia del módulo con el #SIZE = 16 como abajo.
top_module # (SIZE = 16) top_module_inst;
¿Hay alguna forma de usar el parámetro en una declaración del parámetro?
¿O debería cambiar el tamaño del valor constante al instanciar el módulo con un tamaño diferente cada vez?
¿Alguien puede explicar las diferencias entre el uso de valores y parámetros codificados durante la síntesis y simulación?