Я делал 2D-массив в SystemVerilog, но modelsim скомпилирован с ошибками, поэтому теперь мой вопрос почему?
Вот код для матрицы умножения и накопления, которую я пытаюсь сделать:
module matrix_mac_unit
(//ports
input clock,
input reset,
input enable,
input clear,
input [7:0] matrix_1 [0:3][0:3],
input [7:0] matrix_2 [0:3][0:3],
output [7:0] result [0:3][0:3]
);
logic [7:0] accumulator [0:3][0:3];
//sequential logic
always_ff @(posedge clock) begin
if (!reset) begin
accumulator <= 0;
end
else if (clear) begin
accumulator <= 0;
end
else begin
accumulator <= result;
end
end
//combinational logic
assign result = enable ? matrix_1 * matrix_2 + accumulator :
accumulator;
endmodule
Modelim говорит:
unit.sv (40) :( vlog-2110) Недопустимая ссылка на массив net "matrix_1".
unit.sv (40) :( vlog-2110) Недопустимая ссылка на массив net "matrix_2".
unit.sv (40) :( vlog-2990) Недопустимая операция для распакованного типа.
unit.sv (40) :( vlog-2110) Недопустимая ссылка на «аккумулятор» памяти.
unit.sv (40) :( vlog-2990) Недопустимая операция с распакованным типом.
Так что мой вопрос, как вы декларируете матрицу в SystemVerilog?