Handling on the fly reset in uvm_driver

Hi ,

What is the best way handle on the fly reset in uvm_driver.

  1. assume we did get_next_item
  2. driving is in progress. and received item done
  3. In that case, i have to kill driving thread and call seq_item_port.finish_item(), other wise sequencer will hang. because of the following code ( wait) in sqr
task uvm_sequencer_base::wait_for_item_done(uvm_sequence_base sequence_ptr,
                                            int transaction_id);
  int sequence_id;

  sequence_id = sequence_ptr.m_get_sqr_sequence_id(m_sequencer_id, 1);
  m_wait_for_item_sequence_id = -1;
  m_wait_for_item_transaction_id = -1;

  if (transaction_id == -1)
    wait (m_wait_for_item_sequence_id == sequence_id);
  else
    wait ((m_wait_for_item_sequence_id == sequence_id &&
           m_wait_for_item_transaction_id == transaction_id));
endtask

Thanks

In reply to uvm_novice:

I believe, when we call seq.kill() during reset all the subtask will be killed so wait dosent matter