什么是虚拟访问器?



这句话来自"uvm 用户指南 1.1"第 20 页:

"在SystemVerilog中,一个重要的使用模型是向事务类型添加随机化约束。这通常是通过继承完成的 - 获取派生对象并向基类添加约束。这些 可以通过派生新类等来进一步修改或扩展约束。为了支持此用途 模型,访问器功能是虚拟的,成员是受保护的,而不是本地的。

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

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

如果函数是虚拟的,则可以在子类中重写它。

为什么对于您提到的虚拟访问者很重要,从您的问题中看不出来。

最新更新