[AVM]Report HOOK
在report的动作中有一类比较特殊: HOOK
如果在相应的消息处理动作中设置了HOOK,
那么当有相应消息过来时, 将首先调用相应的HOOK函数
virtual function bit report_hook(
string id,
string message,
int verbosity,
string filename,
int line);
virtual function bit report_message_hook(
string id,
string message,
int verbosity,
string filename,
int line);
virtual function bit report_warning_hook(
string id,
string message,
int verbosity,
string filename,
int line);
virtual function bit report_error_hook(
string id,
string message,
int verbosity,
string filename,
int line);
virtual function bit report_fatal_hook(
string id,
string message,
int verbosity,
string filename,
int line);
上面的函数都将返回一个bit类型的值, 如果返回1时, 相应的消息处理进程会被调用, 否则这个进程被终止,
比如你不想看到验证平台前25us的消息, 可以使用:
function bit report_hook(
input string id,
input string mess,
input verbosity,
string filename,
int line);
return ($time > 250000);
endfunction
为了使用HOOK, 一般可以在configure()中来设置:
class component extends avm_named_component;
FILE f;
function void configure();
f = $fopen("logfile", "w");
set_report_default_file(f);
set_report_severity_action(MESSAGE, LOG | HOOK);
set_report_severity_action(WARNING, LOG | HOOK);
set_report_severity_action(ERROR, LOG | HOOK);
set_report_severity_action(FATAL, LOG | EXIT | HOOK);
endfunction
endclass