接上面,phase.execute_phase()的具体实现会根据不同的uvm_phase_type和uvm_phase_state走不同的分支。 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,th...
virtual function void start_of_simulation_phase(uvm_phase phase); super.start_of_simulation_phase(phase);`uvm_info(tID,"start_of_simulation_phase is executed",UVM_LOW)endfunction virtual taskrun_phase(uvm_phase phase);`uvm_info(tID, "run_phase is executed", UVM_LOW) endtask virtual task ...
UVM_PHASE_DOMAIN:Phase域的概念比较抽象,它用来表示整个由节点(node)构成的有向无环图(graph)。如果有一组环境组件属于某个Phase域,那么这些组件中定义的各个phase函数/任务的执行就会遵循其所属Phase域的图。 UVM_PHASE_SCHEDULE:Schedule对象包含了一组节点,以及这些节点的连接关系,所以它也可以看成是Phase域的子集。
UVM的uvm_component及其派生类变量的实例化在build_phase中做实 例化工作,如果是uvm_object的实例化,可以是任何的phase。 除了build_phase之外,所有不耗费仿真时间的phase(即function phase)都是自下而上执行的。connect phase执行顺序是自下而上的,如对于connect_phase即先执行driver和monitor的connect_phase,再执行age...
forever fork join_none以及mailbox共同作用,通过phase.execute_phase来实现了phase的运行 2.1 execute_phase() execute_phase()的调用者的phase类型包括三类 UVM_PHASE_DOMAIN UVM_PHASE_SCHEDULE UVM_PHASE_IMP 从代码功能角度来看可以分为两类: UVM_PHASE_DOMAIN/UVM_PHASE_SCHEDULE ...
一、什么是phase? phase翻译成中文就是相、阶段的意思。 在UVM中,官方的说法是:phase是使tb中各种各样的component按照各自的需求可以阶段性执行的一种自动化的机制。 简单的说就是使验证组件能够按需自动化执行的一种机制。 二、OVM有phase的概念吗?
<1>function phase:不消耗仿真时间,而其也可分成两大类: a. 继承自uvm_bottomup_phase, 在UVM component树中,自下而上的执行, 如connect_phase b. 继承自uvm_topdown_phase, 在UVM component树中,自上而下执行, 如build_phase<2>task phase:消耗仿真时间的,也称动态运行(run-time)phase. ...
1)jump 的参数必须是一个uvm_phase 类型的变量。有如下:(有些不能给jump 用) 2)不是所有phase都是jump参数。比如 uvm_build_phase::get()就会报错: 3)换成uvm_run_phase::get(),也会报错。因为run_phase 是和12小的并行的。 4)uvm_pre_reset_phase 之后的所有phase 都可以。
主要的UVM phases: 表1:三个phase主要分类与目的 UVM phase的逻辑和日常搭房子的逻辑类似,首先要做的是创建testbench组件对象,以便它们可以连接在一起,这也是需要有build_phase的原因。在其他testbench还在搭建其子组件时,最好不要开始连接组件,避免出现所连接的一端组件没有被创建,而导致testbench build error。所...
uvm_phase是phase机制的基础,包含phase相关的状态、执行、调度、同步、跳转等函数和变量的定义。 uvm的默认phase全部继承自uvm_topdown_phase/uvm_bottomup_phase/uvm_task_phase。uvm_topdown_phase/uvm_bottomup_phase阶段执行的是function,区别是一个自顶向下,一个是自底向上。uvm_task_phase阶段执行的是task,所...