Fix variable randomization to better differ by seed (#6945) (#6956)

This commit is contained in:
Rodrigo Batista de Moraes 2026-02-01 16:53:33 -03:00 committed by GitHub
parent a05cbd8382
commit c1e343d9cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 270 additions and 176 deletions

View File

@ -318,42 +318,72 @@ void VlProcess::randstate(const std::string& state) VL_MT_UNSAFE {
//===========================================================================
// Random -- Mostly called at init time, so not inline.
VlRNG::VlRNG() VL_MT_SAFE {
// Starting point for this new class comes from the global RNG
VlRNG& fromr = vl_thread_rng();
m_state = fromr.m_state;
// Advance the *source* so it can later generate a new number
// Xoroshiro128+ algorithm
fromr.m_state[1] ^= fromr.m_state[0];
fromr.m_state[0] = (((fromr.m_state[0] << 55) | (fromr.m_state[0] >> 9)) ^ fromr.m_state[1]
^ (fromr.m_state[1] << 14));
fromr.m_state[1] = (fromr.m_state[1] << 36) | (fromr.m_state[1] >> 28);
static std::pair<uint64_t, uint64_t> vl_splitmix64(uint64_t x) VL_PURE {
// SplitMix64 algorithm, copied under public domain from
// https://prng.di.unimi.it/splitmix64.c
// by Sebastiano Vigna
uint64_t z = (x += 0x9e3779b97f4a7c15ULL);
z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9ULL;
z = (z ^ (z >> 27)) * 0x94d049bb133111ebULL;
return {x, z ^ (z >> 31)};
}
// Xoroshiro128** algorithm, copied under public domain from
// https://xoshiro.di.unimi.it/xoroshiro128starstar.c
// by David Blackman and Sebastiano Vigna
static uint64_t vl_rolt(const uint64_t x, int k) VL_PURE { return (x << k) | (x >> (64 - k)); }
static std::array<uint64_t, 2> vl_rng_state_from_seed(uint64_t seed) VL_PURE {
const auto split1 = vl_splitmix64(seed);
const auto split2 = vl_splitmix64(split1.first);
return {split1.second, split2.second};
}
static uint64_t vl_rng_result(const std::array<uint64_t, 2>& state) VL_PURE {
const uint64_t s0 = state[0];
return vl_rolt(s0 * 5, 7) * 9;
}
static std::array<uint64_t, 2>
vl_rng_compute_new_state(const std::array<uint64_t, 2>& current_state) VL_PURE {
const uint64_t s0 = current_state[0];
uint64_t s1 = current_state[1];
s1 ^= s0;
const uint64_t new_s0 = vl_rolt(s0, 24) ^ s1 ^ (s1 << 16); // a, b
const uint64_t new_s1 = vl_rolt(s1, 37); // c
return {new_s0, new_s1};
}
VlRNG::VlRNG() VL_MT_SAFE {
VlRNG& fromr = vl_thread_rng();
const uint64_t s0 = vl_rng_result(fromr.m_state);
fromr.m_state = vl_rng_compute_new_state(fromr.m_state);
const uint64_t s1 = vl_rng_result(fromr.m_state);
fromr.m_state = vl_rng_compute_new_state(fromr.m_state);
m_state = {s0, s1};
}
VlRNG::VlRNG(uint64_t seed) VL_PURE { m_state = vl_rng_state_from_seed(seed); }
void VlRNG::srandom(uint64_t n) VL_MT_UNSAFE { m_state = vl_rng_state_from_seed(n); }
uint64_t VlRNG::rand64() VL_MT_UNSAFE {
// Xoroshiro128+ algorithm
const uint64_t result = m_state[0] + m_state[1];
m_state[1] ^= m_state[0];
m_state[0] = (((m_state[0] << 55) | (m_state[0] >> 9)) ^ m_state[1] ^ (m_state[1] << 14));
m_state[1] = (m_state[1] << 36) | (m_state[1] >> 28);
const uint64_t result = vl_rng_result(m_state);
m_state = vl_rng_compute_new_state(m_state);
return result;
}
uint64_t VlRNG::vl_thread_rng_rand64() VL_MT_SAFE {
VlRNG& fromr = vl_thread_rng();
const uint64_t result = fromr.m_state[0] + fromr.m_state[1];
fromr.m_state[1] ^= fromr.m_state[0];
fromr.m_state[0] = (((fromr.m_state[0] << 55) | (fromr.m_state[0] >> 9)) ^ fromr.m_state[1]
^ (fromr.m_state[1] << 14));
fromr.m_state[1] = (fromr.m_state[1] << 36) | (fromr.m_state[1] >> 28);
const uint64_t result = vl_rng_result(fromr.m_state);
fromr.m_state = vl_rng_compute_new_state(fromr.m_state);
return result;
}
void VlRNG::srandom(uint64_t n) VL_MT_UNSAFE {
m_state[0] = n;
m_state[1] = m_state[0];
// Fix state as algorithm is slow to randomize if many zeros
// This causes a loss of ~ 1 bit of seed entropy, no big deal
if (VL_COUNTONES_I(m_state[0]) < 10) m_state[0] = ~m_state[0];
if (VL_COUNTONES_I(m_state[1]) < 10) m_state[1] = ~m_state[1];
}
std::string VlRNG::get_randstate() const VL_MT_UNSAFE {
// Though not stated in IEEE, assumption is the string must be printable
const char* const stateCharsp = reinterpret_cast<const char*>(&m_state);
@ -398,13 +428,8 @@ VlRNG& VlRNG::vl_thread_rng() VL_MT_SAFE {
if (VL_UNLIKELY(t_seedEpoch != VerilatedContextImp::randSeedEpoch())) {
// Set epoch before state, to avoid race case with new seeding
t_seedEpoch = VerilatedContextImp::randSeedEpoch();
// Same as srandom() but here as needs to be VL_MT_SAFE
t_rng.m_state[0] = Verilated::threadContextp()->impp()->randSeedDefault64();
t_rng.m_state[1] = t_rng.m_state[0];
// Fix state as algorithm is slow to randomize if many zeros
// This causes a loss of ~ 1 bit of seed entropy, no big deal
if (VL_COUNTONES_I(t_rng.m_state[0]) < 10) t_rng.m_state[0] = ~t_rng.m_state[0];
if (VL_COUNTONES_I(t_rng.m_state[1]) < 10) t_rng.m_state[1] = ~t_rng.m_state[1];
t_rng.m_state
= vl_rng_state_from_seed(Verilated::threadContextp()->impp()->randSeedDefault64());
}
return t_rng;
}

View File

@ -244,7 +244,7 @@ public:
// having to check for construction at each call
// Alternative: seed with zero and check on rand64() call
VlRNG() VL_MT_SAFE;
explicit VlRNG(uint64_t seed0) VL_MT_SAFE : m_state{0x12341234UL, seed0} {}
explicit VlRNG(uint64_t seed) VL_PURE;
void srandom(uint64_t n) VL_MT_UNSAFE;
std::string get_randstate() const VL_MT_UNSAFE;
void set_randstate(const std::string& state) VL_MT_UNSAFE;

View File

@ -4,7 +4,6 @@
=== Test 2: addr out of range ===
%Warning-UNSATCONSTR: t/t_constraint_unsat.v:16: Unsatisfied constraint: 'if (!randomize() with { addr == a; data == d; }) begin'
%Warning-UNSATCONSTR: t/t_constraint_unsat.v:12: Unsatisfied constraint: 'constraint data_range { data > 10 && data < 200; }'
%Warning-UNSATCONSTR: t/t_constraint_unsat.v:12: Unsatisfied constraint: 'constraint data_range { data > 10 && data < 200; }'
%Warning-UNSATCONSTR: t/t_constraint_unsat.v:11: Unsatisfied constraint: 'constraint addr_range { addr < 127; }'
%Warning-UNSATCONSTR: t/t_constraint_unsat.v:16: Unsatisfied constraint: 'if (!randomize() with { addr == a; data == d; }) begin'
Randomization failed.

View File

@ -4,7 +4,6 @@
=== Test 2: addr out of range ===
%Warning-UNSATCONSTR: PSTByA:16: Unsatisfied constraint
%Warning-UNSATCONSTR: PSTByA:12: Unsatisfied constraint
%Warning-UNSATCONSTR: PSTByA:12: Unsatisfied constraint
%Warning-UNSATCONSTR: PSTByA:11: Unsatisfied constraint
%Warning-UNSATCONSTR: PSTByA:16: Unsatisfied constraint
Randomization failed.

View File

@ -13,8 +13,8 @@ test.scenarios('vlt_all')
test.compile()
test.execute(all_run_flags=["+verilator+seed+5 +SEED=fffffff4"])
test.execute(all_run_flags=["+verilator+seed+5 +SEED=h2e564fe1"])
test.execute(all_run_flags=["+verilator+seed+6 +SEED=fffffff2"])
test.execute(all_run_flags=["+verilator+seed+6 +SEED=h3dca891b"])
test.passes()

View File

@ -0,0 +1,37 @@
#!/usr/bin/env python3
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
#
# Copyright 2025 by Wilson Snyder. This program is free software; you
# can redistribute it and/or modify it under the terms of either the GNU
# Lesser General Public License Version 3 or the Perl Artistic License
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
import vltest_bootstrap
test.scenarios("simulator_st")
test.compile(timing_loop=True, verilator_flags2=["--timing"])
filename = test.obj_dir + "/bits.log"
test.unlink_ok(filename)
for seed in range(1, 6):
test.execute(all_run_flags=["+verilator+rand+reset+2", f"+verilator+seed+{seed}"])
unique_strings = set()
with open(filename, "r", encoding="utf-8") as file:
for line in file:
unique_strings.update(line.split())
count_unique_strings = len(unique_strings)
# A ideal random generator has a fail chance of 1 in 66 million
expected_unique_strings = 4
if count_unique_strings < expected_unique_strings:
test.error(
f"Expected at least {expected_unique_strings} unique strings, got {count_unique_strings}")
test.passes()

View File

@ -0,0 +1,34 @@
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2026 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
`define STRINGIFY(x) `"x`"
module t ();
reg a0 = 'x;
reg a1 = 'x;
reg a2 = 'x;
reg a3 = 'x;
reg a4 = 'x;
reg a5 = 'x;
reg a6 = 'x;
reg a7 = 'x;
reg a8 = 'x;
reg a9 = 'x;
reg a10 = 'x;
reg a11 = 'x;
reg a12 = 'x;
reg a13 = 'x;
reg a14 = 'x;
reg a15 = 'x;
integer fd;
initial begin
fd = $fopen({`STRINGIFY(`TEST_OBJ_DIR),"/bits.log"}, "a");
$fwrite(fd, "%b\n", {a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15});
$write("*-* All Finished *-*\n");
$finish;
end
endmodule

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xb3cf9302
rand = 0xf0acf3e4
rand = 0xca0ac74c
rand = 0x4eddfc2c
rand = 0x1919db69
x_assigned = 0x486aeb2d
Last rand = 0x2d118c9b
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xc31fbc3d
rand = 0xcbb440c9
rand = 0x030234c6
rand = 0xf53bab60
rand = 0xcf071500
x_assigned = 0x80742d9b
Last rand = 0xddacca56
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xb3cf9302
rand = 0xf0acf3e4
rand = 0xca0ac74c
rand = 0x4eddfc2c
rand = 0x1919db69
x_assigned = 0x486aeb2d
Last rand = 0x2d118c9b
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xc31fbc3d
rand = 0xcbb440c9
rand = 0x030234c6
rand = 0xf53bab60
rand = 0xcf071500
x_assigned = 0x80742d9b
Last rand = 0xddacca56
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xb3cf9302
rand = 0xf0acf3e4
rand = 0xca0ac74c
rand = 0x4eddfc2c
rand = 0x1919db69
x_assigned = 0x486aeb2d
Last rand = 0x2d118c9b
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xc31fbc3d
rand = 0xcbb440c9
rand = 0x030234c6
rand = 0xf53bab60
rand = 0xcf071500
x_assigned = 0x80742d9b
Last rand = 0xddacca56
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xb3cf9302
rand = 0xf0acf3e4
rand = 0xca0ac74c
rand = 0x4eddfc2c
rand = 0x1919db69
x_assigned = 0x486aeb2d
Last rand = 0x2d118c9b
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xc31fbc3d
rand = 0xcbb440c9
rand = 0x030234c6
rand = 0xf53bab60
rand = 0xcf071500
x_assigned = 0x80742d9b
Last rand = 0xddacca56
*-* All Finished *-*

View File

@ -2,16 +2,16 @@ uninitialized = 0x00000000
x_assigned (initial) = 0x00000000
uninitialized2 = 0x00000000
big = 0x0000000000000000000000000000000000000000000000000000000000000000
random_init = 0x952aaa76
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x0
top.t.the_sub_yes_inline_2 no_init 0x0
top.t.the_sub_no_inline_1 no_init 0x0
top.t.the_sub_no_inline_2 no_init 0x0
rand = 0xb3cf9302
rand = 0xf0acf3e4
rand = 0xca0ac74c
rand = 0x4eddfc2c
rand = 0x1919db69
x_assigned = 0x486aeb2d
Last rand = 0x2d118c9b
rand = 0xc31fbc3d
rand = 0xcbb440c9
rand = 0x030234c6
rand = 0xf53bab60
rand = 0xcf071500
x_assigned = 0x80742d9b
Last rand = 0xddacca56
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xe3e54aaa
rand = 0xe85acf2d
rand = 0x15e12c6a
rand = 0x0f7f28c0
rand = 0xe189c52a
x_assigned = 0x486aeb2d
Last rand = 0xf0700dbf
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xf89a1fb9
rand = 0x0577f875
rand = 0x7bc34037
rand = 0x2027e5c6
rand = 0xc57ff769
x_assigned = 0x80742d9b
Last rand = 0x37a9fa91
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xe3e54aaa
rand = 0xe85acf2d
rand = 0x15e12c6a
rand = 0x0f7f28c0
rand = 0xe189c52a
x_assigned = 0x486aeb2d
Last rand = 0xf0700dbf
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xf89a1fb9
rand = 0x0577f875
rand = 0x7bc34037
rand = 0x2027e5c6
rand = 0xc57ff769
x_assigned = 0x80742d9b
Last rand = 0x37a9fa91
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xe3e54aaa
rand = 0xe85acf2d
rand = 0x15e12c6a
rand = 0x0f7f28c0
rand = 0xe189c52a
x_assigned = 0x486aeb2d
Last rand = 0xf0700dbf
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xf89a1fb9
rand = 0x0577f875
rand = 0x7bc34037
rand = 0x2027e5c6
rand = 0xc57ff769
x_assigned = 0x80742d9b
Last rand = 0x37a9fa91
*-* All Finished *-*

View File

@ -1,17 +1,17 @@
uninitialized = 0xf5bbcbc0
uninitialized = 0xb108d062
x_assigned (initial) = 0x00000000
uninitialized2 = 0xa979eb54
big = 0xa20c93ac50d8c57d4c80949aa68e82775da6af98ce08f75dc6ccfad97b059a33
random_init = 0x952aaa76
top.t.the_sub_yes_inline_1 no_init 0x4a544f7798b83fc8
top.t.the_sub_yes_inline_2 no_init 0x19b7000ee0472c9
top.t.the_sub_no_inline_1 no_init 0x38121a34978975dd
top.t.the_sub_no_inline_2 no_init 0x9022c84ae0fa3cf6
rand = 0xe3e54aaa
rand = 0xe85acf2d
rand = 0x15e12c6a
rand = 0x0f7f28c0
rand = 0xe189c52a
x_assigned = 0x486aeb2d
Last rand = 0xf0700dbf
uninitialized2 = 0xca249856
big = 0x0d97b7afc0a2ac6784d0eaa74cd8feaf468cf05328c319f1a26fc1b219605edd
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x6f6ddbaeadd8dba4
top.t.the_sub_yes_inline_2 no_init 0xfdf89c0b44e7f5d8
top.t.the_sub_no_inline_1 no_init 0x76dc510f643e939
top.t.the_sub_no_inline_2 no_init 0x61a6ab3d0369cf60
rand = 0xf89a1fb9
rand = 0x0577f875
rand = 0x7bc34037
rand = 0x2027e5c6
rand = 0xc57ff769
x_assigned = 0x80742d9b
Last rand = 0x37a9fa91
*-* All Finished *-*

View File

@ -2,16 +2,16 @@ uninitialized = 0x00000000
x_assigned (initial) = 0x00000000
uninitialized2 = 0x00000000
big = 0x0000000000000000000000000000000000000000000000000000000000000000
random_init = 0x952aaa76
random_init = 0x65d066c8
top.t.the_sub_yes_inline_1 no_init 0x0
top.t.the_sub_yes_inline_2 no_init 0x0
top.t.the_sub_no_inline_1 no_init 0x0
top.t.the_sub_no_inline_2 no_init 0x0
rand = 0xe3e54aaa
rand = 0xe85acf2d
rand = 0x15e12c6a
rand = 0x0f7f28c0
rand = 0xe189c52a
x_assigned = 0x486aeb2d
Last rand = 0xf0700dbf
rand = 0xf89a1fb9
rand = 0x0577f875
rand = 0x7bc34037
rand = 0x2027e5c6
rand = 0xc57ff769
x_assigned = 0x80742d9b
Last rand = 0x37a9fa91
*-* All Finished *-*