mirror of
https://github.com/verilator/verilator.git
synced 2025-01-01 04:07:34 +00:00
Fix $urandom_range maximum value (#2723)
This commit is contained in:
parent
4096dee598
commit
1124829500
@ -49,6 +49,7 @@ Marshal Qiao
|
||||
Matthew Ballance
|
||||
Michael Killough
|
||||
Mike Popoloski
|
||||
Nandu Raj
|
||||
Nathan Kohagen
|
||||
Nathan Myers
|
||||
Patrick Stewart
|
||||
|
@ -661,9 +661,9 @@ inline IData VL_URANDOM_RANGE_I(IData hi, IData lo) {
|
||||
vluint64_t rnd = vl_rand64();
|
||||
if (VL_LIKELY(hi > lo)) {
|
||||
// Modulus isn't very fast but it's common that hi-low is power-of-two
|
||||
return (rnd % (hi - lo)) + lo;
|
||||
return (rnd % (hi - lo + 1)) + lo;
|
||||
} else {
|
||||
return (rnd % (lo - hi)) + hi;
|
||||
return (rnd % (lo - hi + 1)) + hi;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,14 +34,17 @@ module t(/*AUTOARG*/);
|
||||
if (v1 == v2 && v1 == v3) $stop; // Possible, but 2^-64
|
||||
|
||||
// Range
|
||||
v2 = $urandom_range(v1, v1);
|
||||
if (v1 != v2) $stop;
|
||||
|
||||
for (int test = 0; test < 20; ++test) begin
|
||||
v1 = 2;
|
||||
v1 = $urandom_range(0, v1);
|
||||
if (v1 != 0 && v1 != 1) $stop;
|
||||
v1 = $urandom_range(2, 0);
|
||||
if (v1 != 0 && v1 != 1) $stop;
|
||||
v1 = $urandom_range(3);
|
||||
if (v1 != 0 && v1 != 1 && v1 != 2) $stop;
|
||||
v1 = $urandom_range(2, 0);
|
||||
if (v1 != 0 && v1 != 1 && v1 !=2) $stop;
|
||||
v1 = $urandom_range(3);
|
||||
if (v1 != 0 && v1 != 1 && v1 != 2 && v1 != 3) $stop;
|
||||
end
|
||||
|
||||
// Seed stability
|
||||
|
Loading…
Reference in New Issue
Block a user