class c2;
rand bit[1:0] a;
rand bit[1:0] b;
function void my_print();
$display("a = %b", a);
$display("b = %b", b);
endfunction
endclass
class c1;
rand bit[1:0] i;
rand bit[1:0] j;
rand c2 o2;
function new();
o2 = new();
endfunction
function void my_print();
$display("i = %b", i);
$display("j = %b", j);
endfunction
endclass
program p1;
c1 o1 = new;
c2 o2_local = new;
initial begin
if (o1.randomize() with {o2 == o2_local;}) begin
o1.my_print();
o2.my_print();
end
endprogram
В этой программе рандомизация становится неудачной для o1.randomize(). Если я беру отдельные переменные для o2 и использую встроенное ограничение с этим (например, o2.a == o2_local.a), то он работает.Рандомизация объекта класса внутри класса в SystemVerilog
Есть ли альтернативный способ сделать этот тип рандомизации, так как мой первоначальный класс содержит почти 38 переменных, а индивидуальные задания будут неприятными.
«Вложенный класс» здесь не является правильной терминологией. Вложенный класс - это класс, определенный в другом классе. У вас есть объект-член другого класса. –