1.phase机制
(1)SV中new()无法解决例化的先后关系以及例化后的连接,同时SV也无法再例化前对底层进行配置逻辑。这就引入了phase。

(2)执行机制
9个主要的phase机制,其中只有一个是task。

(3)示例
-
定义9个phase都传入“uvm_phase phase”这个参数,同时调用系统函数‘uvm_info()。
-
在topcomp中重新自定义了build—phase,并利用type_id来创建对象。

(4)示例的运行结果,可以看出三点:
-
9个phase依次执行完毕。
-
顺序:自顶向下或自底向上。
-
从build开始,以final结束。

(5)总结

2.run_phase与12个分支phase
(1)概述

(2)12个分支phase

(3)执行顺序
12个分支是依次执行,与run_phase之间是并行执行关系。


3.UVM编译和运行顺序
(1)示意图

(2)运行顺序

4.uvm仿真开始
(1)概述
run_test方法继承与uvm_test,处于顶层中的方法。利用run_test()来建立验证环境。

(2)uvm世界的“诞生”

(3)uvm_top层
uvm_top是任何例化实例的顶层;uvm_top控制phase;提供索引功能索引到实例;报告配置;全局报告设备。

(4)run_test()
ojection机制:控制仿真退出。

5.uvm仿真结束
(1)概述

(2)挂起与放下方法

(3)示例
this:当前组件在当前run_phase中挂起或放下objection。


(4)至少一个组件在run_phase()中都可以挂起objection。否则可能会直接退出run_phase,导致run_phase中的多个组件不能执行。

(5)挂起晚了的示例
phase.raise_objection前不能有延时。后面三句话来不及执行。

(6)总结

