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

输出结果




















