目录
1、简明解析
get_type_name(),get_name(),get_full_name()
首先需要明确的是,在工厂注册机制下,get_type_name(),get_name()在component组件类和object基类中的返回值是一样的,而get_full_name()在不同类型的类中,会有不同的返回值。
- get_type_name():返回对象的class名;
- get_name():返回创建对象时,传入的字符串;
- get_full_name():在component类会返回当前component组件的完整路径,在object类的返回值与get_name()一样,因为object类不是作为UVM树节点的,所以路径没有别的层次。
2、举个栗子
比如在UVM验证平台中,我们在这样的一个 uvm_component class中调用这几个函数,代码如下:
class my_comp1 extends uvm_component;
…
$display(“%0s”,get_name());
$display(“%0s”,get_full_name());
$display(“%0s”,get_type_name());
…
endclass
将上述class在env中进行例化:
class my_env extends uvm_env;
…
my_comp1 my_comp1_inst;
…
function void build_phase (uvm_phase phase);
my_comp1_inst = my_comp1::type_id::create(“this_is_my_comp1_inst”,this);
endfunction
…
endclass
my_env例化在my_test中名为my_env_inst:
class my_test extends uvm_test;
…
my_env my_env_inst;
…
endclass
如上代码中my_comp1中调用的函数
- get_name() 会打印出:“this_is_my_comp1_inst”。
就是创建对象时,my_comp1_inst = my_comp1::type_id::create(“this_is_my_comp1_inst”, this);传进去的字符串!使用my_comp1_inst = new(“this_is_my_comp1_inst”)方式写进去的字符串也是一样的效果。
- get_full_name()会打印出:“uvm_test_top.my_env_inst.this_is_my_comp1_inst”。
打印出的是路径名字,这里要注意路径的开头是:“uvm_test_top”。打印的路径不是从UVM树根开始的,而是是树根的下一级uvm_test_top。(树根路径对应“__top__”)
- get_type_name()会打印出:“my_comp1”。
对于uvm_component,这个get_type_name(),就是class的名字。