篇5-uvm_component/uvm_sequence_item常用函数解读

资料来源:

(1)公众号-杰瑞IC验证;

(2) uvm_class_references手册;

1.uvm_component相关函数

1.1.uvm_component中get_name()系列函数

(1) get_name()会打印出”u_jerry_so_cool”(实例名);

(2) get_full_name()会打印出”uvm_test_top.u_jerry_env.u_jerry_so_cool”(路径名字);

(3) get_type_name()会打印出”jerry_component”(类名);

 1 //示例1-get_name()的使用
 2 function void wb_conmax_env::build_phase(uvm_phasep phase);
 3     super.build_phase(phase);
 4     ...
 5     for(integer i=0; i<8; i++) begin
 6         master_agent[i]=wb_master_agent::type_id::create($sformatf("master_agent[%02d]",i),this);
 7         uvm_config_db #(uvm_object_wrapper)::set(this,{master_agent[i].get_name(),".","seqr.run_phase"},"default_sequence",sequence_0::get_type());
 8     end
 9     ...
10 endfunction

1.2. uvm_componentget_parent函数

(1) 因为一个uvm_component只有一个parent,所以该函数不需要输入参数;

1.3. uvm_component的get_child函数

(1) 与get_parent不同,由于一个uvm_component可能有多个child,所以get_child函数需要有一个string类型的参数name,表示此child实例在实例化时指定的名字;

1.4. uvm_component的get_children函数

2.uvm_sequence_item相关函数

2.1. uvm_sequence_item中get_name系列函数

(1) get_name()会打印出”jerry_is_good”; uvm_sequence_item中的get_name函数与uvm_component一样,打印”new()”时候传入的字符串;

(2) get_full_name()会打印出”jerry_is_good”; 对于uvm_sequence_item, get_full_name()与get_name()一样! 因为它是不作为UVM树节点的,所以路径没有别的层次; 这点保留了uvm_object原本的函数性质;

(3) get_type_name()会打印出”jerry_tr”;

注1:原始的uvm_object的get_type_name()传出的是<unknown>,也就是无返回值的; 但是`uvm_object_utils_begin(jerry_tr) ... `uvm_object_utils_end会把uvm_object的get_type_name()函数重载, 然后返回class名字;

注2:如果把`uvm_object_utils_begin...这几句话拿掉, get_type_name会打印出uvm_sequence_item, 因为uvm_sequence_item里面本身也会重载这个函数;

 

posted on 2021-11-16 17:24  知北游。。  阅读(569)  评论(0编辑  收藏  举报

导航