I was going through basics of UVM tutorials. Everywhere I read the transaction objects are always extended from uvm_sequence_item
and not uvm_transaction
since uvm_sequence_item
has additional features like transaction id, etc. If that is the case, why is the uvm_transaction
class even there in the UVM class hierarchy?
Who is using uvm_transaction
other than uvm_sequence_item
extending from it?
Is it because of legacy?
This is what the UVM Class Reference says about this:
"The uvm_transaction class is the root base class for UVM transactions. Inheriting all the methods of uvm_object, uvm_transaction adds a timing and recording interface.
This class provides timestamp properties, notification events, and transaction recording support.
Use of this class as a base for user-defined transactions is deprecated. Its subtype, uvm_sequence_item, shall be used as the base class for all user-defined transaction types."