篇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_component的get_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里面本身也会重载这个函数;