feat(sha3): multi-block SHA3-256 absorb for H(ek); KeyGen golden vectors

Stage 0+1 of mlkem_top KeyGen integration:
- sha3_top: add multi-block SHA3-256 absorb FSM (mb_en/mb_block_i/mb_valid_i/
  mb_last_i/mb_ready_o). Caller pre-pads final block; module does pure absorb
  loop (state^=block; Keccak-p). Single-block G/H/J paths bit-identical when
  mb_en=0. Sticky digest register holds output until consumer acks.
- tb_sha3_mb_xsim: self-checking TB streams 800B ek (6 blocks) -> H(ek),
  verified == hashlib.sha3_256. Proper valid/ready handshake (no force).
- Existing G/H/J TBs (xsim + Verilator) tie off mb_* ports; both frameworks
  regress clean (Verilator 25/25, XSIM G/H/J + keccak + 7-vec + multiblock).
- test_framework/modules/mlkem_keygen/golden: full 256-coeff per-stage
  intermediates (rho/sigma, A_hat, s/e, s_hat/e_hat, t_hat, ek, dk_pke) for
  KAT count=0..4, dumped by ml-kem-r and self-verified against NIST KAT.
This commit is contained in:
2026-06-27 23:37:23 +08:00
parent 4997657d7e
commit 106b2925a8
97 changed files with 18186 additions and 24 deletions

View File

@@ -0,0 +1,6 @@
537be01216c3a897d6923257af0713f9291cc342993653d55120a2df51673d65baf45fc64c24f26614842c8793a2b9b7307dc5eacb82e0877c091f738748194d78e1beacfbf69960c21c77c581e7bcb952ab54536298dc6836195672bc9043571d2897da5ec8f47af5f5006b872857d3125360bcb0ec6338f91931489273f468e17e1d830001b780
02859394b52a4cda4d3910a3548462a50fc8926778b2877c50832dd243654015beb34328e6365aa6803769743c00eacfb08d5258e83bcc101d5ca99de98897e6d8a85a446009f85b92aa57f23150bc211731e486b20c63c83d8b61dbb4063860e525156b692f2848439296c629929e5319391cbac5099d3bb0c4b08c0a20322abf46d29f3208cf35
bd65bd35a545a1865862b4d1c1b86c6011c642ac120c32bd7faa4292383e21f2212ff1587c78710cbb5ac948718a9cd648a7fb29b397c88987ca299070f60a04e62a9de92650426993d5008a239c2cb4ca77873ac5a822c288cd08ea85075037bb666265b15e8589b19be5d23e24aa09c44e1ad363b7fc101a1ae854f3072706d9867110bcd3d657
408e5bae7f3143a020ef13c8d065c2cd60868c51b7390e5c314c731796028925591a5ee636af48417d6686198910a8751a32e102cfe192c72c6129ca5fc1268fc006203bc32ca00cf9162a3d85b76841f112a0124078e148aad5c33676faa9760aa3a722ad2bd13c17ae9a229311f1da5c50ecbba32098752532001704e9871ad657160c336b990d
3b8c5da23a8f510e7e28cc0180136829e04664534d446a3d49d1bc9216c95c2153b2c3608c1886cb39164746079c4a8243fbc607e9cbc0d5440278b9348d22ba80cdc036309a6f4e83a4bca35c27158a00d246ced1a380c967739aad3a4849023c946523ef7b844c1539086fb2894610a95d7519551ad50ff3be091340496ba64f056c1df7ec6e54
8000000000000000000000000000000615f74355ca862c3cdf3dab780c35cf24b88bf144706090a1c17e41205f9f13794c1a9033ace032aa0f0c85ff94c8d3c9bca46fd7461ff5dab8403a2af8b1c242f08be4763fd5d68d198e9016b80f1c77505b2b56480c37bb4cc084f08993c2cdb2771f266b33353c265af09a027649489d81f4595cc3b395