Hi all !
I got stuck with this error while attempt to create a simple SV verification environent: here a quick description:
i have an interface called count_bfm
INTERFACE:
interface count_bfm (input bit clk);
logic reset;
logic cmd_in;
[...]
task automatic write_cmd (
[...write...]
endtask
task automatic read_cmd (
[...]
endtask
endinterface: count_bfm
a PACKAGE in which I declare the interface handler
package test_params_pkg;
virtual count_bfm v_count_bfm_rtl; // virtual interface
virtual count_bfm v_count_bfm_mod; // virtual interface
endpackage
a TOP in which i instantiate the rtl and the SV model for parallel verification with
module top;
// clk generatiion
bit clk;
initial
forever #50 clk = !clk;
// create "real" interface & DUT
count_bfm count_bfm_rtl (clk); // new interface instance for rtl
count_bfm count_bfm_mod (clk); // new interface instance for model
// rtl instantiation
rtl_inst (...connect with count_bfm_rtl...);
// instatiate model
model_inst(...connect with count_bfm_mod...);
initial begin
test_params_pkg::v_count_bfm_rtl = count_bfm_rtl; // connect virtual to real interface
test_params_pkg::v_count_bfm_mod = count_bfm_mod; // connect virtual to real interface
end
endmodule
a DRIVER that receives transactions from a mailbox (omitted and send them to the interface)
class count_driver;
[...]
virtual count_bfm vif_rtl;
virtual count_bfm vif_mod;
task run();
vif_rtl = test_params_pkg::v_count_bfm_rtl; // set virtual if
vif_mod = test_params_pkg::v_count_bfm_mod; // set virtual if
forever begin
$display("DRIVER STARTED");
// send transaction to rtl interface and model interface
vif_rtl.write_cmd(... );
end
end
endtask
endclass
i cannot understand why i got *xmsim: E,TRNULLID: NULL pointer dereference. when calling vif_rtl.write_cmd(… );
actually i created 2 interface and correctly connected them using same virtual interface handler in the package !