2

在浏览了一下 UVM 源代码后,我注意到每个阶段都存在单例。对于运行阶段,这可以通过调用来访问uvm_run_phase::get()

我尝试uvm_run_phase::get()从 run_phase 和 end_of_elaboration 阶段调用,并且正如预期的那样,两个调用都返回了同一个对象的句柄。我有点困惑,因为此方法返回的对象与传递给run_phase(...)任务的对象不同,因为它是阶段参数。

我在 EDA Playground 上创建了一个示例:http ://www.edaplayground.com/x/2PL

有谁知道传递给阶段方法的阶段参数是什么以及为什么它不是单例?

4

1 回答 1

0

在 UVM 论坛上提出问题后,我发现uvm_phase每个阶段都有多个实例被创建,一个用于调度,另一个用作实际实现。

调用uvm_run_phase::get()将返回运行阶段的实现节点,而过去的参数run_phase(...)是调度节点。要从任何其他阶段获取调度节点,可以使用phase.find_by_name("run",0).

这是 UVM 论坛中原始线程的链接:http ://forums.accellera.org/topic/1769-uvm-phase-singletons/

于 2014-04-23T08:41:15.897 回答