ifndef scoreboard
define scoreboard
`include “w_xtn.sv”
class scoreboard;
int number_of_transaction=5;
event DONE;
int data_verified = 0;
int rm_data_count = 0;
int mon_data_count = 0;
w_xtn rm_data;
w_xtn rcvd_data;
w_xtn cov_data;
mailbox#(w_xtn) rm_in_ch;//mailbox from refrence model to scoreboard
mailbox#(w_xtn)mon_in_ch;//mailbox from read monitor to scoreboard
covergroup dd_coverage;
option.per_instance=1;
RST: coverpoint cov_data.rst{
bins LOW={0};
bins HIGH={1};
}
DATA:coverpoint cov_data.data{
bins LOW={[0:4]};
bins HIGH={[5:7]};
}
endgroup
//new construct
function new(mailbox#(w_xtn) rm_in_ch,
mailbox#(w_xtn) mon_in_ch);
//$display(“===========FLDEC FLDEC”);
this.rm_in_ch=rm_in_ch;
this.mon_in_ch=mon_in_ch;
dd_coverage=new();
endfunction
//START task
task start();
fork
while(1)//this while(1) works like forever loop
begin
rm_in_ch.get(rm_data);
rm_data_count++;
mon_in_ch.get(rcvd_data);
mon_data_count++;
check(rcvd_data);
end
join_none
endtask
////CHECK TASK
virtual task check(w_xtn rc_data);
string diff;
if(rc_data.rst==0)
begin
if(rc_data.oYCbCr==0 && rc_data.oDVAL==0)
$display("SB:Random data not written");
else if(rc_data.rst==0 && rc_data.oYCbCr!=0 && rc_data.oDVAL!=0)
begin
if(!rm_data.compare(rc_data,diff))
begin
rc_data.display("SB:Received data");
rm_data.display("SB:data sent ot DUV");
$display("%s\n%m\n\n",diff);
$finish;
end
else
$display("SB:%s\n%m\n\n",diff);
cov_data=rm_data;
dd_coverage.sample();
end
data_verified++;
if(data_verified==(number_of_transaction-rc_data.no_of_write_trans))
begin
->DONE;///event triggered
end
end
endtask
function void report();
$display(“=========================SCOREBOARD REPORT==================================”);
$display(“%0d data generated,%0d data Received, %0d Data Verified\n”,rm_data_count,mon_data_count,data_verified);
$display(“--------------------FLDEC FLDEC FLDEC FLDEC ----------------------------”);
$display(“=========== SHUBHAM VERIFICATION ENGINEER=================”);
endfunction
endclass
`endif
/////////////////////////////////////////ERROR ERROR ERROR ///////////////////////////
** Fatal: (SIGSEGV) Bad handle or reference.