跳转至

输入查询内容

    本页内容

    uvm_reg_item 新增全套 set/get 访问器(34 个方法)

    新增功能:目标库新增的 API 和可选替代接口;已有用法的迁移要求列在用户接口与行为中。

    具体差异

    1800.2 为 uvm_reg_item 的属性定义标准访问器;字段本身仍保留公有(兼容直接读写 rw.value[0]rw.kind 的旧代码)。parent 对应的方法名是 set_parent_sequence/get_parent_sequence,不能照搬字段注释中的 set_parent/get_parent。get_value_array 拷贝数组,不返回可直接修改原数组的别名;修改副本后必须 set_value_array 写回。do_copy 由 super.copy 改为 super.do_copy(目标 src/vcs-uvm-ieee-2020-2.0/reg/uvm_reg_item.svh:256)。

    修改方案

    无强制;建议新代码用访问器。

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

    已有实测与复现

    补充查阅

    扫描定位与记录结果

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

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

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

    源码与标准依据

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

    VCS 内置 UVM-1.2uvm_reg_item.svh:41(字段均为公有成员,无访问器)

    VCS 内置 uvm-ieee-2020-2.0uvm_reg_item.svh:46uvm_reg_item.svh:275-uvm_reg_item.svh:360set_element_kind/get_element_kindset_value/get_value(idx)set_value_array/get_value_arrayset_door/get_doorset_map/get_mapset_status/get_status 等)

    标准依据:IEEE 1800.2-2020 §19.1.1.2.1–19.1.1.2.15(访问器分组;以源码逐方法标注为索引)

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

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

    src/vcs-uvm-1.2/reg/uvm_reg_item.svh
    // wishes to implement a custom address translation algorithm.
    //------------------------------------------------------------------------------
    
    class uvm_reg_item extends uvm_sequence_item;
    
      `uvm_object_utils(uvm_reg_item)
    
      // Variable: element_kind
      //
      // Kind of element being accessed: REG, MEM, or FIELD. See <uvm_elem_kind_e>.
      //
      uvm_elem_kind_e element_kind;
    
    
      // Variable: element
      //
      // A handle to the RegModel model element associated with this transaction.
      // Use <element_kind> to determine the type to cast  to: <uvm_reg>,
      // <uvm_mem>, or <uvm_reg_field>.
    

    完整源码 · SHA256:3320bcaa3e6708dca67754638c132010334978f74c29bea5e373494ba050ab4c

    src/vcs-uvm-ieee-2020-2.0/reg/uvm_reg_item.svh
    //------------------------------------------------------------------------------
    
    // @uvm-ieee 1800.2-2020 auto 19.1.1.1
    class uvm_reg_item extends uvm_sequence_item;
    
      `uvm_object_utils(uvm_reg_item)
    
      // Variable -- NODOCS -- element_kind
      //
      // Kind of element being accessed: REG, MEM, or FIELD. See <uvm_elem_kind_e>.
      //
    
      uvm_elem_kind_e element_kind;
    
    
      // Variable -- NODOCS -- element
      //
      // A handle to the RegModel model element associated with this transaction.
      // Use <element_kind> to determine the type to cast  to: <uvm_reg>,
    

    src/vcs-uvm-ieee-2020-2.0/reg/uvm_reg_item.svh
          `uvm_error("WRONG_TYPE","Provided rhs is not of type uvm_reg_item")
          return;
        end
        super.do_copy(rhs);
        set_element_kind(rhs_.get_element_kind());
        set_element(rhs_.get_element());
        set_kind(rhs_.get_kind());
        rhs_.get_value_array(value);
        set_offset(rhs_.get_offset());
        set_status(rhs_.get_status());
        set_local_map(rhs_.get_local_map());
        set_map(rhs_.get_map());
        set_door(rhs_.get_door());
        set_extension(rhs_.get_extension());
        set_bd_kind(rhs_.get_bd_kind());
        set_parent_sequence(rhs_.get_parent_sequence());
        set_priority(rhs_.get_priority());
        set_fname(rhs_.get_fname());
        set_line(rhs_.get_line());
      endfunction
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.1
      extern virtual function void set_element_kind(uvm_elem_kind_e element_kind);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.1
      extern virtual function uvm_elem_kind_e get_element_kind();
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.2
      extern virtual function void set_element(uvm_object element);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.2
      extern virtual function uvm_object get_element();
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.3
      extern virtual function void set_kind(uvm_access_e kind);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.3
      extern virtual function uvm_access_e get_kind();
    

    src/vcs-uvm-ieee-2020-2.0/reg/uvm_reg_item.svh
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.13
      extern virtual function void set_bd_kind(string bd_kind);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.13
      extern virtual function string get_bd_kind();
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.14
      extern virtual function void set_fname(string fname);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.14
      extern virtual function string get_fname();
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.15
      extern virtual function void set_line(int line);
    
      // @uvm-ieee 1800.2-2020 auto 19.1.1.2.15
      extern virtual function int get_line();
    

    完整源码 · SHA256:f0ef6373d2292ca32e5dcbb2ba20db3542bef2cd68fd1e00a57d2f3019ef9a36

    术语解释 · 兼容配置

    返回RAL(寄存器模型) · 迁移清单

    版本适用范围