跳转至

输入查询内容

    本页内容

    uvm_event 系 get_type_name() 返回值变化

    影响范围

    代码或后处理按字符串 uvm_event 匹配类型。

    具体差异

    按 type name 字符串做匹配/过滤/打印归档的代码(如波形或日志脚本匹配 uvm_event)会失配。同理 uvm_barrier/uvm_pool/uvm_queue 因改用宏注册,get_type_name 值保持不变("uvm_barrier"/"uvm_pool"/"uvm_queue"),仅 event 系变化。

    修改方案

    按 get_type_name() == "uvm_event" 分支的代码,若目的是判断类型,改为向实际 uvm_event#(T) 句柄 $cast 并检查返回值;若仅用于日志展示,则接受目标输出 uvm_pkg::uvm_event#(T),更新字符串匹配。不要靠该字符串区分不同的 T。

    兼容措施与范围:兼容措施不恢复旧类型名文本;类型判断使用实际类型,日志匹配按目标文本调整。

    迁移后验证

    打印实际 get_type_name,并运行匹配规则,确保目标参数化名称可识别;不应改变 barrier/pool/queue 的无关匹配。

    记录本条结果M03-012 · 状态与证据

    已有实测与复现

    补充查阅

    扫描定位与记录结果

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

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

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

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

    源码与标准依据

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

    VCS 内置 UVM-1.2uvm_event.svh:342(返回 "uvm_event")、uvm_event.svh:212uvm_event_base::get_type_name 返回 "uvm_event_base"

    VCS 内置 uvm-ieee-2020-2.0uvm_event.svh:277(返回 "uvm_pkg::uvm_event#(T)");event_base 的 get_type_nameuvm_event.svh:40 的 abstract utils 宏生成,仍返回 "uvm_event_base",不是 <unknown>

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

    src/vcs-uvm-1.2/base/uvm_event.svh
        endfunction
    
    
        virtual function string get_type_name();
            return type_name;
        endfunction
    
    
        virtual function void do_print (uvm_printer printer);
            printer.print_field_int("num_waiters", num_waiters, $bits(num_waiters), UVM_DEC, ".", "int");
            printer.print_field_int("on", on, $bits(on), UVM_BIN, ".", "bit");
            printer.print_time("trigger_time", trigger_time);
            printer.m_scope.down("callbacks");
    `ifndef UVM_EVENT_CALLBACK_FIX                
            foreach(callbacks[e]) begin
                printer.print_object($sformatf("[%0d]",e), callbacks[e], "[");
            end
    `endif                
            printer.m_scope.up();
    

    src/vcs-uvm-1.2/base/uvm_event.svh
            return trigger_data;
        endfunction
    
        virtual function string get_type_name();
            return type_name;
        endfunction
    
            //-----------//
        // callbacks //
        //-----------//
    
        // Function: add_callback
        //
        // Registers a callback object, ~cb~, with this event. The callback object
        // may include pre_trigger and post_trigger functionality. If ~append~ is set
        // to 1, the default, ~cb~ is added to the back of the callback list. Otherwise,
        // ~cb~ is placed at the front of the callback list.
    
        virtual function void add_callback (uvm_event_callback#(T) cb, bit append=1);
    

    完整源码 · SHA256:c12a1067eb864f11ddc75556f783609622b4f331f5b22a488b5c9bea88ae691a

    src/vcs-uvm-ieee-2020-2.0/base/uvm_event.svh
    // @uvm-ieee 1800.2-2020 auto 10.1.1.1
    virtual class uvm_event_base extends uvm_object;
    
            `uvm_object_abstract_utils(uvm_event_base)
    
        protected event      m_event;
        protected int        num_waiters;
        protected bit        on;
        protected time       trigger_time=0;
    
        // Function -- NODOCS -- new
        //
        // Creates a new event object.
    
        // @uvm-ieee 1800.2-2020 auto 10.1.1.2.1
        function new (string name="");
            super.new(name);
        endfunction  
    

    src/vcs-uvm-ieee-2020-2.0/base/uvm_event.svh
            `uvm_object_param_utils(this_type)
    
            // Better type name for debug
            virtual function string get_type_name();
           return "uvm_pkg::uvm_event#(T)";
        endfunction : get_type_name
    
        local T trigger_data;
            local T default_data;
    
        // Function -- NODOCS -- new
        //
        // Creates a new event object.
    
        // @uvm-ieee 1800.2-2020 auto 10.1.2.2.1
        function new (string name="");
            super.new(name);
        endfunction  
    

    完整源码 · SHA256:69083cec211fdace8c2839987abc413ecad3fec1fbe13cbf7ba1c720ec170181

    术语解释 · 兼容配置

    返回Phase / Objection / Event · 迁移清单

    版本适用范围