En mi diseño, quería usar varios contadores con diferentes valores iniciales al reiniciar. Por lo tanto, definí el módulo contador de la siguiente manera:
module my_counter #(parameter int INIT_VALUE = 0)
(
input clock, reset,
...
Luego, en el diseño tengo 4 instancias de mycounter
que comparten muchas entradas, pero tienen valores iniciales diferentes. Me gustaría convertirlos en una matriz de módulos, pero la mejor manera de hacerlo es:
defparam my_counters[0].INIT_VALUE = 0;
defparam my_counters[1].INIT_VALUE = 1;
defparam my_counters[2].INIT_VALUE = 2;
defparam my_counters[3].INIT_VALUE = 3;
my_counter my_counters[3:0](
.clock(clock),
...
Eso funciona con simulación, pero he escuchado que defparam
se considera una forma deficiente. Además, al intentar sintetizar mi diseño, el sintetizador se queja de que Syntax error at or near token '['.
está en las líneas con defparam.
¿Cómo podría hacer lo que quería hacer sin mucha duplicación de código?