У меня есть классы, как показано ниже:
class h1_c;
rand bit[1:0] h1_a;
rand bit[1:0] h1_b;
h2_c h2;
function new()
h2 = new();
endfunction
endclass
class h2_c;
rand bit[1:0] h2_a;
rand bit[1:0] h2_b;
h3_c h3;
function new()
h3 = new();
endfunction
endclass
class h3_c;
rand bit[1:0] h3_a;
rand bit[1:0] h3_b;
endclass
module p1;
h1_c h1;
initial begin
h1 = new();
h1.h2.h2_a.rand_mode(0);
h1.h2.h3.h3_a.rand_mode(0);
h1.randomize();
//How to turn all rand_mode on effectively after I turn them off seperately.
//which like h1.*.rand_mode(1);
end
endmodule
Я выключаю режим rand
некоторых переменных и хочу включить их все эффективно после randomize()
. Есть ли какой-нибудь эффективный способ сделать это?
Вы можете опустить имя переменной при использовании rand_mode (1) для установки всех переменных в объекте, в соответствии с разделом 18.8 LRM 1800-2017.
т.е.
h1.rand_mode(1);
// is equivalent to
h1.h1_a.rand_mode(1);
h1.h1_b.rand_mode(1);
h1.h1_c.rand_mode(1);
И это должно рекурсивно спускаться в h1.h1_c, устанавливая его переменные rand_mode. Но я бы проверил ваш инструмент, так как это поведение не очевидно из чтения LRM.