A study by Haridhayal Maheswaran, Samuel Kennedy and Basel Halak reports a corrected RISC-V instruction-set extension running Classic McEliece encapsulation and decapsulation on a DE1-SoC board with an Intel Cyclone V FPGA. The researchers’ 87.4% and 86.1% cycle reductions, however, came from matched asynchronous-memory simulations, not the FPGA runs. The paper was published in Discover Computing on October 26, 2026; the full study describes results from reduced parameters.

Classic McEliece is a code-based post-quantum key-encapsulation mechanism, or KEM. The FPGA ran its operations with host-generated keys. That makes this a hardware demonstration of selected operations, not a complete on-device key-generation result.

In this article

What the FPGA demonstration ran

The researchers extended a single-cycle RV32I processor with tightly coupled custom instructions for Classic McEliece. The design was fitted to a DE1-SoC with an Intel Cyclone V 5CSEMA5F31C6 FPGA, using SYS_T=2, SYS_N=48 and GFBITS=12. Those reduced parameters were chosen for architectural evaluation, not as production-scale performance settings.

The full design used 10,531 adaptive logic modules (ALMs). Its fitted maximum frequency was 118.89 MHz at the slow 85 °C corner, while the processor and accelerators ran at the board’s 5 MHz divided clock. The fitted maximum is therefore not the system’s reported operating clock.

What the cycle counts measure

The large percentage reductions compare the instruction-set extension with an unaccelerated baseline in matched asynchronous-memory simulation. The FPGA implementation used synchronous memory and has separate operation counts. The paper reports these results for different run conditions and operation scopes:

Run and memory setupOperationCycles and reported reductionScope and condition
Asynchronous-memory simulationEncapsulation operation1,010 cycles; 87.4% fewerMatched simulation against the unaccelerated baseline
Asynchronous-memory simulationDecapsulation1,708,050 cycles; 86.1% fewerMatched simulation against the unaccelerated baseline
Synchronous-memory FPGAEncapsulation operation1,820 cyclesFPGA operation count
Synchronous-memory FPGAComplete encapsulation, including SHA-25613,585 cyclesComplete-operation count
Synchronous-memory FPGADecapsulation3,654,113 cyclesFPGA run with host-generated keys

The two FPGA encapsulation figures count different scopes: 1,820 cycles for the encapsulation operation and 13,585 cycles for complete encapsulation including SHA-256. Neither is the asynchronous-simulation comparison behind the percentage reductions. Memory behavior also affects the counts: in the study’s asynchronous configuration, encapsulation took 1,010 cycles and decapsulation 1,708,050 cycles.

Which cryptographic stages benefit from custom instructions

The implementation retained a Chien search over the support list, fixed-size Gaussian elimination for generating a minimal polynomial, and streaming reduction to systematic form during public-key generation. These mappings target specific computational stages rather than accelerating the whole algorithm uniformly.

Integrated profiling also exposed a bottleneck: support generation, driven by a Bénes permutation network, accounted for more than 99% of decapsulation cycles in both reported memory regimes after decoder acceleration. A DMA-assisted composeinv candidate delivered only a 1.0–1.1× improvement in the integrated controlbits stage. Recursive sorting and transfer and startup overhead outweighed the candidate’s benefit, so the researchers rejected that mapping.

Key generation and production-scale memory

The FPGA runs used keys generated by a host computer. Complete key generation on the device was not demonstrated: the full simulated path exceeded a 300-million-cycle budget while controlbits remained in software.

The paper’s analysis of the mceliece348864 parameter set illustrates a separate scaling constraint. It gives a 334,848-byte packed systematic-form matrix and a 261,120-byte public key. The target FPGA has about 496 KiB of block memory. The matrix can fit by itself in principle, but the matrix, public key and processor memories do not fit together. The researchers identify banked or external memory and streaming the right-hand matrix as redesign options; they do not extrapolate performance to this parameter set.

What the tests and power estimates cover

Component-level checks used ModelSim and software reference results; the finite-field inverse test covered all 4,096 field elements. System-level tests passed one reference known-answer test and four directed weight-two error patterns. There are 1,128 such patterns in the tested n=48, t=2 configuration, so the system checks were not exhaustive or statistical.

For the fitted full build at 5 MHz, Quartus PowerPlay estimated total power at 458.34 mW. The researchers estimated about 731 ms and 335 mJ for a decapsulation, with roughly 90% of the estimated energy attributed to static leakage. Those figures are estimates for this Cyclone V build and its activity model.

The researchers performed no side-channel experiment. They also note that fixed instruction latency alone does not establish constant-time software or constant-power hardware.