phase总体可以分为function phase和task phase两大类,其中function phase 不消耗仿真时间,task phase 需要消耗仿真时间。如下图所示: 其中除uvm_run_phase 为task phase外,其余的均为function phase,而run_phase 又分为12个与之并行运行的12个小phase,同样这12phase也属于task phase,如下图所示: 在一般的应用中,...
function uvm_phase top_default_seq::get_starting_phase(); return starting_phase; endfunction: get_starting_phase function void top_default_seq::set_starting_phase(uvm_phase phase); starting_phase = phase; endfunction: set_starting_phase `endif //Youcaninsertcodeherebysettingtop_seq_incinfilecom...
第二种:将此sequence作为sequencer的某动态运行phase的default_phase时,starting_phase不为null。 functionvoidmy_case0::build_phase(uvm_phase phase); super.build_phase(phase); uvm_config_db#(uvm_object_wrapper)::set(this,// "env.i_agt.sqr.main_phase",// "default_sequence",// case0_sequence:...
5. 调试流程最佳实践 FactoryConfigEnvTestFactoryConfigEnvTestprint_topology()查看结构set虚拟接口传递配置创建组件返回实例完成构建
启动sequence的另一种方式是default_sequence,通过config_db set机制来使用default_sequence,并且不需要使用get。 可以在不同的地方通过default_sequence来启动sequence,比如在env中,第一个参数是this,第二个是相对于第一个参数的相对路径,路径需要指定到phase一级,比如main_phase,第三个和第四个参数纯属规定,照抄就行...
//User need to set the starting_phase as sequence start method is explicitly calledto invoke the sequence seq.starting_phase = phase; seq.start(); … endfunction : main_phase 结束类 使用UVM 配置从顶级测试中获取值。在上面的示例中,没有为测试编写者提供可控性,因为序列不使用配置从顶级测试或序列...
第⼆种:将此sequence作为sequencer的某动态运⾏phase的default_phase时,starting_phase不为null。function void my_case0::build_phase(uvm_phase phase);super.build_phase(phase);uvm_config_db#(uvm_object_wrapper)::set(this, // "env.i_agt.sqr.main_phase", // "default_sequence", /...
seq1.starting_phase = phase env.i_agt.sqr.set_arbitration(SEQ_ARB_STRICT_FIFO); // 启动优先级配置 fork seq0.start(env.i_agt.sqr); seq1.start(env.i_agt.sqr); join endtask 1. 2. 3. 4. 15. 16. 17. seq.start(sqr) 设置 sequence 优先级 ...
//也就是在sequence中发送seq前后使用starting_phase来提起/撤销objection //方法2.1:先定义和例化 apb_write_sqe m_seq; m_seq=apb_write_seq::type_id::creat("m_seq"); config_db #(apb_write_seq) set::(this, "env_i_agt_sqr.main_phase", "defualt_sequence", m_seq) ...
function void base_test::build_phase(uvm_phase phase); super.build_phase(phase); m_env = env::type_id::create("m_env",this); m_xx_cfg = ...; set_cfg(); //send config uvm_config_db#(xx_cfg)::set(uvm_root::get(),"*","m_xx_cfg",m_xx_cfg); ...