M_sequencer usage in start()

I searched “m_sequencer” and as far as I understand, it is availabe inside sequences by default. Is it used to sequencer - sequence connection?

But I am confused about usage m_sequencer inside start()

There is 2 code snippets here:

vseq is virtual sequence

1. Code:


vseq.SQR_AHB = test.env.ahb_agent.SQR_AHB;
vseq.SQR_AXI = test.env.axi_agent.SQR_AXI;

v_sqr is virtual sequence_R_

2. Code:


v_sqr.SQR_AHB = AHB_AGNT.m_sequencer;
v_sqr.SQR_AXI = AXI_AGNT.m_sequencer;

  • For first code, we have user defined seqeuncers and imply it by writing “agent.sqr”?
  • For second code, there is no sequencers that’s why, we use uvm_sequencer and we write “m_sequencer”?

What is the reason of the difference?

Regards,
Hakan

Can anybody help?

In reply to hcglu:

There are a lot of contributions wrt m_sequencer here in the forum. You should search for them.
But you should know a sequence has to be executed on a existing seuencer. There are different ways to make the right sequencers available. Because the sequencers belong to the topology of the UVM testbench one way is to use the hierarchical path to the right sequencer from the test.
In your 1st code you have handles to the right seuqnecers in your vortual sequence.
In the 2nd example you are ddoing the same, but with a different path.
There is nothing els to explain.