uvm_phase常规的使用,一般不会遇到什么问题。特殊场景需要一些phase jump操作或者用户自定义phase,可以尝试使用该仿真选项打印phase调度的相关log。 除了使用这个仿真选项,还需要设置log等级为+UVM_VERBOSITY=UVM_DEBUG。 这里展示一个仿真log部分内容供大家学习。 UVM_INFO /home/maomao/uvm-1.1d/src/base/uvm_phase....
12-run_time_phase是一波,包了一个壳uvm_phase_type=UVM_PHASE_SCHEDULE 将run_phase和12-run_time_phase并行 add函数堆积成了一个UVM phase的框架,跟UVM tree一个道理,这里用两个数组m_predecessors[]以及m_successors[]来表示phase之间的位置关系。 如果add的uvm_phase_type == UVM_PHASE_IMP的话,会新实例...
uvm_build_phase, uvm_final_phase继承于uvm_topdown_phase, 其余function phase继承于uvm_downtop_phase, task phase继承于uvm_task_phase。 对于build_phase, 函数exectue_phase会调用m_imp.traverse(top,this,UVM_PHASE_EXECUTING), traverse()函数在uvm_topdown_phase中定义,build_phase从top to down的执行顺...
比如我们在Questasim工具的vsim命令后加上+UVM_PHASE_TRACE。那么log里将增加以下类似信息。 # UVM_INFO .../uvm-1.2/src/base/uvm_phase.svh(1620) @0.000ns: reporter [PH/TRC/DONE] Phase'common.connect'(id=37) Completed phase # UVM_INFO .../uvm-1.2/src/base/uvm_phase.svh(1655) @0.000ns:...
说到UVM phase我们就知道是UVM一个很重要的特性,从用户角度来讲,其实就是一些很简单的应用规则,能够极大地提升编码的效率,简化代码复杂度,提高debug的效率。至于应用可以参看zhangqiang大佬的第五章,这里就不再赘述。 本文就从源码的角度来看,UVM的phase是怎么工作的?
所用的测试用例都扩展自自定义的base_test,后者又来自uvm_test。base_test例化整个UVM environment,用例中主要要做的事情就是启动sequence, 包括调用start任务手动启动和自动启动方式,具体见参考文献3.这里是最常见的自动启动方式:用uvm_config_db将要启动的sequence设置为sequencer main_phase的default_sequence. ...
2.1. UVM phase机制 phase机制可以将 UVM仿真阶段层次化,即使各个phase按先后顺序执行,同时也使处于同一phase中的层次化组件之间按顺序执行,达到同步仿真过程的效果。 phase机制主要包括以下三个主要部分,并按如下顺序进行: Build Phases—— 验证平台的创建、连接、配置;包含3个子phase; ...
build_phase(uvm_phase phase);13 super.build_phase(phase);14 if(!uvm_config_db#(virtual my_if)::get(this, "", "vif", vif))15 `uvm_fatal("my_driver", "virtual interface must be set for vif!!!")16 endfunction17 18 extern task main_phase(uvm_phase phase);19 extern task drive_...
UVM验证方法学_phase机制 phase机制是uvm最重要的几个机制之一,它使得uvm的运行仿真层次化,使得各种例化先后次序正确,保证了验证环境与DUT的正确交互。 一、phase机制概述uvm中的phase按照是否消耗仿真时间分为… 阅读全文 赞同 5 1 条评论 ...
除了命令行plusargs,第二种方法是:在tb里面调用下面这些函数动态修改啰嗦容忍等级。随着uvm phase的推进,执行到这些配置语句时,就开始过滤和屏蔽uvm_info打印的信息。相比plusargs在0时刻之前配置,更加灵活。 例如: env0.agent1.set_report_verbosity_level(UVM_LOW), 把系统对env0.agent1里面所有调试信息的啰嗦容忍...