P_sequencer issue

I am seeing p_sequencer issue while running my sequence on virtual sequencer:
code snippet:


class ip_slave_tx_virtual_sequence extends uvm_sequence;

 `uvm_object_utils(ip_slave_tx_virtual_sequence)

ip_transmitter_random_sequence ip_seq0;

  `uvm_declare_p_sequencer(ip_virtual_sequencer) 
...
..
 ip_seq0.start(p_sequencer.transmitter_sequencer[0]);//transmitter_sequencer[0] is defined in virtual sequencer
endclass

ip_transmitter_random_sequence is defined like this:


class ip_transmitter_random_sequence extends uvm_sequence#(ip_transmitter_transaction);
..
..
endclass

while virtual sequencer class is defined like this:


class ip_virtual_sequencer extends uvm_sequencer #(uvm_sequence_item);
...
endclass

the errror i got is UVM_FATAL:
ip_slave_tx_virtual_sequence::m_set_p_sequencer uvm_test_top.ip_env_inst.vseqr.ip_slave_tx_virtual_sequence Error casting p_sequencer, please verify that this sequence/sequence item is intended to execute on this type of sequencer

In reply to vineet_sharma:

Looks like your virtual sequencer was not constructed.
BTW when using the virtual_sequencer you do not need to use the p_sequencer approach.