|
|
3284aa443f
|
fix(kg): implement t_hat computation and pk/sk output in mlkem_top
- Add s_hat0_reg/s_hat1_reg for s_hat capture during CBD→NTT output
- Add tmul_accum register for poly_mul result accumulation
- Implement S_KG_TMUL_MUL_LD: load A+s coefficients into poly_mul
- Implement S_KG_TMUL_MUL_WAIT/ACCUM: accumulate A·s products
- Implement S_KG_TMUL_ADD_E: add e_hat to accumulated sum
- Assign pk_o_r = {t_hat1, t_hat0}_reg and sk_o_r = {s_hat1, s_hat0}_reg
- Shift Encaps/Decaps FSM states by +3
KeyGen: 5/5 vectors complete in ~47K cycles/op
|
2026-06-27 01:38:38 +08:00 |
|
|
|
03b4707879
|
feat(top): add shared keccak variants, arbiter, and mlkem_top integration
- sha3_chain_top_shared.v: external keccak_core interface (6 ports)
- sample_cbd_sync_shared.v: shared keccak variant (6 ports)
- sample_ntt_sync_shared.v: shared keccak variant (6 ports)
- keccak_arbiter.v: fixed-priority arbiter for 3 keccak consumers
- mlkem_top.v: 1403-line monolithic FSM with KeyGen/Encaps/Decaps
Architecture:
keccak_arbiter → keccak_core → keccak_round (shared)
sha3_chain_top_shared (consumer 0)
sample_cbd_sync_shared (consumer 1)
sample_ntt_sync_shared (consumer 2)
sha3_top (separate, own keccak_core)
rng_sync, ntt_core, poly_arith, poly_mul, comp_decomp, mod_add
sd_bram for polynomial storage
All original RTL files preserved unchanged.
|
2026-06-26 03:35:37 +08:00 |
|