Problem in scorebaord built using Queue's

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


In reply to rohit_kumar:

In run task, you need to add forever loop at begin and end of task.
so that it will call for every transaction.

In reply to murali.gubba:

Dear Murali,
Thank you, i got expected results.