Fatal_error

`ifndef scoreboard
`define scoreboard
`include"transaction.sv"

class scoreboard ; 
transaction ref_data  , rmon_data , rc_data;

event DONE ; 

int ref_data_count=0;
int rmon_data_count=0;
int data_verified=0;
int no_of_transaction = 50 ; 


mailbox#(transaction) ref2sb ;
mailbox#(transaction) rmon2sb ;


function new(mailbox#(transaction) ref2sb , mailbox#(transaction) rmon2sb);
this.ref2sb = ref2sb ;
this.rmon2sb = rmon2sb ;

endfunction 





 task start  ();
fork
      while(1) // it will act as forever loop 
      begin
           ref2sb.get(ref_data);   // line no 34
            ref_data_count++;
   
            rmon2sb.get(rmon_data);
            rmon_data_count++;
            check_data( rc_data);
       end 
join_none
endtask 



virtual task check_data(transaction rc_data);

string diff;

if(rc_data.re==1)
  begin
       if(rc_data.data_out ==0)
       
       $display ("============== DATA not randomized in transaction class ============" , $time ) ;
      else if(rc_data.re ==1  &&   rc_data.data_out !=0) 
      begin 
               if(!ref_data.compare( rc_data ,  diff ) ) 
                begin
                         rc_data.display("SCOREBOARD  : RECEIVED DATA   ");
                          rc_data.display("SCOREBOARD  :  DATA SENT TO DUT    ");
                          $finish ; 
                end 
 
             else
                    $display ( "==========CHECKER===================================");
      end 
   
                   data_verified++; 


        if(data_verified  >= no_of_transaction) 
         begin
                 ->DONE ;
         end
end 

endtask 




function void report ();

$display("======================================SUCESSFULLY COMPARED========================");
$display("========= %dref_data_count , %drmon_data_count   , %ddata_verified  =========",  ref_data_count  , rmon_data_count, data_verified);

endfunction 

endclass 
`endif 

//=============================================================================================================//

** Fatal: (SIGSEGV) Bad handle or reference.

Time: 0 ns Iteration: 0 Process: /top_sv_unit::scoreboard::start/fork#32_ff05144 File: scoreboard.sv

Fatal error in Task std/mailbox::get at C:/questasim_10.4e/win32/…/verilog_src/std/std.sv line 52

In reply to raj@123:

Please post a complete example.

In reply to cgales:

this is the complete scoreboard class

In reply to raj@123:

What you provided won’t compile, and doesn’t represent the issue properly. If you want assistance, you will need to provide a complete example.

In reply to raj@123:

Bad handle or reference us usually the result of trying to reference a null handle. You need to figure out which handle is null and why.