Hi,
I am getting below fatal when i am running in my Test env;
ovm_test_top.memctl_env0.memctl_agent0.memctl_sequencer0 [STRDEFSEQ] Null m_sequencer reference
Below is my agent code where i am doing set_config of sequence.
// Memory controller agent class declaration
class memctl_agent extends ovm_agent;
// Variable to set the ON/OFF of the sequencer and driver
ovm_active_passive_enum is_active = OVM_ACTIVE;
// Utilities declaration
ovm_component_utils_begin(memctl_agent)
ovm_field_enum(ovm_active_passive_enum, is_active, OVM_ALL_ON)
`ovm_component_utils_end
// Components declaration inside agent : sequencer, driver, monitor
memctl_sequencer memctl_sequencer0;
memctl_driver memctl_driver0;
memctl_mon_itd memctl_mon_itd0;
memctl_mon_ofd memctl_mon_ofd0;
// New constructor declaration
function new (string name, ovm_component parent);
super.new(name, parent);
endfunction : new
// Build function declaration
function void build();
super.build();
memctl_mon_itd0 = memctl_mon_itd::type_id::create("memctl_mon_itd0",this);
memctl_mon_ofd0 = memctl_mon_ofd::type_id::create("memctl_mon_ofd0",this);
set_config_string("memctl_sequencer0", "default_sequence", "memctl_sequence_opr");
if (is_active == OVM_ACTIVE) begin
memctl_sequencer0 = memctl_sequencer::type_id::create("memctl_sequencer0",this);
memctl_driver0 = memctl_driver::type_id::create("memctl_driver0",this);
end
endfunction: build
// Connect function declaration
function void connect();
if (is_active == OVM_ACTIVE) begin
memctl_driver0.seq_item_port.connect(memctl_sequencer0.seq_item_export);
`ovm_info(get_type_name(),“Inside configuration active”,OVM_LOW)
end
endfunction: connect
endclass: memctl_agent
I have mentioned sequence and sequencer…But not able to understand why i am getting this error:
Please find below my sequence aswell:
class memctl_sequence_rst extends ovm_sequence #(memctl_item);
function new(string name = “memctl_sequence_rst”);
super.new(name);
endfunction
`ovm_sequence_utils(memctl_sequence_rst, memctl_sequencer)
virtual task body();
`ovm_do_with(req,{req.memctl_opr0 == RST;})
endtask
endclass: memctl_sequence_rst
// Memory controller sequence performing write operation
class memctl_sequence_write extends ovm_sequence #(memctl_item);
function new(string name = “memctl_sequence_write”);
super.new(name);
endfunction: new
`ovm_sequence_utils(memctl_sequence_write, memctl_sequencer)
virtual task body();
`ovm_do_with(req,{req.memctl_opr0 == WR;})
endtask: body
endclass: memctl_sequence_write
// Memory controller sequence performing read operation
class memctl_sequence_read extends ovm_sequence #(memctl_item);
function new(string name = “memctl_sequence_read”);
super.new(name);
endfunction: new
`ovm_sequence_utils(memctl_sequence_read, memctl_sequencer)
virtual task body();
`ovm_do_with(req,{req.memctl_opr0 == RD;})
endtask: body
endclass: memctl_sequence_read
class memctl_sequence_opr extends ovm_sequence #(memctl_item);
function new(string name = “memctl_sequence_opr”);
super.new(name);
endfunction
`ovm_sequence_utils(memctl_sequence_opr, memctl_sequencer)
memctl_sequence_rst seq_rst;
memctl_sequence_write seq_wr;
memctl_sequence_read seq_rd;
virtual task body();
#200;
`ovm_do(seq_rst)
for(int i = 0 ; i <2 ; i++) begin
#200;
`ovm_do(seq_wr)
#200;
`ovm_do(seq_rd)
end
endtask: body
endclass: memctl_sequence_opr
Please help me resolve this issue.
Thanks
Bharath