gbbrown Posted September 29, 2011 Report 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
uwes Posted September 30, 2011 Report 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
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.