//下面这个步骤不是唯一的。但应该还算比较规范。没有考虑virtual sequence
(1)在顶层top_tb中run_test()。这个之前不能有任何延时,否则会有UVM_FATAL
(2)有两种方式启动sequence
(2.1)让平台自动启动:在自定义的test_case(不是test_base)的build_phase中,调用config_db,设置default_sequence
uvm_config_db #(uvm_object_wrapper)::set(this,"env.agent.sqr.main_phase","default_sequence",xxx_sequence::type_id::get());
这句话是告诉env.agent.sequencer,当平台运行到main_phase时,自动启动sequence。
(2.2)如果手动启动sequence,则需要在sequencer的main_phase中指定。
hello_sequence seq;
seq = new("seq");
seq.starting_phase(phase);//suquence是object是没有phase的,所以需要通过starting_phase把phase指针传递给sequence
seq.start(this); //seq.start()中包含seq.body(),执行sequence中的task body
(3)在sequence中,判断starting_phase!=null,通过raise_objection,drop_objection控制验证平台的开关
UVM启动的几个步骤
最新推荐文章于 2023-08-01 20:37:24 发布