In reply to Muthamizh:
Hi Muthamizh,
In the transaction or packet class, implement all the do_* functions manually. Then in the monitor, collect the transactions in the queue or tlm_fifo as per your requirement. Write if condition in run_phase using below syntax:
if(actual_transaction.compare(expected_transaction))
then `uvm_info()
else
`uvm_info()...
Kindly let me know if it is complete answer.