如何随机重做直到得到我想要的数字?
How to make randomize redo until get the number I want?
下面随机重置的基本序列class:
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个时钟。无论如何要确保当我调用这个 class 时,会得到大于 6 的随机值吗?
假设您想保持原始约束不变,但在某些情况下,您需要将周期强制为 6 或更多,您可以使用 randomize() with
:
random_reset rr = new();
initial rr.randomize() with { rst_period >= 6; };
对于这个 rr
对象,rst_period
将介于 6 和 100 之间。
请参阅 IEEE 标准 1800-2017,第 18.7 节内联约束—randomize() with.
下面随机重置的基本序列class:
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个时钟。无论如何要确保当我调用这个 class 时,会得到大于 6 的随机值吗?
假设您想保持原始约束不变,但在某些情况下,您需要将周期强制为 6 或更多,您可以使用 randomize() with
:
random_reset rr = new();
initial rr.randomize() with { rst_period >= 6; };
对于这个 rr
对象,rst_period
将介于 6 和 100 之间。
请参阅 IEEE 标准 1800-2017,第 18.7 节内联约束—randomize() with.