Sequence not working (Issue faced by Newbie)

I am a newbie trying to learn UVM. I am trying to run the below code for my understanding. However, the sequence is not working and it is getting stuck at the request from the driver.


class mem_sequencer extends uvm_sequencer #(mem_seq_item);
  `uvm_component_utils(mem_sequencer)
  function new(string name, uvm_component parent);
    super.new(name,parent);
  endfunction
endclass
class mem_sequence extends uvm_sequence#(mem_seq_item);
  `uvm_object_utils(mem_sequence)
  
  function new(string name="mem_sequence");
    super.new(name);
  endfunction
  
  virtual task body();
    req=mem_seq_item::type_id::create("req");
    wait_for_grant();
    assert(req.randomize());
    send_request(req);
   // wait_for_item_done();
   // get_response(rsp);
  endtask
endclass

class mem_driver extends uvm_driver #(mem_seq_item);
  `uvm_component_utils(mem_driver)
  
  function new(string name, uvm_component parent);
    super.new(name,parent);
  endfunction
  
  task run();
    forever begin
      seq_item_port.get_next_item(req);
      $display("got instruction", $time);
    end
  endtask
  
endclass

module seq_item_tb;
  mem_sequencer sequencer;
  mem_driver driver;
  mem_sequence sequence_s;
  initial begin
    sequencer=mem_sequencer::type_id::create("sequencer",null);
    driver = mem_driver::type_id::create("driver",null);
    sequence_s=mem_sequence::type_id::create("seq");
    driver.seq_item_port.connect(sequencer.seq_item_export);
    sequence_s.print();
    fork
      begin
        run_test();
        sequence_s.start(sequencer);
        
      end
      #2000 global_stop_request();
    join
  end
endmodule

In reply to rahulkumarbudhwani:

You should specify what is not working.
You have a mixture of OVM (still legal, but deprecated) and UVM constructs used.
Task run is now in the UVM task_run_phase(uvm_phase phase);
global_stop_request() is also an old construct.

In the body task of your sequence you should simply do:
start_item(req);
void’(req.randomize);
finish_item(req);

Additionally you do not have a test, but you are using run_test which will construct your test.
And you are missing the objection mechanism which is required by the UVM.

Please try to fix these issues and come back with a more specific description if it is not working.