Jump to content

Can we fire two sequence parallel on a single sequencer


Recommended Posts

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.

Link to comment
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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...