System verilog 如何随机重做,直到得到我想要的号码?
下面是随机重置的基本序列类:System verilog 如何随机重做,直到得到我想要的号码?,system-verilog,System Verilog,下面是随机重置的基本序列类: class random_reset; rand int rst_period; constraint rst_range { rst_period inside {[1:100]}; } task random_system_reset ( ref reg rst, ref reg clk); begin rst = 1; repeat (r
class random_reset;
rand int rst_period;
constraint rst_range { rst_period inside {[1:100]}; }
task random_system_reset (
ref reg rst,
ref reg clk);
begin
rst = 1;
repeat (rst_period) @(posedge clk);
rst = 0;
end
endtask
endclass
然而,我的测试至少需要6个时钟。无论如何要确保在调用此类时,随机值将大于6?假设您希望保持原始约束不变,但在某些情况下,您需要强制周期为6或更多,您可以使用
randomize()和:
random_reset rr = new();
initial rr.randomize() with { rst_period >= 6; };
对于此rr
对象,rst\u期间将介于6和100之间
参考IEEE标准1800-2017,第18.7节,线性约束-随机化()