我的课程如下:
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()
之后有效地将它们全部打开。有什么有效的方法吗?
答案 0 :(得分:1)
根据1800-2017 LRM的18.8节,您可以在使用rand_mode(1)设置对象中的所有变量时省略变量名
即
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来看这种行为并不明显。