# axi-handshake-deadlocks — 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 ``` ## Icarus build ```sh iverilog -g2012 -gassertions -Wall -s tb -o run.vvp example.sv vvp run.vvp +MODE=0 vvp run.vvp +MODE=1 vvp run.vvp +MODE=2 vvp run.vvp +MODE=3 ``` Relocated Icarus distributions may additionally require `-B "${ICARUS_LIB}"`. The record uses that binding for its isolated installation; no local installation path is published. Both tools ran modes 0–3: legal backpressure, mutual waiting, ID truncation and outstanding-capacity mismatch. The model prints every sampled trace row. Process success means the deliberately chosen scenario was detected as expected; it does not label the error scenarios legal. No full AXI implementation or formal liveness proof is provided. ## Records and scope Public logs: `../../measurements/printed-hdl/P14-icarus.json` and `../../measurements/printed-hdl/P14-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.