How driver gets sequence or data from sequencer automatically

How driver gets data or sequence_data or sequence_item from sequencer automatically??
Example scenario: only one time need to call get_next_item()from driver to sequencer, from second time on wards need to get data or sequence_data or sequence_item without calling get_next_item() from driver

In reply to Subbi Reddy:

Hi, Usually we call get_next_item() inside a forever loop!

Even though Get_next_item() inside the forever loop, we are calling still the get_next_item.
if i am not understand, please explain with one example or with code for understanding purpose??

In reply to Subbi Reddy:

See this example.


``` verilog

// sample sequence code
virtual task body();
    trans tx;
    tx = trans::type_id::create("tx");  // create object for new transaction
    start_item(tx); 	// wait for a driver to request transaction using get_next_item() call
    // late randomization
    // postponed until tx is requested allows to adjust values based on current test conditions
    if(!tx.randomize())	`uvm_error("Randomization failed!")
    finish_item(tx);   // send transaction to driver
  endtask : body

// sample driver code
task run_phase(uvm_phase phase);
    trans tx; // NOTE: we are not creating an object, we are simply moving the handle!
    forever begin
      seq_item_port.get_next_item(tx); // request next sequence item
      drive_trans(tx);                 // drive transaction to the interface
      seq_item_port.item_done();       // processed current request
    end
  endtask : run_phase

Interview Question: how to get transactions from sequencer to driver automatically from second time on-wards without calling get_next_item() in SV or UVM (first time have permission to call get_next_item ()) ??