Hi all,
I have developed systemverilog verification environment for ALU, all the components are working good except scoreboard where i have used Queue’s.
im sending the data from driver monitor and DUT monitor to Scoreboard , where it should collect the data and compare for every transaction, but in my scoreboard its comparing only one time for n number of transactions also.
please correct me if i’m wrong in code or suggest me how to solve this.
class alu_scb#(WIDTH=32);
alu_tx#(WIDTH) drv_tx ;
alu_tx#(WIDTH) dut_tx ;
alu_tx#(WIDTH) scdrv_tx ;
alu_tx#(WIDTH) scdut_tx ;
// drv_outQ [$];
// dut_outQ [$];
integer send=0;
integer rcv=0;
alu_tx#(WIDTH) drvQ[$] ;
alu_tx#(WIDTH) dutQ[$] ;
bit compare_f;
task run();
$display("ALU SCB :: RUN");
alu_cfg::mon2scb_mb.get(dut_tx);
//alu_cfg::drv2scb_mb.get(tx);
dutQ.push_back(dut_tx);
alu_cfg::drv2mon2scb_mb.get(drv_tx);
drvQ.push_back(drv_tx);
drv_tx.print("SCB_TX_from drv");
dut_tx.print("SCB_DUT_from_mon");
scdrv_tx = drvQ.pop_front;
scdut_tx = dutQ.pop_front;
compare_f = scdut_tx.compare(scdrv_tx);
if(compare_f == 1'b0) begin
$display("EXPECTED & RECIVED DATA didn't matched");
end
else begin
$display("EXPECTED & RECIVED DATA MATCHED");
end
endtask
endclass