你是否在面试或笔试中被问到了sequence有哪些启动的方式?今天就来梳理一下sequence的启动到底有哪些。
1. start( ) 函数启动
经常用的一种就是在 test 中手动调用 start 函数启动对应的sequence,将sequence挂载在对应的sequencer上。如下:在base_test中启动
class base_test extends uvm_test;
my_env env;
...
endclass
task base_test::main_phase(uvm_phase);
base_sequence seq;
seq = base_sequence::type_id::create("seq");
seq.start( env.agt.sqr);
endtask
...
2. default_sequence 启动
也可以使用default sequence的方式指定自动启动的sequencer,如下:在base_test中指定
class base_test extends uvm_test;
my_env env;
...
endclass
function base_test::build_phase(uvm_phase phase);
super.build_phase(phase);
base_sequence seq = new("seq");
uvm_config_db#(uvm_object_wrapper)::set(this,
"env.agt.sqr.main_phase",
"default_sequence",
seq);
// uvm_config_db#(uvm_ob