Я использую цикл генерации для создания экземпляра параметризуемого количества модулей, и я хочу назначить некоторые входные данные модулю на основе итерации цикла. К сожалению, у меня возникают проблемы с синтезом, когда компилятор дизайна говорит об ошибке, потому что ширина порта не совпадает. Вот что я пытаюсь сделать:
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
Я также пытался использовать localparams в цикле и назначать a_idx и b_idx для localparam, но все равно получаю ту же ошибку при синтезе.
Я пробовал что-то вроде .a_idx((k)[bit_width-1:0]),
, но это тоже не работает.
Есть идеи?