uvm_config_db#(uvm_object_wrapper)::set(this, "env.v_sqr.main_phase", "default_sequence", virtual_sequence::type_id::get()); 的方法set default_sequence,还可以用与1370行对应的代码的另一种方法(直接set virtual_sequence的实例): virtual_sequence myseq = new("myseq"); uvm_config_db #(...
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启动后会自动执行sequence的body任务,,还会自...
4)set 第一个参数一定要是一个指针,如果改成my_env,“my_env”,uvm_test_top,“uvm_test_top”,都不行。 5)第二个参数出现main_phase,是UVM在设置default_sequence 的要求。除了main_phase 外,还有其他的任务phase(需要仿真时间的),如configure_phase,reset_phase等,所以必须指定是哪个phase,sequencer才知道...
// Method2: using default sequence uvm_config_db#(uvm_sequence_base)::set(this,”agent....
自己的sequence必须从uvm_sequence扩展出来 body()使用task进行书写 body()函数是需要sequencer进行调用starting_phase()函数进行显式调用的 set_default_sequence() - 设置默认的sequence,并且执行其中的body() 没有设置默认的sequence,需要显示调用body() User Sequence with callback 手动创建和发送sequence item sequen...
uvm_do_on宏第一参数是sequence。uvm_do_on_pri_with宏中调用宏uvm_create_on。 create_item通过工厂模式创建sequence实例 调用set_item_context()函数,给成员变量m_sequencer, m_parent_sequence赋值,参考上节分析。此处parent_sequence默认是this。 调用sequence的start函数,流程和上节一样,最后调用body()函数。
raise_objection和drop_objection往往伴随sequence的启动; 第二种:default_sequence 采用default_sequence启动,实际上还是调用了start任务, uvm_config_db#(uvm_object_wrapper)::set(this,"env.fish_agt.sqr.main_phase","default_sequence",case0_sequence::type_id::get()); ...
uvm_config_db#(int)::set(null,"uvm_test_top.fifo_env.wr_agt.drv","wr_stop_sig",wr_stop_sig) 1. uvm_config_db#(int)::get(this,"","wr_stop_sig",wr_stop_sig); 1. 因为是在top中set,第一个参数为null,会自动替换为uvm_root::get(),即uvm_top。
uvm_config_db #(uvm_object_wrapper)::set(this, "env.i_agent.sqr.main_phase", "default_sequence", case0_sequence::type_id::get() ); 2)可以在任何component的task phase中直接调用start函数。 my_seq.start(sequencer); //一般在testcase的相应phase中启动一个sequence。
一种是通过在my_case的build_phase使用uvm_config_db设置default_sequence给sequencer,另一种方式是先实例化要启动的sequence,之后再通过default_sequence启动。两者的区别就在于config_db::set的第四个参数,即要设置的值的获取方式不同,前者通过type_id::get获取,后者则直接用实例化后的变量即可。当一个sequence...