# assertion-vacuity — original runnable example Original SystemVerilog and C++ code: MIT. Original observed results: CC BY 4.0. No simulator runtime library or executable is redistributed. Tested tools: Icarus Verilog 13.0, upstream release commit `dfeee909ed9f20b4870dd93423156c0170c0e1ff`; Verilator 5.052, upstream release commit `ea338be98e1e838d3518809ce8899f85a009963c`. The installed release executables are hashed in the run records. Tool source commits identify upstream release tags; the binary distributions were not rebuilt here. macOS 27.0.1, arm64, Apple clang 21.0.0 were used. Run from this source directory in a build location without spaces. ## Verilator build ```sh verilator --binary --timing --assert --coverage-user --language 1800-2012 -Wno-fatal --quiet-build --quiet-stats --quiet-exit --top-module tb --Mdir obj example.sv ./obj/Vtb +verilator+quiet +MODE=0 +verilator+coverage+file+coverage-0.dat ./obj/Vtb +verilator+quiet +MODE=1 +verilator+coverage+file+coverage-1.dat ./obj/Vtb +verilator+quiet +MODE=2 +verilator+coverage+file+coverage-2.dat ./obj/Vtb +verilator+quiet +MODE=3 +verilator+coverage+file+coverage-3.dat ./obj/Vtb +verilator+quiet +MODE=4 +verilator+coverage+file+coverage-4.dat ``` ## Icarus build ```sh iverilog -g2012 -gassertions -Wall -s tb -o run.vvp example.sv ``` Relocated Icarus distributions may additionally require `-B "${ICARUS_LIB}"`. The record uses that binding for its isolated installation; no local installation path is published. Icarus 13.0 rejects the concurrent assertions; do not disable assertions and call the result a pass. Verilator modes 0–4 respectively show triggered pass, triggered reply failure, no trigger, reset cancellation and sampled-value failure. Cover-property counts are recorded separately from the independent request counter. Process success means the expected demonstration outcome occurred, including deliberate failures. ## Records and scope Public logs: `../../measurements/printed-hdl/P04-icarus.json` and `../../measurements/printed-hdl/P04-verilator.json`. They contain exact commands, source hashes, UTC run times, return codes, literal checker output and diagnostics. Environment paths are replaced with named tokens. No generated executables, objects or third-party implementation headers belong in the published data folder.