【问题标题】:What is a virtual accessor?什么是虚拟访问器?
【发布时间】:2020-06-03 12:18:11
【问题描述】:

这句话来自“uvm users guide 1.1”第20页:

“在 SystemVerilog 中,一个重要的使用模型是将随机约束添加到事务类型。这通常通过继承来完成——获取派生对象并将约束添加到基类。这些 可以通过派生一个新类来进一步修改或扩展约束,依此类推。支持这种使用 模型,访问器函数是虚拟的,成员是受保护的而不是本地的。”

什么是访问器?为什么它必须是虚拟的?

【问题讨论】:

    标签: system-verilog uvm


    【解决方案1】:

    Accessor 是一个get_* 函数,它只返回一个值,而不改变对象的状态。返回的值可以是成员变量,也可以是更复杂的表达式,具体取决于成员变量。一个例子是 point 类,它可以提供笛卡尔坐标和极坐标 (https://en.wikipedia.org/wiki/Polar_coordinate_system):

    class point;
    
      local int x;
      local int y;
    
      // Accessor for x coordinate, cartesian
      function int get_x();
        return x;
      endfunction
    
      // Accessor for r coordinate, polar
      function int get_r();
        return sqrt(x**2 + y**2);
      endfunction
    
      // accessors would also exist for y and phi
    
    endclass
    

    如果一个函数是虚函数,它可以在子类中被覆盖。

    为什么您提到的访问器是虚拟的很重要,您的问题并不明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2015-09-16
      • 2013-04-08
      • 2010-12-21
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多