Hi Tudor Timi.
I’m trying to start a sequence with a virtual sequencer in a task but I’m stuck.
For example, there is task body() in virtual_seq class. usually, we execute sequence in a test class as the below But I want to start a sequence from mytask as the below.
task run_phase(uvm_phase phase);
phase.raise_objection(this);
v_seq = virtual_seq::type_id::create("v_seq");
//v_seq.start(env_o.v_seqr);
v_seq.mytask;
phase.drop_objection(this);
endtask
and here is the virtual sequence.
class virtual_seq extends uvm_sequence #(seq_item);
core_A_seq Aseq;
core_B_seq Bseq;
core_A_sequencer seqr_A;
core_B_sequencer seqr_B;
`uvm_object_utils(virtual_seq)
`uvm_declare_p_sequencer(virtual_sequencer)
function new (string name = "virtual_seq");
super.new(name);
endfunction
task mytask;
Aseq = core_A_seq::type_id::create("Aseq");
Bseq = core_B_seq::type_id::create("Bseq");
Aseq.start(p_sequencer.seqr_A);
Bseq.start(p_sequencer.seqr_B);
endtask
endclass
and I got the NULL pointer dereference.
Error about p_sequencer.
How can I use p_sequencer in a task?
I implemented With Virtual Sequnce & virtual sequecer (p_seq(1) - EDA Playground for my question.