在sequence中显示调用strat()函数,第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/ post_body()函数 执行pre_start,body等函数。此时就完成了sequence的启动过程。 在start()函数中,首先调用了函数set_item_conte...
如果在sequencer中启动,唯一的区别就是start的参数变为this,即seq.start(this); 通常sequence不会直接发送给sequencer,而是通过virtual_sequence和virtual_sequencer; raise_objection和drop_objection往往伴随sequence的启动; 第二种:default_sequence 采用default_sequence启动,实际上还是调用了start任务, 代码语言:javascript ...
一、直接启动 seq create之后,直接调用start命令启动: my_sequence my_seq; my_seq = my_sequence ::type_id::create("my_seq"); my_seq.start(sequencer); 二、default sequence启动 case1:在tc的build_phase中执行如下: uvm_config_db#(uvm_object_wrapper)::set(this,"env.agt.sqr.main_phase","de...
第一种:start启动 最简单粗暴的一种方式,只需要在某个component,如my_sequencer、my_env甚至base_test的main_phase中启动。 task fish_env::main_phase(uvm_phase phase); fish_sequence seq;//创建seq实例phase.raise_objection(this); seq = fish_sequence::type_id::create("seq"); seq.start(fish_agt....
UVM中 test bench及其启动 uvm启动sequence的方法,start():sequence.strat(sequencer,parent_sequence,优先级),第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/
隐式启动 ——使用uvm_config_db机制配置default_sequence启动。 //sequence的显式启动//该方法提起和落下objection,通过phase.raise_objection(this)/phase.drop_objection(this)my_sequence seq = my_sequence::type_id::create("seq"); phase.raise_objection(this); ...
UVM中sequence的两种启动方式 第一种: 当完成一个sequence的定义后,可以使用start任务将其启动: task my_env::main_phase(uvm_phase phase); my_sequence seq;// phase.raise_objection(this); seq = my_sequence::type_id::create("seq");//或者 seq = new("seq"); ...
启动方式: 直接启动:my_seq.start(sequencer); uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", case0_sequence::type_id::get()); uvm_config_db#(uvm_sequence_base)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", cseq); ...
结论:Sequence启动可以用start()方法,也可以用uvm_do宏,还可以用default_sequence。但建议用start(),不建议用default_sequence。 start()方法的原型如上图所示,总共有四个参数。其中用的最多的是第一个参数sequencer,用来指定sequence运行在哪个sequencer上面...