1.UVM 真正的树根是uvm_top(为什么get_full_name()不打印这个呢?),如下:

UVM:3.2.2 UVM 树的根_子节点

1)uvm_top 是全局变量,也是uvm_root的实例,也是唯一的实例。

2)uvm_root 派生自uvm_component,所以uvm_top 本质上也是uvm_component,它是树的根。

3)uvm_test_top的parent 是uvm_top,而uvm_top 的parent是null,如下:

UVM:3.2.2 UVM 树的根_子节点_02

UVM:3.2.2 UVM 树的根_子节点_03

UVM:3.2.2 UVM 树的根_全局变量_04


uvm_top只用了get,并没有指定parent,所以parent 为 null。


2.为什么不以uvm_test 例化出来的uvm_test_top 为树根呢?

前面的所有components 例化时都是吧this 传递给parent 参数,比如:

UVM:3.2.2 UVM 树的根_全局变量_05

把this 换成 null 会如何呢?

UVM:3.2.2 UVM 树的根_子节点_06

1)如果设置为null,那么这个component 的parent会被自动设置为唯一的uvm_root 实例uvm_top。my_case就是这样的:

UVM:3.2.2 UVM 树的根_子节点_07

2)可见uvm_root 可以保证验证平台只有一棵树,所有节点都是uvm_top 的子节点。

3)uvm_top 是一个全局变量,可以直接使用uvm_top。还可以用如下方式得到它的指针:

UVM:3.2.2 UVM 树的根_全局变量_08

4)但下面这么设置为什么没效果呢?

UVM:3.2.2 UVM 树的根_子节点_09


这样也不行:为什么啊????

UVM:3.2.2 UVM 树的根_全局变量_10