SPI_Test/tb/spi_tb/spi_scb.sv

55 lines
1.5 KiB
Systemverilog
Raw Permalink Normal View History

2024-06-25 16:41:01 +08:00
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