abhishekyadav123 Posted September 16, 2011 Report 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
arno Posted September 16, 2011 Report 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
uwes Posted September 16, 2011 Report 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
gaurav7589 Posted September 20, 2011 Report 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
dave_59 Posted September 20, 2011 Report 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
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.