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 @@
dee78922bb8da2f4764dca45f8ea4c1f530a1c571d3ad1924b589698cb2719e069fd943c1452c5d168b2b357b265831c019cb3557a0bf7187e4d108bf770c74db40389cc718f3bc11ce3aba84366ab245194b941f81b7ae702419bb98d73ba003783306c7b3a3677a543a0100c3175e8c020ca266512909c3550c4f65c0ea3e24a47237d9a4a0b5ae588f983311faa36e891af8ea1b308c83179246154c765ac5b5a15456e193308002837d14354e066a34a4409afbb15085aadc9e22b8db5583d45b0a4ac72474a2ab94b792e531ab0cb882c13a4139a71ffa3783b537178f34e111b6c3f120a76d4cdcec461843035acd285ed627d8bd2b0b997ccceb4adae3615a73bba0a7c7bb9b13358bb51ff8a574d86b5000272cd270a0a1b24bb917506701c2f441fc5b79dd451cb3cacc740127bd411604bdac464da1a2f83918c5b2fb6e5284c972b93357a837828b1132632bb6f7bfbbec3d947bd403d86990066db6553722434c7c0e3992f009bb238f7a6b3e5251eda943a7703fba289aa2053a857796c2cb945494c0ba791a9e3cbfa800d8988c8121997d975b3d03595add64a3eacb8ba36a4d8b3bfdc11b7d56239087c90f352c0eec40857f089ccfa7c9a683a1de3cd8ff28b22153dde231e5f74805d683eb8c346ba16c7fe68064b2059c8738e5ac19b64d4343f5c9d8bf9780302b0676c202a21292cc15fc1589a69838ad1ea3d0c3706f8e1b011f61299a56ec2515051fb94734b308af3c35e45abfadc128fe69838aa37080514d6c3748c916bd655080a1035ff1a763e450b56864cc232afee53919ff889a820a7a6558631b88f7318c033800f307c19b2d0a8b65882d8770979a5701ac602f71b72a26b82525aa67d77c75eb6871dc019b465583a250db4704906187e8dfb3b70726988f9c52c12266c6391d4926cb79978007ca46ef60882806ffd59c64ed70333989aac5186990440b89c3cd1363be404706dbb63a5a007a0fac261a0288f916faf0aa4e944552f10801a3a5dde263398015cc35227bd1711356251aa935a89bc2e3d2c08e1c9a8c1e4416f303bb73b314858ca4c210c959283fc865b027768c5d6047fd36dbcbc4edf3ea5cc6a50cb052bcd31