UVM_phase

1、UVM 中的phase

  1、右边的是task phase,消耗时间的phase;

  2、左边的是function phase,不消耗仿真时间;

   3、uvm_component 的实例化只能在build_phase中;

   4、uvm_object的实例化可以在任何phase完成;

2、phase的执行顺序

  1、build_phase自上而下执行,因为只有build了上层才能去例化下层。

  对于兄弟关系的uvm component,他们的build_phase执行顺序按照字典的顺序执行,即例化名。

  uvm 采用深度优先的uvm树遍历方式。这样叔侄关系的uvm_component的build phase执行的顺序会根据叔叔辈的字典顺序决定。

  2、其他function_phase都是自下而上执行的。

  3、各个uvm_component 的run_phase是通过fork join形式同时执行的。

3、super.xxx_phase

  1、build_phase中的super.build_phase是必须的,因为build_phase自上而下执行,为了使得上层的配置信息生效,必须这样做。

  2、uvm_component 类通过扩展,需要保留父类中phase的信息需要加入super.xxx_phase。

4、phase跳转

 

支持跳转的phase有下面的phase

5、objection机制

在进入到某一phase时,UVM会收集此phase提出的所有objection,并且实时监测所有objection是否已经被撤销了,

当发现所有已经撤销后,那么就会关闭此phase,开始进入下一个phase。

一个phase对应一个drain_time,并不是所有的phase共享一个drain_time。在没有设置的情况下,drain_time的默认值为0

6、phase、objection的调试

  1、simv参数UVM命令行参数UVM_PHASE_TRACE

  2、simv参数UVM命令行参数UVM_OBJECTION_TRACE

 

posted on 2016-08-14 15:00  hematologist  阅读(1437)  评论(0编辑  收藏  举报

导航