Это мой код для умножения матриц [100x100]. Имя файла: matrix1.v Этот код предназначен для ядра polybench mvt. Цель состоит в том, чтобы найти два вектора, x1 и x2, длиной 100, с x1 = x1 + A y1 и x2 = x2 + A y2.
module matrix1(A,y1,y2,clk,rst,x1,x2);
input [0:31] A[0:99][0:99];
input [0:31] y1[0:99];
input [0:31] y2[0:99];
input clk;
input rst;
output [0:31] x1[0:99];
output [0:31] x2[0:99];
integer i,j,t;
reg [0:31] x1[0:99],x2[0:99];
always@(posedge clk or posedge rst)
begin
for(i=0;i<100;i=i+1)
begin
x1[i]=32'b0;
x2[i]=32'b0;
end
for(i=0;i<100;i=i+1)
begin
for(j=0;j<=100;j=j+1)
begin
x1[i]=x1[i]+A[i][j]*y1[j];
x2[i]=x2[i]+A[i][j]*y2[j];
end
end
end
endmodule
Это мой тестовый стенд код. Имя файла: matrix1_tb.v Получение ошибки в строке 8 кода tb Попытка предоставить примеры входных данных в testbench, но ошибка сохраняется для всех переменных с массивами. ошибка: «не может получить доступ к памяти« A »напрямую в ТБ.
module matrix_tb();
reg [0:31] A[0:99][0:99];
reg [0:31] y1[0:99];
reg [0:31] y2[0:99];
reg clk;
reg rst;
wire [0:31] x1[0:99];
wire [0:31] x2[0:99];
matrix1 m1(A,y1,y2,clk,rst,x1,x2);
integer i,j;
initial begin
for(i=0;i<100;i=i+1)
begin
y1[i]=i;
y2[i]=i+1;
for(j=0;j<=100;j=j+1)
begin
A[i][j]=i+j;
end
end
end
endmodule