[STRDEFSEQ] Null m_sequencer reference

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