How do get a report of which sequence is currently running on a sequencer?

In reply to Srini @ CVCblr.com:

Quick update - below is the code along with some results, hopefully this is close to what you were looking for (In my case there are 3 sequences running in parallel on a single SQR).


class vl_rgb_2_yuv_sequencer extends uvm_sequencer #(vl_rgb_2_yuv_xactn);
  
  `uvm_component_utils(vl_rgb_2_yuv_sequencer)

  function new(string name, uvm_component parent);
    super.new(name,parent);
  endfunction : new

  virtual task wait_for_grant(uvm_sequence_base sequence_ptr,
                                     int item_priority = -1,
                                     bit lock_request = 0);

    this.print();
    super.wait_for_grant (sequence_ptr, item_priority, lock_request);
  endtask : wait_for_grant

  function void do_print (uvm_printer printer);
  super.do_print(printer);
  printer.print_array_header("arbitration_queue", arb_sequence_q.size());
  foreach (arb_sequence_q[i])
    printer.print_string($sformatf("[%0d]", i),
       $sformatf("%s name: %s@seqid%0d",arb_sequence_q[i].request.name(),
                 arb_sequence_q[i].sequence_ptr.get_full_name(),
                 arb_sequence_q[i].sequence_id), "[");
  printer.print_array_footer(arb_sequence_q.size());

  printer.print_array_header("lock_queue", lock_list.size());
  foreach(lock_list[i])
    printer.print_string($sformatf("[%0d]", i),
       $sformatf("%s@seqid%0d",lock_list[i].get_full_name(),lock_list[i].get_sequence_id()), "[");
  printer.print_array_footer(lock_list.size());
endfunction

Note - I added extra prints to get full seq name.

Sample Log:

arbitration_queue array 2 -

[0] string 107 SEQ_TYPE_REQ name: uvm_test_top.vl_rgb_2_yuv_env.vl_rgb_2_yuv_agent.vl_rgb_2_yuv_sequencer.dir_seq_0@seqid2

[1] string 108 SEQ_TYPE_REQ name: uvm_test_top.vl_rgb_2_yuv_env.vl_rgb_2_yuv_agent.vl_rgb_2_yuv_sequencer.rand_seq_0@seqid3

lock_queue array 0 -

HTH
Srini
www.verifworks.com