( body()函数被sequence的 start()函数调用,也可以理解成 start()函数的执行 ) sequence的挂载:uvm_sequence不属于component,没有phase概念,需要挂载在一个sequencer上,在这个sequencer的phase中被调用(default_sequence的情形),同时uvm_sequence可以操作所挂载的sequencer的成员变量( *比如在sequence中使用sequencer中的寄...
classbase_sequenceextendsuvm_sequence#(transaction); ... virtual task body(); crc_seq cseq=crc_seq::type_id::create("cseq"); long_seq lseq=long_seq:;type_id::create("lseq"); repeat(10)begin cseq.start(m_sequencer);//启动嵌套的seqlseq.start(m_sequencer);endendtask endclass 采用uv...
classsequence1extendsuvm_sequence#(my_transaction);virtualtaskbody();repeat(3)begin`uvm_do_with(m_trans,{m_trans.pload.size<500;})`uvm_info("sequence1","send one transaction",UVM_MEDIUM)endlock();`uvm_info("sequence1","locked the sequencer ",UVM_MEDIUM)repeat(4)begin`uvm_do_with(m_...
uvm_config_db#(uvm_sequence_base)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", cseq); sequence启动后会自动执行sequence的body任务,,还会自动调用sequence的pre_body与post_body sequence的仲裁机制 在同一sequencer上启动多个sequence 使用uvm_do或者uvm_do_with宏时,产生的transaction的优先...
再来看uvm_do宏,展开之后最终还是调用的start函数。区别在于有两个参数设置,parent_sequence参数配置成了this,call_pre_post参数配置成了0。uvm_do更多的是用在一个父sequence对子sequence的启动上:父sequence的do函数会被执行,同时不需要执行子sequence的pre...
sequencer是uvm组件,一个sequencer可以调用多个sequence uvm_squence class普通成员 sequence执行流程 sequencer和driver是在agent中进行例化的 sequencer中可以设置默认的sequence,设置完成之后,会自动执行sequence中的body(),另外会自动执行driver中的get_next_item() sequencer中的start()函数会调用sequence中的body()函数,...
UVM中 test bench及其启动 uvm启动sequence的方法,start():sequence.strat(sequencer,parent_sequence,优先级),第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_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里消耗时间的语句是不会被...
第一种: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"); ...