题目讲的只是uvm_component  这个单独 class,不包括它的extends。


1.uvm_component 从 uvm_object 派生来的。理论来说,uvm_component  应该具有uvm_object 的所有行为特性。但是 uvm_component  作为UVM 的树节点,使它失去了uvm_object 的某些特性。

2.uvm_object 有clone 函数,用于分配一块内存空间,并把另一个实例复制到新的内存空间,即 clone = new + copy。使用如下: 

UVM:3.1.6 uvm_component 的限制_父节点

上面的clone无法用在uvm_component ,因为使用后,新 clone出来的class,其parent 无法指定。


3. copy 也是uvm_object 的函数,使用copy 前,目标句柄必须已经用 new(parent此刻指定,ok)分配好了内存空间。clone时,目标实例可以只是一个空指针,因为clone会分配内存。

4.虽然uvm_component  无法使用clone 函数,但可以使用copy函数。因为调用copy 之前,目标实例已例化,parent 已定。


5. 另一个限制是:位于同一父节点下的不同components,不能名字相同,下面是错的:

UVM:3.1.6 uvm_component 的限制_内存空间_02