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_child
和get_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 ();
酷客网相关文章:
评论前必须登录!
注册