use*_*273 1 oop system-verilog
我正在努力通过约束检查我对多态性的理解.我写了一个示例代码
class parent;
rand int unsigned a;
constraint a_c { a < 1000;}
function print();
$display("The randomized data is %d\n", a);
endfunction
endclass
class child extends parent;
constraint a_c { a > 50;}
endclass
module m;
child c = new();
initial begin
c.randomize();
c.print;
end
endmodule
Run Code Online (Sandbox Code Playgroud)
输出是
The randomized data is 2567677
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?
这是一个满足的有效结果.constraint a_c { a > 50;}因为扩展了约束a_c,它会覆盖基类中的约束.如果您希望约束是加法的,则需要为其提供与基类不同的名称.
顺便说一下,我建议在引用OOP继承时避免使用父和子这两个术语.这些术语意味着不同的对象.请改用base/super和derived/extended类.