J'utilise une boucle de génération pour instancier un nombre paramétrable de modules, et je veux affecter certaines des entrées au module en fonction de l'itération de la boucle. Malheureusement, je rencontre des problèmes de synthèse où le compilateur de conception dit qu'il y a une erreur parce que la largeur du port ne correspond pas. Voici ce que je suis en train de faire:verilog generate boucle attribuer à l'itérateur de la largeur de l'itérateur
genvar k;
generate
for(k = 0; k < `NUM/2; ++k) begin
cmp2 cmps(
.a (arr[k]),
.b (arr[k+1]),
.a_idx (k), //gives errors about port width mismatch
.b_idx (k+1), //but I can't get it to work any other way
.data_out(data[k]),
.idx_out (idx[k])
);
end
endgenerate
J'ai aussi essayé d'utiliser localparams dans la boucle et l'affectation a_idx et b_idx au localparam mais je reçois toujours la même erreur dans la synthèse.
J'ai essayé quelque chose comme .a_idx((k)[bit_width-1:0]),
mais ça ne marche pas non plus.
Des idées?