UVM层次结构相关函数

UVM层次结构相关函数

UVM提供了一系列的接口函数用于访问UVM树中的结点。这其中最主要的是以下几个:

get_parent函数,用于得到当前实例的parent,其函数原型为:

extern virtual function uvm_component get_parent ();

与get_parent相对的就是get_child函数:

extern function uvm_component get_child (string name);

与get_parent不同的是,get_child需要一个string类型的参数name,表示此child实例在实例化时指定的名字。因为一个component只有一个parent,所以get_parent不需要指定参数;而可能有多个child,所以必须指定name参数。

为了得到所有的child,可以使用get_children函数:

extern function void get_children(ref uvm_component children[$]);

它的使用方式为:

uvm_component array[$];
my_comp.get_children(array);
foreach(array[i])
  do_something(array[i]);

除了一次性得到所有的child外,还可以使用get_first_childget_next_child的组合依次得到所有的child:

string name;
uvm_component child;
if (comp.get_first_child(name))
  do begin
    child = comp.get_child(name);
    child.print();
  end while (comp.get_next_child(name));

这两个函数的使用依赖于一个string类型的name。在这两个函数的原型中,name是作为ref类型传递的:

extern function int get_first_child (ref string name);
extern function int get_next_child (ref string name);

name只是用于get_first_child和get_next_child之间及不同次调用get_next_child时互相之间传递信息。读者无需为name赋任何初始值,也没有必要在使用这两个函数过程中对其做任何赋值操作。

get_num_children函数用于返回当前component所拥有的child的数量:

extern function int get_num_children ();

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!