Hi Yuvanesh, The sequence_id is automatically assigned by a sequencer when a sequence is started. It remains the same until a sequence ends. In a simulation when a sequence is called multiple times it will be assigned a new and unique sequence id each time. Whereas, a transaction_id is assigned by the sequence each time a transaction is routed to the sequencer. To send back the correct response from the sequencer to sequence the sequence_id is used whereas the transaction_id is used within the sequence to match a response with its request. Thanks
Hi Xiang, Typically it makes sense to extend a data/network packet from a uvm_object whereas a transaction (which could be a group of logical operations and data packets) extends from uvm_sequence_item. As discussed in this video uvm_sequence_items are also used to send requests from sequence to driver and receive responses back. The uvm_sequence_item object also make it easier to analyze data traffic/protocol and collect functional coverage.
Great explanation. Very helpful. Thank you
Glad it was helpful!
Hello Ken! May I please know the difference between the transaction_id and sequence_id and how we need both of them in uvm_sequence_item?
Hi Yuvanesh,
The sequence_id is automatically assigned by a sequencer when a sequence is started. It remains the same until a sequence ends. In a simulation when a sequence is called multiple times it will be assigned a new and unique sequence id each time. Whereas, a transaction_id is assigned by the sequence each time a transaction is routed to the sequencer. To send back the correct response from the sequencer to sequence the sequence_id is used whereas the transaction_id is used within the sequence to match a response with its request.
Thanks
@@KenIntQ thanks for the detailed response
Please post a detailed video on uvm ral and scoreboard if possible!
Sure, will add to my list.
May I ask when we need to choose extend from uvm_object. When we need to choose extend from uvm_sequence_item? Thanks!
Hi Xiang,
Typically it makes sense to extend a data/network packet from a uvm_object whereas a transaction (which could be a group of logical operations and data packets) extends from uvm_sequence_item. As discussed in this video uvm_sequence_items are also used to send requests from sequence to driver and receive responses back. The uvm_sequence_item object also make it easier to analyze data traffic/protocol and collect functional coverage.
@@KenIntQ Ok~ Thank you so much!