( body()函数被sequence的 start()函数调用,也可以理解成 start()函数的执行 ) sequence的挂载:uvm_sequence不属于component,没有phase概念,需要挂载在一个sequencer上,在这个sequencer的phase中被调用(default_sequence的情形),同时uvm_sequence可以操作所挂载的sequencer的成员变量( *比如在sequence中使用sequencer中的寄...
uvm_do更多的是用在一个父sequence对子sequence的启动上:父sequence的do函数会被执行,同时不需要执行子sequence的pre_body()和post_body()。 之所以建议用start(),是因为宏尽管便利,但会隐藏掉一些必要的信息,比如不了解uvm_do宏展开的工程师,他就不知道...
sequencer是uvm组件,一个sequencer可以调用多个sequence uvm_squence class普通成员 sequence执行流程 sequencer和driver是在agent中进行例化的 sequencer中可以设置默认的sequence,设置完成之后,会自动执行sequence中的body(),另外会自动执行driver中的get_next_item() sequencer中的start()函数会调用sequence中的body()函数,...
uvm_do更多的是用在一个父sequence对子sequence的启动上:父sequence的do函数会被执行,同时不需要执行子sequence的pre_body()和post_body()。 之所以建议用start(),是因为宏尽管便利,但会隐藏掉一些必要的信息,比如不了解uvm_do宏展开的工程师,他就不知道pre_body()和post_body()为什么不会被执行;而如果用start(...
UVM(九)之sequencej机制续1 UVM(九)之sequencej机制续1 当一个sequence启动起来之后,UVM会自动执行sequence的body任务,所以要产生各种和杨的激励,就要写好body任务。 body这个任务完成的事情与gen_pkt函数相似,只是不同的是,gen_pkt可以直接通过一个ref形式的参数把产生的transaction交给driver,而sequence则需要...
第四个参数值一般使用默认值,这样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上面去。
其中sequence0的定义为: classsequence0extendsuvm_sequence#(my_transaction);virtualtaskbody();repeat(5)begin`uvm_do(m_trans)`uvm_info("sequence0","send one transaction",UVM_MEDIUM)end#100;endtask`uvm_object_utils(sequence0)endclass sequence1的定义为: ...
virtualtaskstart (uvm_sequencer_base sequencer, uvm_sequence_base parent_sequence =null,intthis_priority = -1,bitcall_pre_post =1); 第一个参数必须设置,其他的都有默认值,当parent_seq中的一个函数调用seq.start()时这个sequence将会进入body()方法中,执行的顺序如下: ...
一、sequence的执行流程 二、sequence的启动方式——start()/default_sequence 二、sequence生产数据——body( ) 2.1.宏`uvm_do( )的功能 2.2.sequence的嵌套启动 2.3.sequence接收响应rsp 三、config_db配置sequence 3.1.默认执行的sequence 3.2.配置sequence——get_full_name() / m_sequencer ...
也可以把这两句话分别放在pre_body()和post_body()里,否则default_sequence里消耗时间的语句是不会被...