95 lines
2.8 KiB
Systemverilog
95 lines
2.8 KiB
Systemverilog
|
class pllreg_scoreboard;
|
||
|
|
||
|
//Vars in intr_check
|
||
|
int isr_error=0;
|
||
|
integer fid;
|
||
|
|
||
|
function new();
|
||
|
endfunction;
|
||
|
|
||
|
//extern task do_check();
|
||
|
|
||
|
extern function bit compare(
|
||
|
bit[31:0] spi_exp[$],
|
||
|
bit[31:0] spi_act[$],
|
||
|
pllreg_trans pll_exp[$],
|
||
|
pllreg_trans pll_act[$]
|
||
|
);
|
||
|
|
||
|
endclass
|
||
|
|
||
|
function bit pllreg_scoreboard::compare(
|
||
|
bit[31:0] spi_exp[$],
|
||
|
bit[31:0] spi_act[$],
|
||
|
pllreg_trans pll_exp[$],
|
||
|
pllreg_trans pll_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(pll_exp.size() != pll_act.size()) begin
|
||
|
result = 1'b0;
|
||
|
//$display("ScoreBoard(ERROR): regmdl & read datanum ARNT'T equal!");
|
||
|
//$display("Exp pll_trs size:%0d",pll_exp.size());
|
||
|
//$display("Act pll_trs size:%0d",pll_act.size());
|
||
|
$fwrite(fid,"ScoreBoard(ERROR): regmdl & read datanum ARNT'T equal\t@:%t!\n",$realtime);
|
||
|
$fwrite(fid,"Exp pll_trs size:%0d\n",pll_exp.size());
|
||
|
$fwrite(fid,"Act pll_trs size:%0d\n",pll_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<pll_act.size();i++) begin
|
||
|
if(pll_exp[i].compare(pll_act[i])) begin
|
||
|
result = 1'b0;
|
||
|
//$display("ScoreBoard(ERROR): output error(%0d)!",i);
|
||
|
//$display("Exp pll_trs:");
|
||
|
//pll_exp[i].print(pll_exp[i].compare(pll_act[i]));
|
||
|
//$display("Act spi_trs:");
|
||
|
//pll_act[i].print(pll_exp[i].compare(pll_act[i]));
|
||
|
$fwrite(fid,"ScoreBoard(ERROR): output error(%0d)!\t@:%t\n",i,$realtime);
|
||
|
$fwrite(fid,"Exp pll_trs:\n");
|
||
|
pll_exp[i].print(pll_exp[i].compare(pll_act[i]),fid);
|
||
|
$fwrite(fid,"Act spi_trs:\n");
|
||
|
pll_act[i].print(pll_exp[i].compare(pll_act[i]),fid);
|
||
|
end
|
||
|
else
|
||
|
//$display("output Successfully!");
|
||
|
$fwrite(fid,"output Successfully!\n");
|
||
|
end
|
||
|
|
||
|
|
||
|
return result;
|
||
|
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
|