abhishekyadav123 Posted September 16, 2011 Report Share Posted September 16, 2011 Hi All UVM Geeks, I have been recently moved to UVM and trying to find out answer to a basic question. Is it possible to call multiple sequences from within the test cases. From UVM UBUS example I found that it is possible to override the default sequence from within the build phase. This can only invoke one sequence. What is need in my test case is - "Seq1" --- <some delay> - "Seq2"----- <some_delay> - "Seq3"................................. How can I have such control in my test case. Regards, Abhishek Quote Link to comment Share on other sites More sharing options...
arno Posted September 16, 2011 Report Share Posted September 16, 2011 You should rather start the sequences on the sequencer(s) in your test : class my_test extends uvm_test; ... etc ... virtual task run_phase(phase); // create the sequences ... // start the sequences seq1.start(sequencer,null); seq2.start(sequencer,null); ... etc ... endtask endclass Quote Link to comment Share on other sites More sharing options...
uwes Posted September 16, 2011 Report Share Posted September 16, 2011 hi, why not to make a new sequence which does >"Seq1" --- <some delay> - "Seq2"----- <some_delay> - "Seq3"................................. as an alternative you may use the sequence library to create a "random" kind of sequence. /uwe Quote Link to comment Share on other sites More sharing options...
gaurav7589 Posted September 20, 2011 Report Share Posted September 20, 2011 hi, why not to make a new sequence which does >"Seq1" --- <some delay> - "Seq2"----- <some_delay> - "Seq3"................................. as an alternative you may use the sequence library to create a "random" kind of sequence. /uwe Hi All, Can you throw some more light on the same problem...As to where we will define these sequence?? Also cant we use arbitration algorithm for the same?? If possible can you explain with small piece of code?? Thanks a lot.... Quote Link to comment Share on other sites More sharing options...
dave_59 Posted September 20, 2011 Report Share Posted September 20, 2011 task body; my_seq_base seq_array[$]; seq_array.push_front(my_seq_0::type_id::create("seq_0"); seq_array.push_front(my_seq_1::type_id::create("seq_1"); seq_array.push_front(my_seq_2::type_id::create("seq_2"); seq_array.push_front(my_seq_3::type_id::create("seq_3"); // Shuffle the array contents into a random order: seq_array.shuffle(); // Execute all the array items in turn foreach(seq_array[i]) begin if(!seq_array[i].randomize()) begin `uvm_error("body", "randomization failed for req") end seq_array[i].start(m_sequencer); end endtask: body More example can be found herehttp://verificationacademy.com/uvm-ovm/Sequences/Generation 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.