跳转至

输入查询内容

    本页内容

    uvm_report_warning/uvm_report_error 默认 verbosity 改为 UVM_NONE

    影响范围

    调用 warning/error 时省略 verbosity,或依赖旧默认等级过滤。 包括从 uvm_sequence_item 继承的 sequence/item 报告方法。

    具体差异

    旧默认 warning=UVM_MEDIUM、error=UVM_LOW;新默认一律 UVM_NONE。对宏用户无感(宏始终显式传值),但直接调用函数且省略 verbosity 实参的代码在显式 verbosity 配置上行为不同。 uvm_sequence_item 的对应报告方法也改为 warning/error 默认 UVM_NONE,uvm_report 的非 INFO 默认等级同步变化;通过 sequence/item 直调报告时适用同一改法。非 INFO 即使显式传高 verbosity 也不再由入口预检过滤,具体机制与 severity override 边界见 M04-003

    修改方案

    核对直调 warning/error 的消息策略。2.0 中显式传高 verbosity 也不会恢复旧过滤,需通过 report action 或经过验证的 catcher 控制输出。

    兼容措施与范围:现有入口无需兼容开关;这不表示两版行为相同,仍按本条条件和验证方法核对。

    迁移后验证

    在多个 verbosity 设置下触发 warning/error,核对实际输出和错误计数;不要将默认值变化当成关闭报错的方法。 分别从 component/global 与 sequence/item 入口发出代表消息,不能只测一种接收者。

    记录本条结果M04-002 · 状态与证据

    已有实测与复现

    补充查阅

    扫描定位与记录结果

    有扫描规则,覆盖部分可识别写法。脚本检查名称、参数和部分 FLAG 表达式,并对少数直接声明关联使用点;未做完整类型解析或预处理,行为结果仍需验证。

    • S30 · 启发式:warning/error/fatal 报告的 verbosity 过滤变化。 覆盖 warning/error/fatal wrapper 和直接 uvm_report,按位置或命名参数核对 severity/verbosity/入口检查开关。排除已知 INFO、普通默认 fatal、显式 UVM_NONE/0;动态 severity 保留提示。负阈值等定制过滤需另查。
    uv run tools/uvm_migration_scan.py <SoC代码目录> --rules S30
    

    核对命中对象及生效分支后,在条目清单记录修改与验证证据;扫描规则记录用于整理命中位置。

    扫描器下载、输入范围与报告说明

    源码与标准依据

    核查方式:源码与实测核对。实测仅覆盖本条所列场景。

    VCS 内置 UVM-1.2uvm_report_object.svh:133uvm_report 默认 ERROR→UVM_LOW)、uvm_report_object.svh:170(warning 默认 UVM_MEDIUM)、uvm_report_object.svh:184(error 默认 UVM_LOW);全局函数版 uvm_globals.svh:231 ;补充:uvm_sequence_item.svh:355uvm_sequence_item.svh:403uvm_sequence_item.svh:389

    VCS 内置 uvm-ieee-2020-2.0uvm_report_object.svh:148(WARNING/ERROR/FATAL→UVM_NONE)、uvm_report_object.svh:188uvm_report_object.svh:203;全局版 uvm_globals.svh:191 ;补充:uvm_sequence_item.svh:378uvm_sequence_item.svh:430uvm_sequence_item.svh:415

    标准依据:IEEE 1800.2-2020 §F.3.2.3(函数原型即新标准默认)

    标为“源码标注”或未注明原文核对的条款仅作定位;具体库行为以源码和实测为准。

    引用代码(高亮为引用行);上方行号链接可直接定位。

    src/vcs-uvm-1.2/base/uvm_report_object.svh
      // Function: uvm_report
    
      virtual function void uvm_report( uvm_severity severity,
                                        string id,
                                        string message,
                                        int verbosity = (severity == uvm_severity'(UVM_ERROR)) ? UVM_LOW :
                                                        (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : UVM_MEDIUM,
                                        string filename = "",
                                        int line = 0,
                                        string context_name = "",
                                        bit report_enabled_checked =0);
        uvm_report_message l_report_message;
        if (report_enabled_checked == 0) begin
          if (!uvm_report_enabled(verbosity, severity, id))
            return;
        end
        l_report_message = uvm_report_message::new_report_message();
        l_report_message.set_report_message(severity, id, message, 
    

    src/vcs-uvm-1.2/base/uvm_report_object.svh
      // Function: uvm_report_warning
    
      virtual function void uvm_report_warning( string id,
                            string message,
                                int verbosity = UVM_MEDIUM,
                            string filename = "",
                            int line = 0,
                                string context_name = "",
                            bit report_enabled_checked = 0);
    
        uvm_report (UVM_WARNING, id, message, verbosity,
                    filename, line, context_name, report_enabled_checked);
      endfunction
    
      // Function: uvm_report_error
    
      virtual function void uvm_report_error( string id,
                          string message,
                          int verbosity = UVM_LOW,
                          string filename = "",
                          int line = 0,
                          string context_name = "",
                          bit report_enabled_checked = 0);
    
        uvm_report (UVM_ERROR, id, message, verbosity,
                    filename, line, context_name, report_enabled_checked);
      endfunction
    
      // Function: uvm_report_fatal
      //
      // These are the primary reporting methods in the UVM. Using these instead
      // of ~$display~ and other ad hoc approaches ensures consistent output and
    

    完整源码 · SHA256:f1747ee064c286b2c0f18d6e71b096890360ed9cb71ce494c1e07d007ec35f6a

    src/vcs-uvm-1.2/base/uvm_globals.svh
    // Function: uvm_report_error
    
    function void uvm_report_error(string id,
                                   string message,
                                   int verbosity = UVM_LOW,
                       string filename = "",
                       int line = 0,
                                   string context_name = "",
                                   bit report_enabled_checked = 0);
      uvm_root top;
      uvm_coreservice_t cs;
      cs = uvm_coreservice_t::get();
      top = cs.get_root();
      top.uvm_report_error(id, message, verbosity, filename, line, context_name,
        report_enabled_checked);
    endfunction
    

    完整源码 · SHA256:1223cc2b6daf5c3b7a134c0abaef0008c08223aa15f61b08c9b7a8142480a564

    src/vcs-uvm-1.2/seq/uvm_sequence_item.svh
      virtual function void uvm_report( uvm_severity severity,
                                        string id,
                                        string message,
                                        int verbosity = (severity == uvm_severity'(UVM_ERROR)) ? UVM_LOW :
                                                        (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : UVM_MEDIUM,
                                        string filename = "",
                                        int line = 0,
                                        string context_name = "",
                                        bit report_enabled_checked = 0);
        uvm_report_message l_report_message;
        if (report_enabled_checked == 0) begin
          if (!uvm_report_enabled(verbosity, severity, id))
            return;
        end
        l_report_message = uvm_report_message::new_report_message();
        l_report_message.set_report_message(severity, id, message, 
                        verbosity, filename, line, context_name);
        uvm_process_report_message(l_report_message);
    

    src/vcs-uvm-1.2/seq/uvm_sequence_item.svh
      // Function: uvm_report_warning
    
      virtual function void uvm_report_warning( string id,
                            string message,
                            int verbosity = UVM_MEDIUM,
                            string filename = "",
                            int line = 0,
                            string context_name = "",
                            bit report_enabled_checked = 0);
    
        this.uvm_report(UVM_WARNING, id, message, verbosity, filename, line,
                        context_name, report_enabled_checked);
      endfunction
    
      // Function: uvm_report_error
    
      virtual function void uvm_report_error( string id,
                          string message,
                          int verbosity = UVM_LOW,
                          string filename = "",
                          int line = 0,
                          string context_name = "",
                          bit report_enabled_checked = 0);
    
        this.uvm_report(UVM_ERROR, id, message, verbosity, filename, line,
                        context_name, report_enabled_checked);
      endfunction
    
      // Function: uvm_report_fatal
      //
      // These are the primary reporting methods in the UVM. uvm_sequence_item
      // derived types delegate these functions to their associated sequencer
    

    完整源码 · SHA256:b8098f40c0a7b7d73fa591241fcf91eab5b2c2c913b907ed5e747763ed6108a0

    src/vcs-uvm-ieee-2020-2.0/base/uvm_report_object.svh
      // Function -- NODOCS -- uvm_report
    
      // @uvm-ieee 1800.2-2020 auto 6.3.3.3
      virtual function void uvm_report( uvm_severity severity,
                                        string id,
                                        string message,
                                        int verbosity = (severity == uvm_severity'(UVM_ERROR)) ? UVM_NONE :
                                                        (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : 
                                                        (severity == uvm_severity'(UVM_WARNING)) ? UVM_NONE : UVM_MEDIUM,
                                        string filename = "",
                                        int line = 0,
                                        string context_name = "",
                                        bit report_enabled_checked =0);
        uvm_report_message l_report_message;
        if ((severity == UVM_INFO) && (report_enabled_checked == 0)) begin
          if (!uvm_report_enabled(verbosity, severity, id))
            return;
        end
        l_report_message = uvm_report_message::new_report_message();
    

    src/vcs-uvm-ieee-2020-2.0/base/uvm_report_object.svh
      // Function -- NODOCS -- uvm_report_warning
    
      // @uvm-ieee 1800.2-2020 auto 6.3.3.3
      virtual function void uvm_report_warning( string id,
                            string message,
                            int verbosity = UVM_NONE,
                            string filename = "",
                            int line = 0,
                                string context_name = "",
                            bit report_enabled_checked = 0);
    
        uvm_report (UVM_WARNING, id, message, verbosity,
                    filename, line, context_name, report_enabled_checked);
      endfunction
    
      // Function -- NODOCS -- uvm_report_error
    
      // @uvm-ieee 1800.2-2020 auto 6.3.3.3
      virtual function void uvm_report_error( string id,
                          string message,
                          int verbosity = UVM_NONE,
                          string filename = "",
                          int line = 0,
                          string context_name = "",
                          bit report_enabled_checked = 0);
    
        uvm_report (UVM_ERROR, id, message, verbosity,
                    filename, line, context_name, report_enabled_checked);
      endfunction
    
      // Function -- NODOCS -- uvm_report_fatal
      //
      // These are the primary reporting methods in the UVM. Using these instead
      // of ~$display~ and other ad hoc approaches ensures consistent output and
    

    完整源码 · SHA256:f0e97820abcfcc86b64800110f8059734479f0c1a259ad04414c9af6708d98fa

    src/vcs-uvm-ieee-2020-2.0/base/uvm_globals.svh
    // Function -- NODOCS -- uvm_report_error
    
    // @uvm-ieee 1800.2-2020 auto F.3.2.3
    function void uvm_report_error(string id,
                                   string message,
                                   int verbosity = UVM_NONE,
                       string filename = "",
                       int line = 0,
                                   string context_name = "",
                                   bit report_enabled_checked = 0);
      uvm_root top;
      uvm_coreservice_t cs;
      cs = uvm_coreservice_t::get();
      top = cs.get_root();
      top.uvm_report_error(id, message, verbosity, filename, line, context_name,
        report_enabled_checked);
    endfunction
    

    完整源码 · SHA256:7c9321d117c5e3391f81792b730837a5bca47d3539152d98412ae3c75594fe2f

    src/vcs-uvm-ieee-2020-2.0/seq/uvm_sequence_item.svh
      virtual function void uvm_report( uvm_severity severity,
                                        string id,
                                        string message,
                                        int verbosity = (severity == uvm_severity'(UVM_ERROR)) ? UVM_NONE :
                                                        (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : 
                                                        (severity == uvm_severity'(UVM_WARNING)) ? UVM_NONE : UVM_MEDIUM,
                                        string filename = "",
                                        int line = 0,
                                        string context_name = "",
                                        bit report_enabled_checked = 0);
        uvm_report_message l_report_message;
        if ((severity == UVM_INFO) && (report_enabled_checked == 0)) begin
          if (!uvm_report_enabled(verbosity, severity, id))
            return;
        end
        l_report_message = uvm_report_message::new_report_message();
        l_report_message.set_report_message(severity, id, message, 
                        verbosity, filename, line, context_name);
        uvm_process_report_message(l_report_message);
    

    src/vcs-uvm-ieee-2020-2.0/seq/uvm_sequence_item.svh
      // Function -- NODOCS -- uvm_report_warning
    
      // @uvm-ieee 1800.2-2020 auto 14.1.3.3
      virtual function void uvm_report_warning( string id,
                            string message,
                            int verbosity = UVM_NONE,                        
                            string filename = "",
                            int line = 0,
                            string context_name = "",
                            bit report_enabled_checked = 0);
    
        this.uvm_report(UVM_WARNING, id, message, verbosity, filename, line,
                        context_name, report_enabled_checked);
      endfunction
    
      // Function -- NODOCS -- uvm_report_error
    
      // @uvm-ieee 1800.2-2020 auto 14.1.3.3
      virtual function void uvm_report_error( string id,
                          string message,
                          int verbosity = UVM_NONE,
                          string filename = "",
                          int line = 0,
                          string context_name = "",
                          bit report_enabled_checked = 0);
    
        this.uvm_report(UVM_ERROR, id, message, verbosity, filename, line,
                        context_name, report_enabled_checked);
      endfunction
    
      // Function -- NODOCS -- uvm_report_fatal
      //
      // These are the primary reporting methods in the UVM. uvm_sequence_item
      // derived types delegate these functions to their associated sequencer
    

    完整源码 · SHA256:be024241559fb5b897d36d4b0cb2f5ee578087810d356a3e629ec1f9b69be588

    术语解释 · 兼容配置

    非 INFO 消息不再做 verbosity 过滤(M04-003)

    返回Reporting / 命令行 · 迁移清单

    版本适用范围