跳转至

输入查询内容

    本页内容

    uvm_driver / uvm_push_driver 新增 factory 注册

    内部实现:文件组织、内部数据结构与实现钩子的变化。直接依赖内部接口时查阅,普通 API 的使用不需要重审这些源码。

    具体差异

    两个 driver 基类在 2.0 通过参数化注册宏使用 uvm_component_registry,并补 type_name 声明,可按类型查询和覆盖。m_uvm_component_registry_param 是宏名,并非新的 registry 类名;参数化注册也不保证按字符串名称查找能力。

    修改方案

    兼容措施与范围:本条是新增能力或实现说明,无需恢复旧接口;按使用条件核对行为。

    补充查阅

    扫描定位与记录结果

    无对应规则。当前脚本没有针对本条的直接检测规则。

    本条处理级别为“无需改动”,按修改方案评估;缺少扫描规则本身不增加迁移改造要求。

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

    源码与标准依据

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

    VCS 内置 UVM-1.2uvm_driver.svh:81uvm_push_driver.svh:89(仅 const static string type_name,无注册)

    VCS 内置 uvm-ieee-2020-2.0uvm_driver.svh:51`uvm_component_param_utils(uvm_driver#(REQ,RSP)))、src/vcs-uvm-ieee-2020-2.0/comps/uvm_push_driver.svh:43

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

    src/vcs-uvm-1.2/comps/uvm_driver.svh
        seq_item_prod_if = seq_item_port;
      endfunction // new
    
      const static string type_name = "uvm_driver #(REQ,RSP)";
    
      virtual function string get_type_name ();
        return type_name;
      endfunction
    
    endclass
    

    完整源码 · SHA256:22aed3c4f8d6c772d909479c8a570d3d21969c68459f9849b3eb04b6f4c2a950

    src/vcs-uvm-1.2/comps/uvm_push_driver.svh
        uvm_report_fatal("UVM_PUSH_DRIVER", "Put task for push driver is not implemented", UVM_NONE);
      endtask
    
      const static string type_name = "uvm_push_driver #(REQ,RSP)";
    
      virtual function string get_type_name ();
        return type_name;
      endfunction
    
    endclass
    

    完整源码 · SHA256:5f17a57854fa6f3b97584634cfca318a61afb07c5b198350876c4eed6d5800d4

    src/vcs-uvm-ieee-2020-2.0/comps/uvm_driver.svh
    class uvm_driver #(type REQ=uvm_sequence_item,
                       type RSP=REQ) extends uvm_component;
    
      `uvm_component_param_utils(uvm_driver#(REQ,RSP))
      // TODO: Would it be useful to change this to:
      //| `uvm_type_name_decl($sformatf("uvm_driver #(%s,%s)", REQ::type_name(), RSP::type_name()))
      `uvm_type_name_decl("uvm_driver #(REQ,RSP)")
    
      // Port -- NODOCS -- seq_item_port
      //
      // Derived driver classes should use this port to request items from the
      // sequencer. They may also use it to send responses back.
    
      uvm_seq_item_pull_port #(REQ, RSP) seq_item_port;
    
      uvm_seq_item_pull_port #(REQ, RSP) seq_item_prod_if; // alias
    
      // Port -- NODOCS -- rsp_port
      //
    

    完整源码 · SHA256:45d35b7eff623610891a67e78ae0652b037752d603ce9750facadc500ab3dacb

    术语解释 · 兼容配置

    返回Component / VCS 集成 · 迁移清单

    版本适用范围