55 lines
1.5 KiB
Systemverilog
55 lines
1.5 KiB
Systemverilog
|
function bit spi_scoreboard(int pktnum,bit stream[$],bit[31:0] dout[$]);
|
||
|
bit[31:0] data[$];
|
||
|
bit[31:0] data_temp;
|
||
|
bit[31:0] data_mon[$];
|
||
|
bit result=1'b1;
|
||
|
int i=0,j=0;
|
||
|
|
||
|
|
||
|
//if cmd==1'b0,get the data written to SRAM
|
||
|
if(stream[0]==1'b0) begin
|
||
|
data.delete();
|
||
|
for(i=1;i<stream.size()/32;i++) begin
|
||
|
for(j=0;j<32;j++)
|
||
|
data_temp[31-j] = stream[32*i+j];
|
||
|
data.push_back(data_temp);
|
||
|
end
|
||
|
//$display("Exp data:");
|
||
|
//for(i=0;i<data.size();i++)
|
||
|
// $display("%b",data[i]);
|
||
|
end
|
||
|
|
||
|
//if cmd==1'b1,collect the data send via MISO,
|
||
|
//and compare them with the written data
|
||
|
else begin
|
||
|
data_mon.delete();
|
||
|
data_mon = dout;
|
||
|
//$display("Act data:");
|
||
|
//for(i=0;i<data_mon.size();i++)
|
||
|
// $display("%b",data_mon[i]);
|
||
|
|
||
|
if(data.size()!=data_mon.size()) begin
|
||
|
result = 1'b0;
|
||
|
$display("Size ARNT'T equal!");
|
||
|
$display("Exp data size:%0d",data.size());
|
||
|
$display("Act data size:%0d",data_mon.size());
|
||
|
end
|
||
|
else
|
||
|
for(i=0;i<data_mon.size();i++)
|
||
|
if(data_mon[i]!=data[i]) begin
|
||
|
result = 1'b0;
|
||
|
$display("ERROR:");
|
||
|
$display("Exp data[%0d]:%b",i,data[i]);
|
||
|
$display("Act data[%0d]:%b",i,data_mon[i]);
|
||
|
end
|
||
|
if(result)
|
||
|
$display("\nScoreBoard: One Write-Read loop done SUCCESSFULLY!\n");
|
||
|
end
|
||
|
|
||
|
return result;
|
||
|
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
|