[CU]config_db机制4-config_db机制的调试
1.check_config_usage
(1) 作用:可以显示出截止到此函数调用时,有哪些参数是被设置过但是却没有被获取过;
(2) 使用: 由于config_db的set及get语句一般都用于build_phase阶段,所以此函数一般在connect_phase被调用,也可以在connect_phase之后的其他phase调用;
注: default_sequence是设置给main_phase的,它在main_phase中被获取,如果在connect_phase调用check_config_usage,会显示default_sequence被设置过一次,但是一次也没有读取.
1 virtual function void connect_phase(uvm_phase phase); 2 super.connect_phase(phase); 3 check_config_usage(); 4 endfunction
2. print_config
(1) 它会遍历整个验证平台的所有结点,找出哪些被设置过的信息对于它们是可见的;
3. +UVM_CONFIG_DB_TRACE
注1:如果环境中有使用uvm_resource_db::set或get,需要使用+UVM_RESOURCE_DB_TRACE;
4. check_all_config
(1) config_db机制的最大问题在于不对set函数的第二个参数进行检查;
(2) check_all_config函数会调用check_config的静态函数check_all; check_all函数将会遍历config_db库中所有的记录; 对于任一条记录,检查其路径参数是否可达;
(3) 由于要遍历整棵UVM树的结点,所以check_all_config函数只能在build_phase之后才能被调用,如connect_phase等;
(4) 这个函数可以在很多地方调用,如在sequence中使用config_db::set函数后,就可以立即调用这个函数检查有效性;
【推荐】国内首个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吗?