通过控制component打印信息的行为,提高日志的可读性。
uvm_component 直接继承自uvm_report_object,所以component继承了一些设置report的函数。
打印信息的宏有:
`uvm_info(id,mess,verbosity).
`uvm_warning(id,mess)
`uvm_error(id,mess)
`uvm_fatal(id,mess)
1
|
UVM_INFO my_env.sv(17) @ 0: uvm_test_top.env [my_env] my_env is created !!
|
1 2 3 4 5 6
|
function void set_report_severity_file (uvm_severity severity,UVM_FILE file) function void set_report_id_file ( string id,UVM_FILE file ) function void set_report_severity_id_file (uvm_severity severity,string id,UVM_FILE file) function void set_report_severity_file_hier (uvm_severity severity,UVM_FILE file) function void set_report_id_file_hier ( string id,UVM_FILE file ) function void set_report_severity_id_file_hier (uvm_severity severity,string id,UVM_FILE file)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
UVM_FILE info_log; UVM_FILE warning_log; UVM_FILE error_log; UVM_FILE fatal_log; virtual function void connect_phase(uvm_phase phase); info_log = $fopen("info.log", "w"); warning_log = $fopen("warning.log", "w"); error_log = $fopen("error.log", "w"); fatal_log = $fopen("fatal.log", "w"); env.i_agt.drv.set_report_severity_file(UVM_INFO, info_log); env.i_agt.drv.set_report_severity_file(UVM_WARNING, warning_log); env.i_agt.drv.set_report_severity_file(UVM_ERROR, error_log); env.i_agt.drv.set_report_severity_file(UVM_FATAL, fatal_log); env.i_agt.drv.set_report_severity_action(UVM_INFO, UVM_DISPLAY | UVM_LOG); env.i_agt.drv.set_report_severity_action(UVM_WARNING, UVM_DISPLAY | UVM_LOG); env.i_agt.drv.set_report_severity_action(UVM_ERROR, UVM_DISPLAY | UVM_COUNT | UVM_LOG); env.i_agt.drv.set_report_severity_action(UVM_FATAL, UVM_DISPLAY | UVM_EXIT | UVM_LOG); endfunction virtual function void final_phase(uvm_phase phase); $fclose(info_log); $fclose(warning_log); $fclose(error_log); $fclose(fatal_log); endfunction
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
UVM_FILE driver_log; UVM_FILE drv_log; virtual function void connect_phase(uvm_phase phase); driver_log = $fopen("driver.log", "w"); drv_log = $fopen("drv.log", "w"); env.i_agt.drv.set_report_severity_id_file(UVM_WARNING, "my_driver", driver_log); env.i_agt.drv.set_report_severity_id_file(UVM_INFO, "my_drv", drv_log); env.i_agt.drv.set_report_id_action("my_driver", UVM_DISPLAY| UVM_LOG); env.i_agt.drv.set_report_id_action("my_drv", UVM_DISPLAY| UVM_LOG); endfunction virtual function void final_phase(uvm_phase phase); $fclose(driver_log); $fclose(drv_log); endfunction
|