Difference between uvm_sequence_item and uvm_transcation?

Difference between uvm_sequence_item and uvm_transcation ???

Why it’s suggested to make packate / transcation from uvm_sequence_item?

A uvm_sequence_item is an extended uvm_transaction that contains additional information to allow it to be generated by a uvm_sequencer. Since you will generally want to create items using a sequence, it is highly recommended to always use uvm_sequence_item.

In reply to cgales:

Hello,
The motive behind extending uvm_sequence_item for transaction is that, uvm_sequence_item has some in-build static methods, uvm_transaction don`t work with tlm(s).
uvm_sequence_item provide the hooks for sequencer and sequences. So, you can generate the transactions using uvm_sequence_item. Moreover, uvm_transaction provide some basic methods like do_print and do_record etc.

Hope this helped you.

Regards
Ujjwal Kaushik

uvm_sequence_Item is extending from uvm_transaction. The main reason behind this is Sequence_item contains Extra Factory Hooks which will be useful while Implementation.
For Ex :- while Maintaining the Proper Sequencer and Driver Communication, the Driver will keep a request with some Request ID to sequencer, and Here Sequencer is responsible for Generating Sequence Items with some specific Sequence_ID and send it Driver Component and Collect the Response from the Driver Component and will try to match with the Previously Sent Sequence_Id’s. IF match happens then then sequencer will understand that Sequence_Item is successfully received by the Driver component.that is only possible when we are extending it to sequence_Item other wise the sequence_ID is not supported By uvm_transaction. So the Proper sequencer and Driver communication Won’t Happen if it is not extending from sequence_item.

In reply to Niyati:
uvm_seq_item holds the data you want to generate and uvm_sequence is defining how these data will be generated.