Я пытаюсь использовать многомерные массивы в качестве портов в моем коде системного журнала. верхний модуль является трехмерным массивом, тогда как подмодуль является двумерным. Упрощенный тестовый стенд и дизайн выглядят следующим образом:
module TB();
wire [3:0]d_inAll [0:99][0:9];
wire [3:0]d_outAll [0:99][0:9];
genvar iX;
for (iX=0; iX<100; iX=iX+1)begin
someDesign DUT_i(.d_in(d_inAll[iX]) , .d_out(d_outAll[iX]));
end
endmodule
и проект
module someDesign(input wire [3:0] d_in[0:9],
output wire[3:0] d_out [0:9]);
genvar i;
for (i=0; i<10; i=i+1)begin
assign d_out[i] = d_in[i];
end
endmodule
Я пытался скомпилировать этот код с версиалогом icarus, но он завершился неудачно со следующей ошибкой.
../elaborate.cc:1439: failed assertion rval_net->pin_count() == prts[0]->pin_count()
Это ошибка компилятора или какая-то функция еще не поддерживается? Есть ли другой метод, который я мог бы использовать, чтобы обойти проблему? Я знаю, что могу использовать массивы, но я бы предпочел не использовать их, так как это сделает дизайн более подверженным функциональным ошибкам.