HI ,
I am using out of file declaration for testcase but getting compilation, Quick help is appreciated.
Compile error:: ** Error: umi_basic_access_test.sv(84): (vlog-2731) Method never defined for ‘task’ ‘umi_WRITE’.
** Error: /umi_basic_access_test.sv(236): Number of actuals and formals does not match in task call.
class umi_basic_access_test extends chip_base_test;
`uvm_component_utils(umi_basic_access_test)
virtual umi_if umi_virtual_vif_h;
virtual S2P_if S2P_virtual_vif_h;
extern function new(string name = "umi_basic_access_test", uvm_component parent=null);
extern virtual function void build();
extern virtual function void connect();
extern virtual task run_phase(uvm_phase phase);
extern virtual task umi_WRITE(bit [19:0] umi_addr, bit[7:0] umi_data);
endclass: umi_basic_access_test
function umi_basic_access_test::new(string name = "umi_basic_access_test", uvm_component parent=null);
super.new(name, parent);
endfunction
//--------------------------------------------------------------------
// build
//--------------------------------------------------------------------
function void umi_basic_access_test::build();
super.build();
`uvm_info(get_type_name(), "build method of umi_basic_access_test", UVM_LOW);
endfunction : build
//-----------------------------------------------------------------------------
// connect
//-----------------------------------------------------------------------------
function void umi_basic_access_test::connect();
typedef uvm_vif_container #(virtual umi_if) umi_vif_container_t;
umi_vif_container_t umi_vif_container_h;
typedef uvm_vif_container #(virtual S2P_if) S2P_vif_container_t;
S2P_vif_container_t S2P_vif_container_h;
super.connect();
`uvm_info(get_type_name(), "Connect method of umi_basic_access_test", UVM_LOW);
if(!get_config_object("umi_vif_container_h", dummy, 0)) begin
uvm_report_error("build", "no virtual interface available");
end
else begin
if(!$cast(umi_vif_container_h, dummy)) begin
uvm_report_error("build", "virtual interface is incorrect type");
end
else begin
umi_virtual_vif_h = umi_vif_container_h.m_vif_h;
end
end
if(!get_config_object("S2P_vif_container_h", star, 0)) begin
uvm_report_error("build", "no virtual interface available");
end
else begin
if(!$cast(S2P_vif_container_h, star)) begin
uvm_report_error("build", "virtual interface is incorrect type");
end
else begin
S2P_virtual_vif_h = S2P_vif_container_h.m_vif_h;
end
end
endfunction : connect
//--------------------------------------------------------------------
// run
//--------------------------------------------------------------------
task umi_basic_access_test::run_phase(uvm_phase phase);
umi_WRITE(20'h30001,8'h45);
#100ns;
`uvm_info(get_type_name(), "Finishing test umi_basic_access_test", UVM_LOW);
phase.drop_objection(this, "run - drop_objection");
endtask : run_phase
`endif
NEW FILE::
`ifndef umi_basic_access_test_SV
`define umi_basic_access_test_SV
`include "umi_basic_access_test.sv"
task umi_basic_access_test::umi_WRITE(bit [19:0] umi_addr, bit[7:0] umi_data);
`S2P_write(20'h30001,8'h45,2'b00);
umi_virtual_vif_h.en = 1'b1;
//enabling clock umi
#100ns;
umi_virtual_vif_h.umi_top_reg_wr = 1'b1;
#100ns;
umi_virtual_vif_h.umi_top_reg_wr = 1'b0;
#10ns;
umi_virtual_vif_h.en = 1'b0;
endtask
`endif
~Taahir