Jump to content
Sign in to follow this  
vivek2585

Can we fire two sequence parallel on a single sequencer

Recommended Posts

We can do this but which sequence would be picked by sequencer is not sure.

Don't forget that eventually there is one driver only to execute the sequence.

Hence practically it will not work yeah but you can push two sequence at a time.

Good luck

Thanks

Nirmish

Share this post


Link to post
Share on other sites

Yes, you can! The sequencer is basically a big arbiter that decides what to do next. Doing things in random order is essential to finding those tough bugs.

 

You can control which sequence occurs next with priorities and other algorithms, but letting the sequencer decide is good enough to get you started.

 

Here's how you might do it:

task body();
   easy_seq_c easy_seq;
   ugly_seq_c ugly_seq;
   hairy_seq_c hairy_seq;


   fork
      `uvm_do(easy_seq)
      `uvm_do(ugly_seq)
      `uvm_do(hairy_seq)
   join
endtask : body

Of course, running lots of sequences and virtual sequences all at the same time is important so for that you would need loops and lots of other random thingies.

Share this post


Link to post
Share on other sites

bhunter1972 is exactly correct. Sequencers are designed to do arbitration and they do so exceedingly well. Yes, your driver will take one transaction at a time, but that is to be expected. If you have a driver than can bundle transactions or send them in parallel, you could do something in the driver like:

 

  seq_item_port.get(req1);

  seq_item_port.get(req2);

 

and then handle both of them; however, this would be a very strange driver and probably not what most designs need.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×