I am getting error like Fatal: (SIGSEGV) Bad handle or reference, after implementing `uvm_analysis_imp_decl in scoreboard. I dont know if the issue is because of this or some other thing in my TB. The flow stops after entering monitor and I get Fatal Error.
function new(string name="uart_wr_mon", uvm_component parent);
super.new(name,parent);
wr_item_collected_port=new("wr_item_collected_port",this);
endfunction
function void build_phase(uvm_phase phase);
super.build_phase(phase);
if(!uvm_config_db#(virtual uart_if)::get(this,"*","vif",vif))
`uvm_error("NO_VIF","Virtual Interface is not set for monitor")
endfunction
task run_phase(uvm_phase phase);
forever begin
monitor_logic();
end
endtask
task monitor_logic();
$display("Entered into MONITOR");
@(vif.wb_clk_i);
wait(vif.wb_ack_o);
wtx.wb_stb_i = vif.wb_stb_i;
wtx.wb_cyc_i = vif.wb_cyc_i;
wtx.wb_adr_i = vif.wb_adr_i;
wtx.wb_dat_i = vif.wb_dat_i;
wtx.wb_we_i = vif.wb_we_i;
if((wtx.wb_adr_i==0) && (wtx.wb_we_i==0) && (wtx.lcr[7]==0)) begin
wtx.rbr.push_back(vif.wb_dat_o);
end
if((wtx.wb_adr_i==0) && (wtx.wb_we_i==1) && (wtx.lcr[7]==0)) begin
wtx.thr.push_back(vif.wb_dat_i);
end
if((wtx.wb_adr_i==1) && (wtx.wb_we_i==1)) begin
wtx.ier <= vif.wb_dat_i;
end
if((wtx.wb_adr_i==2) && (wtx.wb_we_i==0)) begin
wtx.iir <= vif.wb_dat_i;
end
if((wtx.wb_adr_i==2) && (wtx.wb_we_i==1)) begin
wtx.fcr <= vif.wb_dat_i;
end
if((wtx.wb_adr_i==3) && (wtx.wb_we_i==1)) begin
wtx.lcr <= vif.wr_mon_cb.wb_dat_i;
end
if((wtx.wb_adr_i==4) && (wtx.wb_we_i==1)) begin
wtx.mcr <= vif.wr_mon_cb.wb_dat_i;
end
if((wtx.wb_adr_i==5) && (wtx.wb_we_i==0)) begin
wtx.lsr <= vif.wr_mon_cb.wb_dat_i;
end
if((wtx.wb_adr_i==6) && (wtx.wb_we_i==0)) begin
wtx.msr <= vif.wr_mon_cb.wb_dat_i;
end
if((wtx.wb_adr_i==0) && (wtx.wb_we_i==1) && (wtx.lcr[7]==1)) begin
wtx.dlb1 <= vif.wr_mon_cb.wb_dat_i;
end
if((wtx.wb_adr_i==1) && (wtx.wb_we_i==1) && (wtx.lcr[7]==1)) begin
wtx.dlb2 <= vif.wr_mon_cb.wb_dat_i;
end
wr_item_collected_port.write(wtx);
endtask
here you are parameterizing uvm_analysis_imp_wr_mon,uvm_analysis_imp_rd_mon with the transaction class than you need to import wr_transaction,rd_transaction also in scoreboard class .