Jump to content

Recommended Posts

Posted

I have 2 sequences, idle_seq and action_seq. I want idle_seq to run over and over on the sequencer with a low priority such that I can start action_seq at various times during the run and it will interrupt idle_seq, taking over the driver and injecting transactions.

What's the best mechanism for doing this? OVM used to have a count value in the sequencers, but if I understand correctly that is deprecated.

Originally, I thought using a forever begin/end block in the idle_seq body() function would do it. However, I think that will only loop idle_seq forever since the sequence never technically finishes. I haven't tested this yet, but I suspect this would be the case.

The best way I can think of doing this is to assign idle_seq a low priority and fork off a forever begin/end loop that constantly calls idle_seq.start() over and over. Then if action_seq.start() is called elsewhere with a higher priority, it will interrupt idle_seq the next time idle_seq finishes.

Anyone's insight would be appreciated! Thanks!

Posted

hi,

you might want to look at:

- uvm_sequencer::set_arbitration()

- uvm_sequence::set_priority()

if you want to arbitrate between sequences. to "override" the arbitration you can use grab/lock (ungrab/unlock)

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...