gbbrown Posted September 29, 2011 Report Share Posted September 29, 2011 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! Quote Link to comment Share on other sites More sharing options...
uwes Posted September 30, 2011 Report Share Posted September 30, 2011 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) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.