UVM中的PHASE类别及PHASE同步

news/2024/11/29 3:48:23/

        UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类:一类是function phase,这些phase是通过函数实现;另外一类是task phase,这些phase是通过任务实现的。图1中,灰色背景所示的是task phase,其他白色背景为function phase。

图1 UVM中的phase

        在空间上,除了build_phase之外,所有不耗费仿真时间的phase(即function phase)都是自下而上执行的。类似run_phase、main_phase等task_phase也都是按照自下而上的顺序执行。但是与function phase自下而上执行不同的是,task phase是耗费时间的,所以它并不是等到“下面”的phase(如driver的run_phase)执行完才执行“上面”的phase(如agent的run_phase),而是将这些run_phase通过fork…join_none的形式全部启动。所以更准确的说法是自下而上的启动,同时在运行。

       在时间上,所有的phase都会按照图1中的顺序自上而下自动执行。对于同一component来说,其12个run-time的phase(动态运行phase)是顺序执行的,但是它们也仅仅是顺序执行,并不是说前面一个phase执行完就立即执行后一个phase。以A component和B component中的main_phase和post_main_phase为例,如图2所示。

图2 phase的同步

        从图中可以看到对于A来说,main_phase在100时刻结束,其post_main_phase在200时刻执行。在100~200时刻,A处于等待B的状态,除了等待不做任何事情。B的post_main_phase在400时刻结束,之后处于等待A的状态。无论从A还是从B的角度看,都存在一段 等待时间。但是从整个验证平台的角度来看,各个task phase之间是没有任何空白的。整个验证平台必须所有的main_phase执行完毕,接下来执行post_main_phase;所有的post_main_phase执行完毕,接下来执行下一个phase,如pre_shutdown_phase。

       上述的这种phase同步不仅适用于不同component的动态运行(run-time)phase之间,还适用于run_phase与run_phase之间。这两种同步都是不同component之间的相同phase之间的同步。除了这两种同步外,还存在一种run_phase与post_shutdown_phase之间的同步。这种同步的特殊之处在于,它是同一个component的不同类型phase(两类task phase,即run_phase与run-time phase)之间的同步,即同一个component的run_phase与其post_shutdown_phase全部完成才会进入下一个phase(extract_phase)。phase同步主要可以总结为图3的三种方式。

图3 task phase同步

 


http://www.ppmy.cn/news/380609.html

相关文章

In phase and out of phase(同相和异相)

In phase and out of phase in phaseout of phase今天看文章的时候遇到了一个说法,关于同相与异相。关于这个的定义各式各样,不同学科之间可能也存在差异,这里仅记录一下光学上的定义。 in phase 如上图所示,我们有两列正弦波,当它们在传输过程中,在同一位置处它们都到达…

Phase机制讲解(IC验证面试)

UVM中的phase按照其是否消耗仿真时间($time打印出的时间)可以分为两大类,一类是function phase(不耗费仿真时间),另一类是task phase(耗费仿真时间)。task phase也可以叫做run_ phas…

UVM-phase机制

文章目录 1.UVM Phase2.phase的执行3.仿真开始4.仿真结束4.1 objection机制 1.UVM Phase uvm利用phase机制实现了各个组件之间的同步。因为每个组件都包括一些预定义的同名phase,在没有执行完所有组件的当前phase之前绝对不会去执行所有组件的下一个phase。 phase机…

UVM Phase机制

文章目录 一、UVM Phases二、如何开始UVM仿真三、如何结束UVM仿真UVM利用objection机制来结束仿真 一、UVM Phases 所有testbench的组件都是继承uvm_component来的,每一个组件都包括一些预定义的同名phase,在没有执行完所有组件的当前phase之前绝对不…

UVM phase机制源码探微

文章目录 1. uvm_phase2. uvm_phase的运行和调度2.1. get_common_domain()2.1.1. phase_type & phase_state2.1.2. uvm_phase class2.1.2.1. new()2.1.2.1. uvm_common_phases 2.1.3. uvm_domain class2.1.4. get_uvm_domain() 2.2. add()2.3. execute_phase() 3. objectio…

BombLab Phase-3 Phase-4 Phase-5

导航 BombLab Phase-1 & Phase-2 BombLab phase-6 & secret_phase Phase_3 关于风格改变:因为一段段分析代码可以逻辑清晰有序一点,那么就摒弃了以前先上汇编代码再画栈帧图的方式,我们直接给出函数调用的所有栈帧,这样…

UVM Phase

UVM Phases 所有testbench的组件都是继承uvm_component来的,每一个组件都包括一些预定义的同名phase,在没有执行完所有组件的当前phase之前绝对不会去执行所有组件的下一个phase ,这就保证了所有组件之间是同步的!UVM就是利用pha…

第八段:Phase的使用

1)基础用法: 常用的是四种phase build_phase中定义初始化相关的代码。 Connect_phase中定义componet的连接代码。 Run_phase中定义主程序。 Report_phase中定义打印相关的代码。 2)项目升级用法:与上一致。 3)底层原理…