This repository has been archived on 2026-08-21 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
975903000e8c1af5045cc85a51748d90f1a2b593
Double-buffer poly_mul_sync so the next MAC term's 256-cycle load overlaps the current term's accumulate. Decouple the top-level MAC load index (u_ldj) from the accumulate index (u_j) in the shared ENC_U/ENC_V/DEC_W engine; load reads bank_a/bank_se while accumulate reads bank_t (disjoint ports, no conflict). Accumulate stays strictly serial (psum order-dependent); only the load is hidden. Verified byte-exact vs NIST KAT in ~/Dev/mlkem: Encaps 9/9, Decaps 9/9 (incl. implicit-reject + DECOMP), KeyGen all, hello_world end-to-end. ENC_U 5585->5073, ENC_V 2793->2537 (K=2). Larger relative win at K=4 (K^2 terms). poly_mul contract unchanged (standalone TB 11/11).
Description
No description provided
Languages
Verilog
46.5%
C
27.8%
Assembly
20.5%
SystemVerilog
3.3%
Python
0.7%
Other
1.2%