Get_event_pool usage

In reply to ProssM:

Maybe something like this could be used


`include "uvm_macros.svh"

module top;
  import uvm_pkg::*;
  uvm_event ev;
  
  initial begin
    ev = uvm_event_pool::get_global("ev_ab");
    #10 ev.trigger();
    $display("%t: event ev triggered", $time);
  end
  
  initial begin
    string ev_name = "EVENT_X";
    // get a reference to the global singleton object by 
    // calling a static method
    static uvm_event_pool ev_pool = uvm_event_pool::get_global_pool();

    // either create a uvm_event or return a reference to it
    if(ev_pool.exists(ev_name)) begin
      `uvm_info("TB", $sformatf("event named = %s EXISTS", ev_name), UVM_NONE)
    end
    else begin
      `uvm_info("TB", $sformatf("event named = %s DOES NOT EXISTS",ev_name ), UVM_NONE)
    end
    
    ev_name = "ev_ab";
    
    if(ev_pool.exists(ev_name)) begin
      `uvm_info("TB", $sformatf("event named = %s EXISTS", ev_name), UVM_NONE)
    end
    else begin
      `uvm_info("TB", $sformatf("event named = %s DOES NOT EXISTS",ev_name ), UVM_NONE)
    end
    
    
    // wait for the trigger
    ev.wait_trigger();
    $display("%t: event ev trigger received", $time);
  end

endmodule

# KERNEL: UVM_INFO /home/runner/testbench.sv(25) @ 0: reporter [TB] event named = EVENT_X DOES NOT EXISTS
# KERNEL: UVM_INFO /home/runner/testbench.sv(31) @ 0: reporter [TB] event named = ev_ab EXISTS

Please note in this code there could be a race condition between the two threads
HTH,
-R