diff --git a/include/verilated.cpp b/include/verilated.cpp index 9fb1ba055..cfec13cfd 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -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 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 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& state) VL_PURE { + const uint64_t s0 = state[0]; + return vl_rolt(s0 * 5, 7) * 9; +} + +static std::array +vl_rng_compute_new_state(const std::array& 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(&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; } diff --git a/include/verilated_types.h b/include/verilated_types.h index 74672c940..558485e48 100644 --- a/include/verilated_types.h +++ b/include/verilated_types.h @@ -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; diff --git a/test_regress/t/t_constraint_unsat.out b/test_regress/t/t_constraint_unsat.out index 67cfc6c0b..3cc41487e 100644 --- a/test_regress/t/t_constraint_unsat.out +++ b/test_regress/t/t_constraint_unsat.out @@ -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. diff --git a/test_regress/t/t_constraint_unsat_protect_ids.out b/test_regress/t/t_constraint_unsat_protect_ids.out index 6fe852ed4..8677a573f 100644 --- a/test_regress/t/t_constraint_unsat_protect_ids.out +++ b/test_regress/t/t_constraint_unsat_protect_ids.out @@ -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. diff --git a/test_regress/t/t_runflag_seed.py b/test_regress/t/t_runflag_seed.py index 6d49fbcd2..8b90c3d9f 100755 --- a/test_regress/t/t_runflag_seed.py +++ b/test_regress/t/t_runflag_seed.py @@ -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() diff --git a/test_regress/t/t_scoped_rand_is_random.py b/test_regress/t/t_scoped_rand_is_random.py new file mode 100755 index 000000000..a26508e96 --- /dev/null +++ b/test_regress/t/t_scoped_rand_is_random.py @@ -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() diff --git a/test_regress/t/t_scoped_rand_is_random.v b/test_regress/t/t_scoped_rand_is_random.v new file mode 100644 index 000000000..6dd761b58 --- /dev/null +++ b/test_regress/t/t_scoped_rand_is_random.v @@ -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 diff --git a/test_regress/t/t_x_rand_mt_stability.out b/test_regress/t/t_x_rand_mt_stability.out index 0eecc36cb..422585c0b 100644 --- a/test_regress/t/t_x_rand_mt_stability.out +++ b/test_regress/t/t_x_rand_mt_stability.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_mt_stability_add.out b/test_regress/t/t_x_rand_mt_stability_add.out index 0eecc36cb..422585c0b 100644 --- a/test_regress/t/t_x_rand_mt_stability_add.out +++ b/test_regress/t/t_x_rand_mt_stability_add.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_mt_stability_add_trace.out b/test_regress/t/t_x_rand_mt_stability_add_trace.out index 0eecc36cb..422585c0b 100644 --- a/test_regress/t/t_x_rand_mt_stability_add_trace.out +++ b/test_regress/t/t_x_rand_mt_stability_add_trace.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_mt_stability_trace.out b/test_regress/t/t_x_rand_mt_stability_trace.out index 0eecc36cb..422585c0b 100644 --- a/test_regress/t/t_x_rand_mt_stability_trace.out +++ b/test_regress/t/t_x_rand_mt_stability_trace.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_mt_stability_zeros.out b/test_regress/t/t_x_rand_mt_stability_zeros.out index 573a7650c..635f134ab 100644 --- a/test_regress/t/t_x_rand_mt_stability_zeros.out +++ b/test_regress/t/t_x_rand_mt_stability_zeros.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_stability.out b/test_regress/t/t_x_rand_stability.out index 6a22ff04e..65d07b271 100644 --- a/test_regress/t/t_x_rand_stability.out +++ b/test_regress/t/t_x_rand_stability.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_stability_add.out b/test_regress/t/t_x_rand_stability_add.out index 6a22ff04e..65d07b271 100644 --- a/test_regress/t/t_x_rand_stability_add.out +++ b/test_regress/t/t_x_rand_stability_add.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_stability_add_trace.out b/test_regress/t/t_x_rand_stability_add_trace.out index 6a22ff04e..65d07b271 100644 --- a/test_regress/t/t_x_rand_stability_add_trace.out +++ b/test_regress/t/t_x_rand_stability_add_trace.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_stability_trace.out b/test_regress/t/t_x_rand_stability_trace.out index 6a22ff04e..65d07b271 100644 --- a/test_regress/t/t_x_rand_stability_trace.out +++ b/test_regress/t/t_x_rand_stability_trace.out @@ -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 *-* diff --git a/test_regress/t/t_x_rand_stability_zeros.out b/test_regress/t/t_x_rand_stability_zeros.out index fe1f4ba0a..f9e43c0b3 100644 --- a/test_regress/t/t_x_rand_stability_zeros.out +++ b/test_regress/t/t_x_rand_stability_zeros.out @@ -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 *-*