class sysreg_monitor; virtual sysreg_if vif; virtual sram_if#(25,32) xif; //collect sysreg_trans act_trans[$]; function new(); endfunction extern task collect(); extern task do_mon(); endclass : sysreg_monitor task sysreg_monitor::do_mon(); while(1) begin @(negedge xif.wren); collect(); end endtask: do_mon task sysreg_monitor::collect(); sysreg_trans tr_temp; @(posedge xif.clk); @(negedge xif.clk); tr_temp = new(); tr_temp.dbg_enable = vif.dbg_enable ; tr_temp.dbg_data_sel = vif.dbg_data_sel ; tr_temp.dbg_ch_sel = vif.dbg_ch_sel ; tr_temp.irq = vif.irq ; act_trans.push_back(tr_temp); endtask: collect