跳转至

输入查询内容

    本页内容

    消息时间戳默认由 $time 改为 $realtime

    影响范围

    使用时间戳/固定消息文本作为 golden 或解析结构化 report 元素。

    具体差异

    compose_report_message 的时间字段恒用 $realtimeUVM_USE_REALTIME_IN_MSGS 宏在 2.0 无任何效果。timescale 精度下日志时间戳格式可能变化,影响黄金日志 diff。另外 report_message.do_print 从打印附加元素容器改为逐个打印元素(src/vcs-uvm-1.2/base/uvm_report_message.svh:579src/vcs-uvm-ieee-2020-2.0/base/uvm_report_message.svh:576),自定义 printer 和结构化日志解析也需核对层次变化。

    修改方案

    日志时间戳解析由仅接受整数改为允许实际 $realtime 输出的小数形式;比较时按日志中的时间单位归一化,不截掉小数部分。时间解析与 severity、ID、消息内容分别处理,再更新回归基线;报告调用本身可保留。

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

    迁移后验证

    发出含小数时间和附加元素的消息,检查精度、字段层次及日志解析,更新有解释的 golden

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

    补充查阅

    扫描定位与记录结果

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

    uv run tools/uvm_migration_scan.py <SoC代码目录> --rules S36
    

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

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

    源码与标准依据

    核查方式:源码核对。未单独进行 VCS 行为实测。

    VCS 内置 UVM-1.2uvm_report_server.svh:828`ifdef UVM_USE_REALTIME_IN_MSGS,默认 $time

    VCS 内置 uvm-ieee-2020-2.0uvm_report_server.svh:854(恒 $realtime

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

    src/vcs-uvm-1.2/base/uvm_report_server.svh
        //SNPS_ADDED_CODE_BEGIN
        //TYPE:Enhancement
        //INFO:To give user flexibilty to print realtime in report messages
        `ifdef UVM_USE_REALTIME_IN_MSGS 
            $swrite(time_str, "%0t", $realtime);
        `else 
            $swrite(time_str, "%0t", $time);
        `endif
        //SNPS_ADDED_CODE_END 
        if (report_message.get_context() != "")
          context_str = {"@@", report_message.get_context()};
    
        if (show_verbosity) begin
          if ($cast(l_verbosity, report_message.get_verbosity()))
            verbosity_str = l_verbosity.name();
          else
            verbosity_str.itoa(report_message.get_verbosity());
          verbosity_str = {"(", verbosity_str, ")"};
        end
    

    完整源码 · SHA256:cbcbf1ab721a8fdc21803b10a978096ca43ff300a5f96d85a2ede241942adcea

    src/vcs-uvm-ieee-2020-2.0/base/uvm_report_server.svh
        end
    
        // Make definable in terms of units.
        $swrite(time_str, "%0t", $realtime);
    
        if (report_message.get_context() != "")
          context_str = {"@@", report_message.get_context()};
    
        if (show_verbosity) begin
          if ($cast(l_verbosity, report_message.get_verbosity()))
            verbosity_str = l_verbosity.name();
          else
            verbosity_str.itoa(report_message.get_verbosity());
          verbosity_str = {"(", verbosity_str, ")"};
        end
    
        if (show_terminator)
          terminator_str = {" -",sev_string};
    

    完整源码 · SHA256:be451854e400aaa5f89cbc5ffe30e9a5a4f7acadb9a10f63af848947c2bc7159

    src/vcs-uvm-1.2/base/uvm_report_message.svh
      // do_pack() not needed
      // do_unpack() not needed
      // do_compare() not needed
    
    
      // Not documented.
      virtual function void do_copy (uvm_object rhs);
        uvm_report_message report_message;
    
        super.do_copy(rhs);
    
        if(!$cast(report_message, rhs) || (rhs==null))
          return;
    
        _report_object = report_message.get_report_object();
        _report_handler = report_message.get_report_handler();
        _report_server = report_message.get_report_server();
    

    完整源码 · SHA256:04da256c1386a13d2b7f26408128d80540aa427542d41103e3415bbf5ef99c10

    src/vcs-uvm-ieee-2020-2.0/base/uvm_report_message.svh
        printer.print_field("line", _line, $bits(_line), UVM_UNSIGNED);
        printer.print_string("context_name", _context_name);
    
        if (_report_message_element_container.size() != 0) begin
          uvm_report_message_element_base elements[$];
          elements  = _report_message_element_container.get_elements();
          foreach (elements[i])
            elements[i].print(printer);
        end
      endfunction
    
    
      `uvm_object_utils(uvm_report_message)
    
    
    
      // do_pack() not needed
      // do_unpack() not needed
      // do_compare() not needed
    

    完整源码 · SHA256:e5395e61abbd6222bb1b2a8e001be099692b9320d39861d490c6b28d87adb986

    术语解释 · 兼容配置

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

    版本适用范围