In reply to cgales:
First of all, thanks for your reply, sir.
sorry sir, the error is from slave driver not from slave monitor, my mistake,
//The interface file is correct which I’ve declared at the beginning.
//This is the slave monitor code, please look into it, line number 47,49,52, etc. are errors
class router_slave_driver extends uvm_driver #(read_xtn);
`uvm_component_utils(router_slave_driver)
virtual router_if.SLV_DRV slv_if;
router_slave_agent_config slv_agt_cfg;
extern function new(string name="router_slave_driver",uvm_component parent);
extern function void build_phase(uvm_phase phase);
extern function void connect_phase(uvm_phase phase);
extern task run_phase(uvm_phase phase);
extern task send_to_dut(read_xtn xtn);
extern function void report_phase(uvm_phase phase);
endclass
function router_slave_driver::new(string name="router_slave_driver",uvm_component parent);
super.new(name,parent);
endfunction
function void router_slave_driver::build_phase(uvm_phase phase);
if(!uvm_config_db #(router_slave_agent_config)::get(this,"","router_slave_agent_config",slv_agt_cfg))
`uvm_fatal("router_slave_driver","unable to get the slv_agt_top,have you set it?")
super.build_phase(phase);
endfunction
function void router_slave_driver::connect_phase(uvm_phase phase);
slv_if=slv_agt_cfg.slv_if;
super.connect_phase(phase);
endfunction
task router_slave_driver::run_phase(uvm_phase phase);
forever begin
req=read_xtn::type_id::create("req");
seq_item_port.get_next_item(req);
send_to_dut(req);
seq_item_port.item_done();
end
endtask
task router_slave_driver::send_to_dut(read_xtn xtn);
xtn=read_xtn::type_id::create("xtn");
@(slv_if.slv_cb_drv);//line 47
while(slv_if.slv_cb_drv.valid_out!==1'b0)
@(slv_if.slv_cb_drv);//49
repeat(xtn.no_of_cycles)
begin
@(slv_if.slv_cb_drv);//52
end
slv_if.slv_cb_drv.read_enb<=1'b1;
wait(!slv_if.slv_cb_drv.valid_out)
while(slv_if.slv_cb_drv)
@(slv_if.slv_cb_drv);
slv_if.slv_cb_drv.read_enb<=1'b0;
//slv_agt_cfg.drv_data_count++;
@(slv_if.slv_cb_drv);
`uvm_info("Router_slv_driver",$sformatf("printing from driver\n%s",xtn.sprint()),UVM_LOW)
endtask
function void router_slave_driver::report_phase(uvm_phase phase);
//`uvm_info(get_type_name(),$sformatf("Report:router read driver sent %0d transactions",slv_agt_cfg.drv_data_count),UVM_LOW)
super.report_phase(phase);
endfunction
//this is slave agt config code
class router_slave_agent_config extends uvm_object;
`uvm_object_utils(router_slave_agent_config)
virtual router_if slv_if;
uvm_active_passive_enum is_active=UVM_ACTIVE;
extern function new(string name="router_slave_agent_config");
endclass
function router_slave_agent_config::new(string name="router_slave_agent_config");
super.new(name);
endfunction
Is this information enough for you sir to debug this?
thanks you sir,
durga prasad.