[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函数后,就可以立即调用这个函数检查有效性;