watchdog_subscriber
class watchdog_subscriber extends uvm_component;
// scb,cov共同的父类
// analysis imp接收monitor发来的消息
uvm_analysis_imp #(apb_transfer, watchdog_subscriber) apb_trans_observed_imp;
// uvm_event
uvm_event wdg_regacc_fd_e;
uvm_event wdg_regacc_bd_e;
uvm_event wdg_inten_e;
uvm_event wdg_resen_e;
uvm_event wdg_load_e;
uvm_event wdg_intclr_assert_e;
uvm_event wdg_intr_release_e;
uvm_event wdg_intr_assert_e;
uvm_enent wdg_regacc_e;
protected uvm_event_pool _ep;
watchdog_config cfg;
watchdog_rgm rgm;
virtual watchdog_if vif;
`uvm_component_utils(watchdog_subscriber)
function new(string name = "watchdog_subscriber", uvm_component parent);
super.new(name, parent);
endfunction
function void build_phase(uvm_phase phase);
super.build_phase(phase);
// 例化imp
apb_trans_observed_imp = new("apb_trans_observed_imp", this);
if(!uvm_config_db#(watchdog_config)::get(this,"',"cfg",cfg))
`uvm_fatal("GETCFG", "cannot get config object from config DB")
vif = cfg.vif;
rgm = cfg.rgm;
// 例化event_pool和各个event
_ep = new("_ep");
wdg_regacc_fd_e = _ep.get("wdg_regacc_fd_e");
wdg_regacc_bd_e = _ep.get("wdg_regacc_bd_e");
wdg_inten_e = _ep.get("wdg_inten_e");