The standard factory can be replaced with an alternative user-defined factory, e.g. to provide improved debug functionality. uvm_objection::set_propagate_mode uvm_phase::get_objection_count phase.drop_objection(this, "msg", phase.get_objection_count(this)); uvm_phase::get_adjacent_predecessor/...
所以在sequence中使用config_db::get函数得到参数的最大障碍是路径问题,使用get_full_name()可以得到一个component的完整路径 可以使用如下的方式为一个sequence传递参数:uvm_config_db#(int)::set(this, "env.i_agt.sqr.*", "count", 9); sequence中以如下的方式调用config_db::get函数:uvm_config_db#(in...
此时,UVM监测发现所有的objection都被撤销了(因为只有driver raise_objection),于是UVM会直接“杀死”monitor中的无限循环进程,并跳到下一个phase,即post_main_phase()。 假设进入main_phase的时刻为0,那么进入post_main_phase的时刻就为100。如果driver根本就没有raise_objection,并且所有其他component的main_phase里面...
uvm objection raise objection可以在任意组件中进行,也可以在sequence中进行,若多次raise,需多次drop 在某个phase中遇到消耗仿真时间的语句,uvm会首先判断是否在此之前执行raise objection,若没有,则会立刻退出当前phase 对于多个组件: 此时未添加raise/drop objection monitor的reset phase也执行了,因为driver中reset phas...
get_objection_count() == 0); 85 if (m_busy) 86 `uvm_info("", {phase.get_full_name(), " phase_ended called when busy"}, UVM_MEDIUM) 87 m_busy = 0; 88 endfunction 89 design.sv 1 // Code your design here 2 Log Share 4941 views and 3 likes Look out ...
由于无限循环的特性,phase.drop_objection永远不会被执行到。 一种常见的思维是将raise_objection放在get_next_item之后,这样的话,就可以避免无限循环的问题: task driver::main_phase(uvm_phase phase);while(1) beginseq_item_port.get_next_item(req);phase.raise_objection(this);…//drive the interface ac...
※ drop_objection(uvm_object obj=null,string description = "", int count=1)落下objection ※ set_drain_time(uvm_object obj=null, time drain)设置退出时间。 这个objection机制非常重要,在仿真的过程中,至少要有一个component挂起objection来防止仿真结束,这是UVM的范式。如果进入到run_phase阶段,没有组件把...
get_parent:用于得到当前实例的parent,一个component只有一个parent,所以get_parent不需要指定参数。get_...
只在最顶层的virtual sequence中控制objection。 (1)在sequence中获取参数 sequence的路径:uvm_test_top.env.i_agt.sqr.case0_sequence 【uvm_config_db#(int)::set(this, "env.i_agt.sqr.*", "count", 9);】 因为sequence在实例化时名字一般是不固定的,而且有时时未知的(比如使用default_sequence启动的...
uvm验证环境里一般通过objection机制来控制仿真的结束,不过在机制之外,有时还需要通过看门狗来watchdog避免仿真环境挂死,watchdog配合objection一起来控制仿真的进行与结束。 我一直自诩为对环境watchdog这件事烂熟于心了,不过没想到这天还是被伤害到了。 事故背景 ...