In reply to ayasaad234:
You should never declare or use p_sequencer, as this reduces the reusability of your sequences.
Instead, your sequence should contain handles to all required objects that are set by the component or virtual sequence that creates the sequence.
Additionally, you should never extend uvm_sequencer to add any objects. Your agent should use a typedef of the uvm_sequencer parameterized with the agent’s sequence_item for the sequencer type.