// An optional ~data~ argument can be supplied with the enable to provide// trigger-specific information.virtualfunctionvoidtrigger(Tdata=null);intskip;skip=0;if(callbacks.size())beginfor(inti=0;i<callbacks.size();i++)beginuvm_event_callback#(T)tmp=callbacks[i];skip=skip+tmp.pre_trigger(this,data);endendif(skip==0)begin->m_event;if(callbacks.size())beginfor(inti=0;i<callbacks.size();i++)beginuvm_event_callback#(T)tmp=callbacks[i];tmp.post_trigger(this,data);end
//// Resets the event to its off state and clears trigger data to its default state.virtualfunctionvoidreset(bitwakeup=0);trigger_data=get_default_data();super.reset(wakeup);endfunction:reset// Task -- NODOCS -- wait_trigger_data//// This method calls <uvm_event_base::wait_trigger> followed by <get_trigger_data>.// @uvm-ieee 1800.2-2020 auto 10.1.2.2.2virtualtaskwait_trigger_data(outputTdata);wait_trigger();data=get_trigger_data();endtask
// trigger-specific information.// @uvm-ieee 1800.2-2020 auto 10.1.2.2.4virtualfunctionvoidtrigger(Tdata=get_default_data());intskip;cb_typecb_q[$];skip=0;cbs_type::get_all(cb_q,this);// Call all pre_trigger, bail out after// if any return !0foreach(cb_q[i])skip+=cb_q[i].pre_trigger(this,data);if(skip==0)beginon=1;trigger_time=$realtime;trigger_data=data;->m_event;foreach(cb_q[i])
// Function -- NODOCS -- default data// @uvm-ieee 1800.2-2020 auto 10.1.2.2.6virtualfunctionTget_default_data();returndefault_data;endfunction:get_default_data// @uvm-ieee 1800.2-2020 auto 10.1.2.2.6virtualfunctionvoidset_default_data(Tdata);default_data=data;endfunction:set_default_datavirtualfunctionvoiddo_print(uvm_printerprinter);uvm_event#(uvm_object)oe;cb_typecb_q[$];super.do_print(printer);// Printing the callbackscbs_type::get_all(cb_q,this);printer.print_array_header("callbacks",cb_q.size(),"queue");foreach(cb_q[e])printer.print_object($sformatf("[%0d]",e),cb_q[e],"[");printer.print_array_footer(cb_q.size());