题目讲的只是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。使用如下:
上面的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,不能名字相同,下面是错的: