function bit pre_trigger(uvm_event e, uvm_object data = null); `uvm_info("EPRETRIG", $sformatf("before trigger event %s", e.get_name()), UVM_LOW) return 0; endfunction function void post_trigger(uvm_event e, uvm_object data = null); `uvm_info("EPOSTRIG", $sformatf("after tr...
sequence.strat(sequencer,parent_sequence,优先级) ,第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/ post_body()函数 start 执行 pre_start,body等函数。此时就完成了sequence的启动过程。 所有sequence都要在seq...
1. start()函数显示调用 使用形式: 在sequence中显示调用strat()函数,第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/ post_body()函数 执行pre_start,body等函数。此时就完成了sequence的启动过程。 在start()...
start()具体干的事情如下: 没定义七七八八的就只有自己的body任务,其他的一般也不会定义,用起来太复杂了,一会子类一会父类的pre/post,最多加两个pre_start和post_start。只是UVM开发给了这个东西供我们使用。 start_item()干的事如下: 结合上述Sequence与Driver之前的通信一起理解;再去看下上一节的宏定义; 参...
uvm_sequence_base parent_sequence =null,intthis_priority = -1,bitcall_pre_post =1); 第一个参数必须设置,其他的都有默认值,当parent_seq中的一个函数调用seq.start()时这个sequence将会进入body()方法中,执行的顺序如下: seq.pre_start();
第四个参数值一般使用默认值,这样uvm_sequence::pre_body()和uvm_sequence::post_body会在uvm_sequence::body()前后执行。 2.2 start_item()和finish_item() 使用场景:将item挂载到sequencer上的应用 uvm_sequence::start_item中第三个参数需要用户注意是否将item和parent sequence挂载到不同的sequencer上面去。
1)回调函数,e1.add_calback(d),e1是事件,d是回调函数,其定义要在与uvm_event_callback的子类进行定义,通过这种办法将事件e1和回调函数d绑定在一起,此外在uvm_event_callback的子类中还可以定义wait_trigger调用前后的pre_trigger和post_trigger,pre_trigger需要有返回值,返回值为1时不执行后续的trigger和post_tr...
sequence启动后,会根据参数设置情况,自动执行pre_start(), pre_body(), parent_seq.pre_do(),parent_seq.mid_do(), body(), parent_seq.post_do(), post_body, post_start()等函数/任务。 seq.start(m_sequencer,null,,1);// The following methods will be called in start()seq.pre_start();(...
//| sub_seq.post_body() (task) if call_pre_post==1 //| sub_seq.post_start() (task) 这些prepost可以认为是为方便修改发送行为设置的挂钩程序,而具体的信息发送行为,实在body任务中执行。在使用uvm_sequence的派生类时,最主要的任务是修改这个body任务。在实际的环境中,有时用uvm_do这个宏来执行某个...
我觉得书上6-5代码清单里有两个地方写的不 合理,一个是start的参数应该是sqr的路径,另外是少了设置starting_phase 2) 注意在 case 的 build_phase 中 3) 更推荐用下面这种方式: sequenee 被启动后,会自动执行sequenee 的 bodytask (以及 pre_bodymid_bodypost_body ) 在同一个sequencer上可以启动多个 ...