Vengineerの妄想(準備期間)

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

OVM : ovm_componentクラス

Verification Engineerの戯言

ovm_componentクラスは、基本的な階層クラスで、次のような特徴を持っています。
    Hierarchy
    Configuration
    Phase
    Factory
    Reporting
    Transaction recording
base/ovm_component.svh
ここでは、Hierarchy、Configuration、Phase関連の主な関数のみを。
    virtual class ovm_component extends ovm_report_object;
        function new (string name, ovm_component parent);

        //Hierarchy information and setting
        static function ovm_component find_component (string comp_match);
        static function void find_components (string comp_match,
                                              ref ovm_component comps[$]);
        function ovm_component absolute_lookup(string name );
        function ovm_component relative_lookup(string name );
        static function ovm_component get_component (int ele);
        static function int get_num_components ();
        virtual function ovm_component get_parent ();
        function int get_num_children ();
        function ovm_component get_child (int index);

        //Configuration interface
        virtual function void set_config_int (   string inst_name,
                                                 string field_name,
                                                 ovm_bitstream_t value);
        virtual function void set_config_object (string inst_name,
                                                 string field_name,
                                                 ovm_object value, 
                                                 bit clone=1);
        virtual function void set_config_string (string inst_name,
                                                 string field_name,
                                                 string value);
        virtual function bit get_config_int (    string field_name,
                                                 inout ovm_bitstream_t value);
        virtual function bit get_config_object ( string field_name,
                                                 inout ovm_object value);
        virtual function bit get_config_string ( string field_name,
                                                 inout string value);
        virtual function void apply_config_settings ( bit verbose=0);
        function void print_config_settings (    string field="",
                                                 ovm_component comp=null,
                                                 bit recurse=0);

        //Phasing interface
        virtual function void post_new ();
        virtual function void extract ();
        virtual function void check ();
        virtual function void report ();
        virtual function void build ();
    endclass

Hierarchy関連では、階層構造内のコンポーネントを見つけるための関数が用意されています。
Configuration関連では、set_config_xxx/get_config_xxx関数が用意されています。
Phase関連では、post_new, extract, check, report関数の他に、build関数がありますが、
このbuild関数は直接呼ばれることなく、post_new関数内で呼ばれます。

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