Friday, April 19, 2013

Virtual Sequence and Virtual sequencer in UVM


Virtual Sequence:
When you want to select the sequence from testcase, use virtual sequence.



Virtual Sequencer:
If you need to coordinate the activity between your two sequences (bus_master_seq & other_seq1), it is sometimes easier to do it using a virtual sequence.


If you don't need to coordinate activity between them, then what you have will work fine and you don't need a virtual sequencer.


If the two sequences are independent, but you need one to run before the other, you can use the phasing mechanism in UVM. For example, if your two sequences are independent, but you need to run the bus_master_seq before other_seq1 starts, you can set them to run in different phases.


E.g.


//running bus_master sequence on sequencer1

uvm_config_db#(uvm_object_wrapper)::set(this,"sqr1.configure_phase","default_sequence",bus_master_seq::type_id::get());


//running other_seq1 on sequencer2

uvm_config_db#(uvm_object_wrapper)::set(this,"sqr2.main_phase","default_sequence",other_seq1::type_id::get());

Ethernet and more

Ethernet is a protocol under IEEE 802.33 standard User Datagram Protocol (UDP) UDP is a connectionless transport protocol. I...