In reply to cgales:
I tried to update the code referring to your suggestion but it still failed at the same issue.
...
my_trans emu_queue[$];
my_trans sim_queue[$];
...
task write_sim(my_trans tr);
my_trans clone_tr;
$cast(clone_tr, tr.clone());
sim_queue.push_back(clone_tr);
endtask
task write_emu(my_trans tr);
my_trans clone_tr;
$cast(clone_tr, tr.clone());
emu_queue.push_back(clone_tr);
endtask
task compare(uvm_phase phase);
tr = new(“tr”);
tr_emu = new(“tr_emu”);
forever begin
wait(emu_queue.size && sim_queue.size)
tr_emu = emu_queue.pop_front();
tr = sim_queue.pop_front();
tr.print();
tr_emu.print();
if (!tr.compare(tr_emu)) begin
`uvm_fatal(get_type_name(), " transcation is not match")
end
...
end
endtask