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节,线性约束-随机化()