2014-02-28 125 views
2

通过UVM源代码浏览了一下后,我发现每个阶段都存在单例。运行阶段可以通过拨打uvm_run_phase::get()进行访问。UVM阶段singletons

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

我已经创建了EDA游乐场的例子:http://www.edaplayground.com/x/2PL

有谁知道到底是什么阶段参数获得通过逐步的方法是,为什么它不是单身?

回答

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/