How does the sequence item retains value after calling finish_item

Hi,

In driver read task I am passing the read data from the vif to the sequence_item in the driver.
For e.g
drv_req.rdata = vif.rdata;

In my sequence after the finish_item(req); If I do
$display(“Read data %h”,req.rdata);

I am getting the read data, I want to understand how does this works. My understanding is after item_done from the driver the req is cleared and new req is created. I think I am misunderstanding something. Please let me know.

In reply to advaneharshal:

After calling finish_item the seq_item will be retrieved by the driver if you are calling get or get_next_item. The the item is still existing until you are calling item_done. Between get and item_done time is consumed.
In the sequence between finish_item and your $display no time will be consumed.

In reply to advaneharshal:

The req object is not “cleared”. As long you have a handle to an object, it remains. Your sequence has assess to the req object until you place a handle to another req object. Even longer if storing the handle away in a queue.