SPI_Test/tb/dacreg_tb/dacreg_scb.sv

94 lines
2.8 KiB
Systemverilog
Raw Permalink Normal View History

2024-06-25 16:41:01 +08:00
class dacreg_scoreboard;
//Vars in intr_check
integer fid;
function new();
endfunction;
//extern task do_check();
extern function bit compare(
bit[31:0] spi_exp[$],
bit[31:0] spi_act[$],
dacreg_trans dac_exp[$],
dacreg_trans dac_act[$]
);
endclass
function bit dacreg_scoreboard::compare(
bit[31:0] spi_exp[$],
bit[31:0] spi_act[$],
dacreg_trans dac_exp[$],
dacreg_trans dac_act[$]
);
bit result=1'b1;
int i=0;
//$display(dout);
if(spi_exp.size() != spi_act.size()) begin
result = 1'b0;
//$display("ScoreBoard(ERROR): write & read datanum ARNT'T equal!");
//$display("Exp spi_data size:%0d",spi_exp.size());
//$display("Act spi_data size:%0d",spi_act.size());
$fwrite(fid,"ScoreBoard(ERROR): write & read datanum ARNT'T equal!\t@%t\n",$realtime);
$fwrite(fid,"Exp spi_data size:%0d\n",spi_exp.size());
$fwrite(fid,"Act spi_data size:%0d\n",spi_act.size());
end
else if(dac_exp.size() != dac_act.size()) begin
result = 1'b0;
//$display("ScoreBoard(ERROR): regmdl & read datanum ARNT'T equal!");
//$display("Exp dac_trs size:%0d",dac_exp.size());
//$display("Act dac_trs size:%0d",dac_act.size());
$fwrite(fid,"ScoreBoard(ERROR): regmdl & read datanum ARNT'T equal!\t@%t\n",$realtime);
$fwrite(fid,"Exp dac_trs size:%0d\n",dac_exp.size());
$fwrite(fid,"Act dac_trs size:%0d\n",dac_act.size());
end
else
for(i=0;i<spi_act.size();i++) begin
if(spi_exp[i] != spi_act[i]) begin
result = 1'b0;
//$display("ScoreBoard(ERROR): register read error(%0d)!",i);
//$display("Exp spi_data:\t%h",spi_exp[i]);
//$display("Act spi_data:\t%h",spi_act[i]);
$fwrite(fid,"ScoreBoard(ERROR): register read error(%0d)!\t@%t\n",i,$realtime);
$fwrite(fid,"Exp spi_data:\t%h\n",spi_exp[i]);
$fwrite(fid,"Act spi_data:\t%h\n",spi_act[i]);
end
else
//$display("register read Successfully!");
$fwrite(fid,"register read Successfully!\n");
end
for(i=0;i<dac_act.size();i++) begin
if(dac_exp[i].compare(dac_act[i])) begin
result = 1'b0;
//$display("ScoreBoard(ERROR): output error(%0d)!",i);
//$display("Exp dac_trs:");
//dac_exp[i].print(dac_exp[i].compare(dac_act[i]));
//$display("Act spi_trs:");
//dac_act[i].print(dac_exp[i].compare(dac_act[i]));
$fwrite(fid,"ScoreBoard(ERROR): output error(%0d)!\t@%t\n",i,$realtime);
$fwrite(fid,"Exp dac_trs:\n");
dac_exp[i].print(dac_exp[i].compare(dac_act[i]),fid);
$fwrite(fid,"Act spi_trs:\n");
dac_act[i].print(dac_exp[i].compare(dac_act[i]),fid);
end
else
//$display("output Successfully!");
$fwrite(fid,"output Successfully!\n");
end
return result;
endfunction