Measured results. Every number on this page is a wall-clock measurement of a real run on the named hardware, with functional output checked against a reference simulator.
ldx accelerates RTL simulation two ways. First, compile the design: the
DUT is synthesized (yosys) into a single-cycle native state machine instead of being
interpreted event-by-event — available standalone or hot-swapped into a running
nvc simulation (--accel). Second,
make the simulation resident on an FPGA processor array: a mesh of RISC-V
cores with nearest-neighbor mailbox routing runs compiled design partitions in parallel,
with the host CPU (or, in progress, the array itself) running the testbench.
Yuri Panchul's challenge testcase: a_plus_b_using_wrapped_fifos (three wrapped
FIFOs with valid/ready feedback), 10 M transfers, functionally correct, target
< 10 s on the ZCU104 board. All rows below are measured; correctness is a transfer-count +
data-checksum match against the iverilog/vvp golden (checksum 1280000000).
| Simulator / method | Hardware | Time (10M transfers) | Correct |
|---|---|---|---|
| iverilog (vvp) | x86 desktop | 362 s | ✓ (golden) |
| iverilog (vvp), Yuri's run | Mac mini M4 | 105 s | reported |
| Verilator | x86 desktop | 14.8 s | ✓ |
| yosys cxxrtl, g++ ‑O3 | x86 desktop | 1.87 s | ✓ |
| ldx compiled state machine | x86 desktop | 0.42 s | ✓ |
| ldx compiled state machine | ZCU104 Cortex-A53 (on-board) | 1.36 s | ✓ |
The on-board number is 1.36 s — 7.4× under the 10 s target (7.35 M transfers/s on one A53 core), ~77× faster than the M4 vvp baseline and ~266× faster than vvp on the x86 desktop.
The mailbox array (VexRiscv cores, URAM private memory, hardware XY wormhole routing, BRAM link FIFOs) is built, placed, and measured on the ZCU104 — timing closed at 200 MHz, 61% LUT. Measured on the board:
| Workload | Measured | Notes |
|---|---|---|
| xorshift32 DUT, per core | 9.96 M evals/s | compiled state machine, free-running |
| xorshift32, 64 cores aggregate | 637 M evals/s | = 2.47× one x86 thread (258 M/s), 64-way parallel |
| SHA-256, single & multi-block | 1.8 Kblocks/s/core | digests exactly match FIPS vectors on-board |
| All-to-one gather, 63 senders | 63 / 63 received | hardware routing, zero relay software |
What this is good for — and honestly, what it isn't: the array wins on throughput (many independent simulations at once — regression farms, parameter sweeps) and on large partitioned designs. A single small design does not parallelize: our own benchmark of a 5×5 array against Verilator on one small DUT measured 0.41× — slower than Verilator on a laptop. Per-core speed came from real engineering, each step measured: compiler flags, 1-cycle fetch, and a barrel shifter took the xorshift kernel from 235 to 18 cycles/eval (13×). Known cost: URAM private memory adds ~2× latency on data-heavy workloads versus the cycle-accurate simulation model — FPGA numbers are the ones quoted.
Where this beats a CPU as designs scale — and where it honestly doesn't — is charted with measured anchor points and labeled model lines on the scaling outlook page, including how much of a full IC fits at each array size.
--accel — compiled DUT inside a live simulationThe same compiled-state-machine engine, hot-swapped into a running nvc simulation so the testbench stays fully standard. Measured, output-checked:
| Design | Per-cycle work | Platform | interp | --accel | speedup |
|---|---|---|---|---|---|
| mix (3× 32-bit multipliers) | heavy | x86 | 30 s | 4 s | 7.5× |
| mix | heavy | ZCU104 A53 | 420 s | 48 s | 8.75× |
| a_plus_b FIFOs (Yuri), 200k xfer | light | ZCU104 A53 | 364 s | 214 s | 1.70× |
The pattern is the finding: speedup tracks per-cycle combinational weight. Compute-heavy
designs gain 7–9×; a light FIFO design gains 1–2× because testbench scheduling, which
--accel deliberately leaves untouched, dominates.
| Target | Toolchain | Status |
|---|---|---|
| ZCU104 (Zynq US+, xczu7ev) | Vivado | runs — 8×8 @ 200 MHz, SHA-256/xorshift measured on silicon (one known tool-specific boot pathology on a newer workload, documented, reproduced nowhere else) |
| DE2i-150 (Cyclone IV GX) | Quartus | runs — ~59 MHz |
| SoCKit (Cyclone V SX) | Quartus | runs — first-attempt silicon pass (2026-07-14); timing analysis puts the ceiling at 122 MHz |
| Verilator model | — | bit-exact vs silicon on the checked workloads |