У меня есть класс с rand
членом данных i
. Этот класс (child
) является членом класса parent
, который также имеет член данных i
. Я хотел бы ограничить значение i
в дочернем классе таким же, как значение i
в родительском классе. Я хочу сделать что-то вроде:
c.randomize with {i==this.i;};
но this.i
, похоже, не относится к i
элементу данных родительского класса. (Почему?)
Я могу сделать это:
function void f;
int dummy = i;
c.randomize with {i==dummy;};
endfunction
или это:
function void f;
c.randomize with {i==m.blk.p.i;}; // yuck!
endfunction
но не знаете, есть ли лучший (встроенный, не хакерский) способ различения двух i
с.
MCVE:
class child;
rand int i;
endclass
class parent;
child c = new;
int i=1;
function void f;
c.randomize with {i==this.i;};
endfunction
endclass
module m;
initial begin : blk
parent p = new;
p.f;
$display("%p", p);
end
endmodule
https://www.edaplayground.com/x/2_8P