Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVM : ovm_report_objectクラス

Verification Engineerの戯言

ovm_report_objectクラスは、ovm_objectクラスにReport機能を付けるためのものです。
base/ovm_report_object.svh
    virtual class ovm_report_object extends ovm_object;
        function new(string name="");

        function void ovm_report_error(  string id, string message,
                                         int verbosity_level=100,
                                         string filename="", int line=0);
        function void ovm_report_fatal(  string id, string message,
                                         int verbosity_level=0,
                                         string filename="", int line=0);
        function void ovm_report_info(   string id, string message,
                                         int verbosity_level=300,
                                         string filename="", int line=0);
        function void ovm_report_warning(string id, string message,
                                         int verbosity_level=200,
                                         string filenamee="", int line=0);

        virtual function bit report_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);
        virtual function bit report_info_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);
 
        function string get_report_name();
        virtual function void report_header(FILE f=0);
        function void report_summarize(FILE f=0);

        function void reset_report_handler();
        function ovm_report_handler get_report_handler();
        function void set_report_handler(ovm_report_handler hndlr);
        function void set_report_max_quit_count(int m);
        function void set_report_name(string s);
        function void set_report_severity_action (
                          ovm_severity s, ovm_action a);
        function void set_report_verbosity_level(int verbosity_level);
        function void set_report_id_action (string id, ovm_action a);
        function void set_report_severity_id_action (
                          ovm_severity s, string id, ovm_action a);
        function void set_report_default_file (input FILE f);
        function void set_report_severity_file (ovm_severity s, FILE f);
        function void set_report_id_file (input string id, input FILE f);
        function void set_report_severity_id_file (ovm_severity s, 
                                                   string id, FILE f);
        function void dump_report_state();
        virtual function void die();
    end class
グローバルなReport関数であるovm_report_message関数と同じ名前の関数はないので、
基本的には、ovm_report_message関数ではなく、ovm_report_info関数を使うべき。
また、グローバルな関数と区別するために、this.ovm_report_xxxのようき記述したほうが良いかも?
リファレンス・マニュアルには無いが、コードにはAVMとの互換性のために、次の4つの関数がある。
        function void avm_report_message(string id, string message,
                                         int verbosity_level=300,
                                         string filename="", int line=0);
        function void avm_report_warning(string id, string message,
                                         int verbosity_level=200,
                                         string filenamee="", int line=0);
        function void avm_report_error(  string id, string message,
                                         int verbosity_level=100,
                                         string filename="", int line=0);
        function void avm_report_fatal(  string id, string message,
                                         int verbosity_level=0,
                                         string filename="", int line=0);

P.S

昨日(1/16)に7,000訪問者を達成できました。ありがとうございました。
たぶん、今月いっぱい、OVM関連が続くと思います。

検証、Verification、SystemVerilog、OVM、Open Verification Methodology