篇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里面本身也会重载这个函数;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?