Verilator --savable boot-prefix sharing across seeds: seed must enter after the save point
To start many seeded runs from one saved post-boot state in Verilator (--savable, VerilatedSave/Restore), the seed cannot come from $value$plusargs in an initial block: initial blocks do not re-run after a restore, so every plusarg is frozen at the value from the boot run, and an LFSR seeded at time 0 that steps during boot carries the seed into the saved state. What worked (bit-identical outputs and checkpoint files over 512 seed pairs): drive the seed through a top-level input port set by the C++ harness after restore, and load it into the TB's random state only at a TB-defined event (e.g. a START MMIO write), saving one cycle before that event via a combinational 'prestart' output. If the harness builds per-run artifacts from accumulated change lists (waveform tap buffers), serialize those buffers into the same save file (VerilatedSerialize::write/read raw arrays) or chunks spanning the save point cannot be rebuilt. The gain is only the boot fraction of the run, so measure that first; in a small RISC-V TB it was 1.5% of cycles and saved ~1% CPU.