Final bank promoted to sd_bram (the busiest: 5 read sites, 2 write sites). Read port phase-muxed: ST_N load / ST_M load (pm_b s_hat[j]) vs accumulate (e_hat, selected by m_loading) / ST_E dk-half / dbg. Write port combinational: ST_C CBD store vs ST_N NTT writeback (disjoint states). All explicit consumer read registers (n_rd_data, pm_b_rd, m_eacc_rd, e_se_rd) collapsed into the sd_bram internal read register; m_acc_src and e_rd_coeff now select between two registered sd_bram outputs (same 1-cycle latency). mlkem_top now contains ZERO behavioural RAM arrays: all coefficient storage is 3 sd_bram banks (a/se/t) + ek/dkp byte buffers = 5 sd_bram instances total, each inferring BRAM (ASIC: compiled SRAM). 11/11 KAT PASS, byte-exact.
47 KiB
47 KiB