使用sequence机制之后,在不同的测试用例中,将不同的sequence设置成sequencer的main_phase的default_sequence。
当sequencer执行到main_phase时,发现又default_sequence,那么它就启动sequence。
sequence的启动
(1)start直接启动
my_seq.start(sequencer);
(2)使用default_sequence启动:当一个sequence启动后会自动执行sequence的body任务
uvm_config_db#(uvm_object_wrapper)::set(this,"env.agt.sqr.main_phase",
"default_sequence",
base_sequence::type_id::get());
sequence的仲裁机制
UVM支持同一时刻在同一sequencer上启动多个sequence。
对于transaction来说,存在优先级的概念,优先级越高越容易被选中。
- uvm_do或者uvm_do_with:默认优先级-1
- uvm_do_pri或者uvm_do_pri_with:[ `uvm_do_pri("tr,100") ] 第二个参数改变transaction的优先级,这个数值必须是大于-1的整数。数字越大优先级越高