Drive another interface

Hi All
I have a seqA which drive interface A, and seqB which drive interface B.
Now, I want to use seqB in seq A. How can I call seqB in seq A?



class seqA extends uvm_sequence(item)
task body
seqB b= seqB ::type_id::create("b");
b.start(""); // ?? how to trigger seq B?  Don't know what input argument is  
endtask

endclass


Thanks

In reply to timag:

If you want to do this seqB has to be parameterized for the same seq_item, i.e. item, as seqA.
The construct you are using is called sequence-of sequences.
Your body task should look like this:

task body();
   seqB sB;
   `uvm_do(sB);
endtask

seqB runs on another sequencer. what the input argument of start function is ?
Thanks

In reply to timag:

Could you please show how seqB is defined?
The 1st line of the class definition would be fine.
When seqB is running on another sequencer then seqA is a virtual sequence. A virtual sequence does not produce any seq_item.
The definition should be like this:

class seqA extends uvm_sequence;
task body;
  seqB b= seqB ::type_id::create("b");
  b.start(b_sequencer);   
endtask
endclass

In reply to chr_sue:

I have two sequence A and B. I want seqA to call seqB, how the seqA can get b_sequencer’s path? thanks!


class seqB extends uvm_sequence(ItemB);
task body;
xxxxxx
endtask
endclass

class seqA extends uvm_sequence(ItemA);
task body;
  seqB b= seqB ::type_id::create("b");
  b.start(b_sequencer);   
endtask
endclass

In reply to timag:

What do you want to dois not legal and impossible.
A sequencer is parameterized for a specific seq_item. To this sequencer you can define sequences which are defining how this specific seq_item wil be generated.
If you have a different sequence parameterized with a different seq_item. The previous sequencer cannot generate these seq_items.