1.config机制
(1)概述
SV只能例化后通过句柄访问,配置前必例化。

(2)uvm_config_db
-  uvm_congfig_db就是关联数组,path和value组成。 
-  传递配置对象(config object)就是传递句柄。 
-  T:传递数据的类型。 
-  set/get参数:实例句柄;名称;对应的变量名;值。 

(3)interface传递概述
SV中通过set_interface完成接口的传递。

(4)interface传递示例
-  在test1中,要在run_test()之前传递接口,uvm_congfig_db::set()。在build_phase里uvm_congfig_db::get()。 
-  需要注意的是set/get的参数,(this, "" , "vif", vif)/(uvm_root::get(), "uvm_test_top.c1", "vif", intf)。 


(5)变量设置


(6)object传递-概述

(7)object传递-示例
-  uvm_config_db::set()的是子类的对象。uvm_config_db::get()的是父类的对象tmp。这时需要做个类型转换将tmp父类转为cfg子类。这样才能访问子类的成员变量并打印。 
-  如果将uvm_config_db#(uvm_object)中的uvm_object改为config1,这时就不需要$cast了。 


输出结果

(8)总结

(9)建议

2.消息管理
(1)概述


(2)消息方法
-  冗余度:这个消息到底重要不重要 
-  filename/line不需要工程师care,系统会自动配置上。 

(3)消息处理

(4)消息管理-消息宏
-  推荐用消息宏, 不用方法。 

(5)消息管理-消息机制

(6)消息管理-回调函数1

(7)消息管理-回调函数2

(8)消息管理-回调函数3

(9)示例-回调函数
-  uvm_report_info("RUN","info1",UVM_MEDIUM)中RUN是id,UVM_MEDIUM是冗余度。 
-  set_report_verbosity_level(UVM_LOW):只打印UVM_LOW消息。 
-  set_report_severity_action(UVM_ERROR, UVM_DISPLAY | UVM_CALL_HOOK):对于UVM_ERROR消息,处理机制是打印并调用回调函数。 

输出结果




















