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消息,处理机制是打印并调用回调函数。
输出结果