Sure, here is the pseudo code
class ex_sb extends uvm_scoreboard;
uvm_event_pool m_event_pool;
uvm_event apb_cd_chks_done_ev;
function build_phase ();
m_event_pool.add ("SB_apb_cd_chks_done ", apb_cd_chks_done_ev );
apb_cd_chks_done_ev = new ("SB_apb_cd_chks_done");
endfunction
task trig_ev ();
// Do some checks and trigger event
// with help of print statements, I checked in my code this event is getting triggered
apb_cd_chks_done_ev.trigger();
endtask
task main_phase();
fork
trig_ev ();
join
endtask
endclass
class ex_seq extends uvm_sequence;
uvm_event_pool m_event_pool;
apb_cd_chks_done_ev = m_event_pool.get ("SB_apb_cd_chks_done");
function new ();
m_event_pool = uvm_event_pool::get_global_pool();
endfunction
task pre_body();
apb_cd_chks_done_ev = m_event_pool.get ("SB_apb_cd_chks_done");
endtask
task body ();
// Here it is just waiting for trigger to come
// I checked with print statements it started waiting before the event was triggered
apb_cd_chks_done_ev.wait_trigger ();
endtask
endclass