跳转至

输入查询内容

    本页内容

    删除:reporting 类中的 deprecated 方法

    影响范围

    调用旧 report server 方法,或派生类覆盖已删除的 reporting 接口。

    具体差异

    get_report_server() 删除,改用 uvm_report_server::get_server()process_report()/compose_message()(连同 `UVM_DEPRECATED_REPORTING 分支)删除,自定义 server 需重写 execute_report_message/compose_report_message

    修改方案

    把对象 get_report_server() 调用改为 uvm_report_server::get_server()。自定义格式移到 compose_report_message,自定义 action 处理移到 execute_report_message;新参数为 uvm_report_message,不能只把旧方法改名后保留原形参。具体目标签名与默认行为保留方式见下方。

    调用端改用全局 server 访问器:

    1
    2
    3
    4
    // UVM 1.2
    server = reporter.get_report_server();
    // UVM 2.0
    server = uvm_report_server::get_server();
    

    自定义输出格式时,下面是派生 uvm_default_report_server 中的方法示例:

    1
    2
    3
    4
    5
    virtual function string compose_report_message(
        uvm_report_message report_message, string report_object_name = "");
      return {"[team] ",
              super.compose_report_message(report_message, report_object_name)};
    endfunction
    

    新入口通过 report_message.get_severity()get_id()get_message() 等读取旧分散实参。若原 process_report 还定制了 action 处理,移到以下目标原型:

    1
    2
    3
    4
    5
    virtual function void execute_report_message(
        uvm_report_message report_message, string composed_message);
      // Add the intended custom handling here.
      super.execute_report_message(report_message, composed_message);
    endfunction
    

    此示例保留默认 action、计数与退出处理。不要在自定义方法和 super 中重复计数或写出同一消息;需要完全接管时须自行实现这些契约。仅定制格式无需同时重写 execute。构造新 server 后通过 uvm_report_server::set_server(server) 安装,并触发真实消息验证自定义钩子生效。

    兼容措施与范围:旧 report server 方法不再提供;改用 uvm_report_message 接口并保留格式与 action 处理。

    迁移后验证

    编译派生 server,触发一条 INFO 和一条 ERROR;确认自定义处理仍被调用、消息路由和计数正确。

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

    已有实测与复现

    补充查阅

    扫描定位与记录结果

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

    • C10b · 文本匹配:reporting deprecated 方法删除(get_report_server/process_report/compose_message)。
    uv run tools/uvm_migration_scan.py <SoC代码目录> --rules C10b
    

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

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

    源码与标准依据

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

    VCS 内置 UVM-1.2uvm_report_object.svh:627get_report_server);uvm_report_server.svh:919process_report)、uvm_report_server.svh:954compose_message

    VCS 内置 uvm-ieee-2020-2.0:均不存在(uvm_report_object.svhuvm_report_server.svh 全文无此符号)

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

    src/vcs-uvm-1.2/base/uvm_report_object.svh
      //
      // Use <uvm_report_server::get_server()>
    
      function uvm_report_server get_report_server();
        uvm_report_server l_rs = uvm_report_server::get_server();
        return l_rs;
      endfunction
    
    
      // Function- dump_report_state
      //
      // This method dumps the internal state of the report handler. This includes
      // information about the maximum quit count, the maximum verbosity, and the
      // action and files associated with severities, ids, and (severity, id) pairs.
      //
      // Use:
      // uvm_report_handler rh =get_report_handler();
      // rh.print().
    

    完整源码 · SHA256:f1747ee064c286b2c0f18d6e71b096890360ed9cb71ce494c1e07d007ec35f6a

    src/vcs-uvm-1.2/base/uvm_report_server.svh
      // This method can be overloaded by expert users to customize the way the
      // reporting system processes reports and the actions enabled for them.
    
      virtual function void process_report(
          uvm_severity severity,
          string name,
          string id,
          string message,
          uvm_action action,
          UVM_FILE file,
          string filename,
          int line,
          string composed_message,
          int verbosity_level,
          uvm_report_object client
          );
        uvm_report_message l_report_message;
    
        l_report_message = uvm_report_message::new_report_message();
    

    src/vcs-uvm-1.2/base/uvm_report_server.svh
      //
      // Expert users can overload this method to customize report formatting.
    
      virtual function string compose_message(
          uvm_severity severity,
          string name,
          string id,
          string message,
          string filename,
          int    line
          );
        uvm_report_message l_report_message;
    
        l_report_message = uvm_report_message::new_report_message();
        l_report_message.set_report_message(severity, id, message, 
                        UVM_NONE, filename, line, "");
    
        return compose_report_message(l_report_message, name);
      endfunction 
    

    完整源码 · SHA256:cbcbf1ab721a8fdc21803b10a978096ca43ff300a5f96d85a2ede241942adcea

    术语解释 · 兼容配置

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

    版本适用范围