From 189411e8d1d458d46f44e0da86371b73e31e6100 Mon Sep 17 00:00:00 2001 From: FallenSigh Date: Mon, 29 Jun 2026 20:37:03 +0800 Subject: [PATCH] feat(dec): Decaps D5 - (K',r')=G(m'||h) + K-bar=J(z||c) FO transform hash derivations (FIPS 203 Alg 17 steps 6-7), reusing the shared SHA3 core: - ST_DEC_G: (K',r') = G(m'||h) via the single-block SHA3-512 path (mode 11, dec_g_data = {hek_r, mprime_r}; h was captured into hek_r at D0 load). K' -> ss_r (candidate shared secret, ss_o), r' -> r_r (PRF seed for D6). - ST_DEC_J: K-bar = J(z||c) via the multi-block absorb port (mb_en=1), modeled on the H(ek) machine: assemble 136-byte blocks, byte source is z_r (g<32), c_in_bram (32<=g kbar_r (dbg_kbar_o). - FSM: MENC -> G -> J -> DONE. Bring-up note: c_in_bram read through cin_rd_addr_r (a register) plus the registered BRAM is 2-cycle latency, but the assemble/writeback pipeline only budgets 1 -- so the first c byte at the z->c boundary read X and poisoned the whole sponge. Fixed by driving cin_rd_addr combinationally from dj_c_idx during ST_DEC_J (dropping the register stage) so data lands the next cycle. Verified: dec D5 K=2/3/4 all cases PASS (ct 768/1088/1568B -> 6/9/12 J blocks); K' matches the KAT shared secret for valid ciphertexts; KeyGen + Encaps unregressed. --- .claude/plans/decaps_plan.md | 2 +- sync_rtl/top/TB/tb_mlkem_dec_katK_xsim.v | 54 +- .../TB/vectors/decgold/dc_k2_c0_cprime.hex | 768 ++++++++ .../top/TB/vectors/decgold/dc_k2_c0_kbar.hex | 32 + .../TB/vectors/decgold/dc_k2_c0_kprime.hex | 32 + .../TB/vectors/decgold/dc_k2_c0_rprime.hex | 32 + .../TB/vectors/decgold/dc_k2_c1_cprime.hex | 768 ++++++++ .../top/TB/vectors/decgold/dc_k2_c1_kbar.hex | 32 + .../TB/vectors/decgold/dc_k2_c1_kprime.hex | 32 + .../TB/vectors/decgold/dc_k2_c1_rprime.hex | 32 + .../TB/vectors/decgold/dc_k2_c2_cprime.hex | 768 ++++++++ .../top/TB/vectors/decgold/dc_k2_c2_kbar.hex | 32 + .../TB/vectors/decgold/dc_k2_c2_kprime.hex | 32 + .../TB/vectors/decgold/dc_k2_c2_rprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c0_cprime.hex | 1088 ++++++++++++ .../top/TB/vectors/decgold/dc_k3_c0_kbar.hex | 32 + .../TB/vectors/decgold/dc_k3_c0_kprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c0_rprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c1_cprime.hex | 1088 ++++++++++++ .../top/TB/vectors/decgold/dc_k3_c1_kbar.hex | 32 + .../TB/vectors/decgold/dc_k3_c1_kprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c1_rprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c2_cprime.hex | 1088 ++++++++++++ .../top/TB/vectors/decgold/dc_k3_c2_kbar.hex | 32 + .../TB/vectors/decgold/dc_k3_c2_kprime.hex | 32 + .../TB/vectors/decgold/dc_k3_c2_rprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c0_cprime.hex | 1568 +++++++++++++++++ .../top/TB/vectors/decgold/dc_k4_c0_kbar.hex | 32 + .../TB/vectors/decgold/dc_k4_c0_kprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c0_rprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c1_cprime.hex | 1568 +++++++++++++++++ .../top/TB/vectors/decgold/dc_k4_c1_kbar.hex | 32 + .../TB/vectors/decgold/dc_k4_c1_kprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c1_rprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c2_cprime.hex | 1568 +++++++++++++++++ .../top/TB/vectors/decgold/dc_k4_c2_kbar.hex | 32 + .../TB/vectors/decgold/dc_k4_c2_kprime.hex | 32 + .../TB/vectors/decgold/dc_k4_c2_rprime.hex | 32 + sync_rtl/top/mlkem_top.v | 181 +- 39 files changed, 11352 insertions(+), 21 deletions(-) create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c0_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c0_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c1_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c1_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c2_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k2_c2_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c0_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c0_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c1_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c1_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c2_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k3_c2_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c0_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c0_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c1_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c1_rprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c2_cprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kbar.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kprime.hex create mode 100644 sync_rtl/top/TB/vectors/decgold/dc_k4_c2_rprime.hex diff --git a/.claude/plans/decaps_plan.md b/.claude/plans/decaps_plan.md index fc6c8ea..2029012 100644 --- a/.claude/plans/decaps_plan.md +++ b/.claude/plans/decaps_plan.md @@ -66,7 +66,7 @@ - **D2 — s_hat 解码 + u_hat = NTT(u')** ✅:复用 Encaps TDEC 机(ST_DEC_SDEC),字节源从 ek 切到 dkp_bram(td_byte mux + dkp_rd_addr 在 SDEC 走 td_ekaddr),s_hat 写 bank_a slot j*K(与 t_hat 同布局,D3 MAC 可直接读)。复用前向 NTT 机(ST_DEC_NTT,n_slot_max=k_r)对 bank_se rel 0..K-1 的 u' 原地变换成 u_hat。**踩坑:NTT 原地覆盖 u' → verify_d1 复查 u' 必失败;改为 verify_d1 只查 v'(bank_t 未动),u' 正确性由 u_hat==NTT(u') golden 传递性证明。** K=2/3/4 全过,KG/Enc 回归通过。 - **D3 — w = v' − INTT(Σ s∘u_hat)** ✅:复用 Encaps V 机(ST_DEC_W,u_row=0 单多项式)。MAC s_hat[j](bank_a slot j*K)∘ u_hat[j](bank_se rel j)→psum bank_t[UPSUM],与 V MAC 完全同址,免改。INTT 原地。SUB:w = v' − psum,(v'−psum) 负则 +Q。**关键:v'/psum 读口冲突 → D1 把 v' 落到 bank_a slot DEC_VASLOT=1(s_hat 在 j*K,slot 1 恒空 K≥2),SUB 时 psum(bank_t)+v'(bank_a)并行读,正如 V-ADD 并读 psum+e2。** K=2/3/4 w 全过。 - **D4 — m' = byteEncode₁(Compress₁(w))** ✅:ST_DEC_MENC,逐系数读 bank_t[UPSUM] 的 w,Compress₁(w)=1 iff 832 ss_o + $sformat(fn, "sync_rtl/top/TB/vectors/decgold/dc_k%0d_c%0d_kprime.hex", KP, casenum); + $readmemh(fn, kp_b); + be = 0; + for (j = 0; j < 32; j = j + 1) + if (ss_o[8*j +: 8] !== kp_b[j]) begin + if (be < 4) $display(" K'[%0d] got=%02x exp=%02x", j, ss_o[8*j +: 8], kp_b[j]); + be = be + 1; + end + if (be == 0) $display(" PASS: K' == golden (32 bytes)"); + else $display(" FAIL: K' %0d byte mismatches", be); + errors = errors + be; + // r' = G(m'||h) high half -> dbg_r_o + $sformat(fn, "sync_rtl/top/TB/vectors/decgold/dc_k%0d_c%0d_rprime.hex", KP, casenum); + $readmemh(fn, rp_b); + be = 0; + for (j = 0; j < 32; j = j + 1) + if (dbg_r_o[8*j +: 8] !== rp_b[j]) begin + if (be < 4) $display(" r'[%0d] got=%02x exp=%02x", j, dbg_r_o[8*j +: 8], rp_b[j]); + be = be + 1; + end + if (be == 0) $display(" PASS: r' == golden (32 bytes)"); + else $display(" FAIL: r' %0d byte mismatches", be); + errors = errors + be; + // K-bar = J(z||c) -> dbg_kbar_o + $sformat(fn, "sync_rtl/top/TB/vectors/decgold/dc_k%0d_c%0d_kbar.hex", KP, casenum); + $readmemh(fn, kb_b); + be = 0; + for (j = 0; j < 32; j = j + 1) + if (dbg_kbar_o[8*j +: 8] !== kb_b[j]) begin + if (be < 4) $display(" K-bar[%0d] got=%02x exp=%02x", j, dbg_kbar_o[8*j +: 8], kb_b[j]); + be = be + 1; + end + if (be == 0) $display(" PASS: K-bar == golden (32 bytes)"); + else $display(" FAIL: K-bar %0d byte mismatches", be); + errors = errors + be; + end + endtask endmodule diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_cprime.hex new file mode 100644 index 0000000..0059d6c --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_cprime.hex @@ -0,0 +1,768 @@ +91 +7e +59 +d1 +e1 +82 +a2 +96 +48 +a6 +19 +55 +a1 +54 +b3 +04 +a8 +42 +f4 +58 +eb +a5 +93 +f3 +06 +5f +b7 +d7 +44 +fb +a2 +4f +a3 +a0 +d5 +38 +85 +4e +32 +84 +4d +b2 +48 +d4 +81 +00 +c3 +89 +c4 +c4 +b3 +ca +6c +23 +4f +2f +61 +a6 +79 +32 +ae +ee +80 +8d +bf +e9 +8d +89 +6d +1e +96 +68 +82 +09 +65 +c6 +34 +3b +bb +4a +4d +e6 +4b +7a +99 +fb +53 +b5 +26 +4e +31 +99 +d5 +87 +ff +a5 +e0 +47 +9f +6b +73 +86 +b2 +3c +b9 +c2 +43 +fa +6f +54 +57 +fc +97 +db +c9 +6d +cc +03 +9b +d6 +c4 +e7 +e8 +5a +90 +b5 +c5 +23 +24 +16 +43 +4e +a9 +42 +cc +71 +13 +4b +b9 +a2 +f4 +99 +1e +05 +95 +e3 +48 +7f +ea +ba +c4 +79 +ca +b9 +51 +0d +57 +b8 +62 +50 +ee +7c +96 +a6 +7a +9f +2c +61 +21 +f7 +da +a0 +2c +5c +fa +3b +23 +b0 +c7 +32 +c2 +b1 +56 +94 +e1 +cc +ba +c8 +2b +78 +7c +f2 +11 +8d +08 +42 +5c +bb +a1 +21 +88 +22 +17 +94 +0c +89 +4c +be +47 +aa +e2 +54 +1f +5c +6e +0b +d1 +ba +ab +31 +fd +2b +2e +cb +34 +b9 +e6 +93 +f6 +fc +0f +de +ea +90 +67 +16 +d0 +88 +18 +f5 +1d +f0 +c4 +69 +40 +29 +e8 +c3 +23 +4b +e0 +b6 +24 +71 +b2 +76 +9d +9a +c4 +ce +b9 +47 +60 +23 +80 +f3 +a4 +97 +b2 +a0 +1f +f7 +b8 +74 +6c +1c +7a +e8 +19 +83 +e0 +16 +bd +65 +c7 +cd +17 +62 +c1 +91 +85 +7e +41 +c2 +32 +19 +81 +f6 +c7 +aa +8d +7a +fa +aa +9f +a0 +b5 +57 +ec +1e +c1 +28 +5f +8b +4d +6c +78 +8a +ff +15 +9e +a5 +86 +2e +81 +4d +08 +25 +c8 +83 +4b +7c +a4 +5d +b7 +c8 +ed +a3 +fa +6a +6a +7b +8a +40 +51 +95 +29 +bf +74 +b6 +a0 +f8 +0c +48 +49 +17 +f4 +0c +10 +7d +18 +2b +ce +3e +34 +4f +d3 +6d +1b +37 +7a +98 +2f +6b +f2 +36 +1b +8d +66 +28 +75 +c1 +66 +dc +ca +73 +24 +0b +86 +df +5e +e0 +fa +42 +31 +b3 +56 +f0 +cd +d6 +b3 +17 +0f +f8 +91 +13 +db +0b +1b +9d +d2 +64 +33 +57 +83 +22 +2c +be +7b +e8 +44 +64 +2b +0b +19 +88 +d1 +8b +26 +8d +a6 +f7 +8c +c9 +44 +f4 +3b +82 +71 +43 +c4 +dc +5e +e1 +f0 +d6 +58 +b8 +7b +9c +00 +86 +2f +26 +3d +6f +57 +98 +fc +82 +e8 +be +07 +9a +11 +08 +de +fd +d4 +c7 +86 +3c +31 +47 +e9 +bd +f0 +fb +c8 +4d +eb +a2 +15 +fd +fb +9c +a4 +23 +7a +84 +19 +b2 +6f +de +ff +63 +a7 +f9 +5c +44 +2b +ce +67 +96 +6e +be +6b +5f +9a +f1 +fd +2a +7c +be +d6 +48 +ea +72 +76 +db +74 +2d +ac +3e +47 +0f +6c +c7 +41 +d8 +2e +77 +e9 +c0 +dd +01 +9b +54 +58 +17 +75 +51 +97 +5b +59 +63 +3b +e6 +7b +35 +c0 +d4 +30 +b7 +25 +52 +4d +ea +fd +eb +a6 +d3 +64 +3c +5c +82 +eb +b5 +24 +79 +66 +9c +41 +1b +b5 +6b +39 +7f +8d +37 +b8 +f7 +fa +4c +ed +03 +16 +54 +6c +aa +ee +41 +9c +0e +7f +1d +96 +a0 +ec +61 +4c +6c +9c +8e +03 +e0 +10 +03 +17 +65 +12 +1f +1e +b8 +fd +54 +9f +de +04 +6a +50 +44 +3e +ba +b9 +fe +a2 +e7 +8a +29 +f4 +96 +44 +55 +92 +8d +b1 +f9 +e7 +82 +0e +53 +3c +57 +12 +98 +9b +3a +36 +37 +ea +00 +a1 +de +3e +46 +9a +80 +0c +43 +1d +4d +f2 +43 +c1 +dc +7d +6a +89 +ba +79 +00 +d5 +2b +78 +bc +c1 +03 +47 +4f +9d +2c +21 +28 +02 +5c +31 +93 +c4 +d1 +a0 +9f +50 +90 +5a +d2 +de +7f +e8 +e0 +9f +04 +7e +0e +72 +e6 +da +b0 +ed +f7 +e3 +b0 +8e +d1 +31 +6a +cf +85 +72 +54 +b6 +c1 +fb +f6 +4c +e5 +82 +f2 +99 +0c +ce +cf +95 +05 +fd +7e +85 +17 +99 +8a +af +58 +3b +e1 +aa +64 +1e +9b +54 +db +b9 +1c +a9 +d0 +70 +09 +13 +96 +7f +b0 +34 +92 +01 +b5 +d6 +79 +b3 +2d diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kbar.hex new file mode 100644 index 0000000..d3c1c83 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kbar.hex @@ -0,0 +1,32 @@ +d8 +83 +47 +7c +2a +eb +d6 +5a +11 +7f +4f +0c +15 +05 +90 +b0 +8a +57 +13 +25 +ed +3e +37 +8e +4f +e9 +b1 +af +c9 +98 +72 +21 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kprime.hex new file mode 100644 index 0000000..12be592 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_kprime.hex @@ -0,0 +1,32 @@ +2b +5c +52 +ee +72 +94 +63 +31 +98 +3b +a0 +50 +be +0f +43 +50 +55 +c0 +54 +79 +01 +e0 +35 +59 +b3 +56 +51 +78 +89 +ea +27 +c5 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_rprime.hex new file mode 100644 index 0000000..da4f599 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c0_rprime.hex @@ -0,0 +1,32 @@ +08 +cd +24 +5f +59 +e6 +cb +6e +36 +87 +c6 +63 +27 +49 +b6 +c0 +73 +7d +18 +37 +01 +f0 +b0 +49 +2b +84 +33 +58 +89 +3c +6a +24 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_cprime.hex new file mode 100644 index 0000000..34e28af --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_cprime.hex @@ -0,0 +1,768 @@ +1c +43 +de +77 +0e +9c +d5 +98 +46 +b6 +f8 +1f +9c +61 +cc +d8 +37 +97 +8e +26 +d3 +2c +33 +0d +50 +9d +8e +29 +d9 +e7 +fb +1a +4f +ba +52 +10 +1e +48 +88 +0d +80 +61 +6e +53 +3a +ac +59 +1f +eb +d3 +93 +cb +b1 +28 +2d +e1 +53 +56 +0d +43 +73 +cb +88 +2c +66 +d3 +07 +32 +95 +97 +91 +0e +d3 +ff +10 +58 +40 +96 +4a +64 +0b +c7 +62 +e6 +32 +9b +9f +3b +a4 +1a +9e +c3 +1e +04 +c8 +c9 +ef +ec +96 +35 +e0 +a9 +b4 +56 +f6 +19 +f1 +06 +58 +be +d3 +6a +13 +3c +ed +0c +23 +0b +3c +fd +d8 +07 +37 +75 +d7 +59 +49 +2a +7e +3b +e0 +ce +27 +72 +5e +b7 +c2 +47 +4c +56 +8d +03 +92 +43 +fe +81 +0b +31 +db +2f +ce +8e +e4 +03 +73 +06 +a5 +a9 +bb +ee +1b +a7 +45 +c2 +b4 +fc +11 +11 +65 +9f +5d +e9 +19 +94 +1c +89 +c8 +cc +66 +1e +ca +aa +e3 +e9 +61 +0e +ac +66 +cd +41 +28 +e3 +d4 +bb +5a +bb +38 +83 +7d +99 +6d +b7 +e5 +c3 +1f +d0 +92 +22 +f2 +2f +85 +4c +25 +fa +d8 +ae +12 +de +d3 +e3 +37 +c3 +24 +14 +68 +ee +eb +ec +da +5d +d6 +82 +e6 +e5 +7f +51 +ad +35 +28 +58 +d0 +40 +48 +a4 +70 +3a +dc +13 +52 +63 +c4 +7b +3a +5d +6e +6c +59 +5b +a1 +ea +06 +02 +bd +34 +35 +3e +19 +1b +fd +f3 +6d +56 +b2 +05 +39 +74 +8a +d6 +1c +66 +c2 +50 +e0 +7f +2e +3c +6d +60 +89 +44 +72 +fe +7e +67 +7c +35 +3f +70 +a1 +75 +f0 +4c +60 +f6 +9d +d9 +21 +e9 +b9 +24 +9b +d6 +29 +14 +40 +58 +29 +ae +fa +05 +2c +92 +9c +f2 +3a +ba +06 +7a +7e +b7 +fe +d0 +c1 +5f +40 +1e +f5 +08 +4a +97 +a6 +1c +ed +6f +bf +87 +91 +48 +72 +31 +c0 +5f +c2 +3a +38 +7c +77 +c0 +31 +65 +38 +ad +09 +be +82 +b1 +0e +e8 +f8 +d6 +a9 +d9 +79 +f6 +3a +2e +c2 +36 +4f +08 +67 +30 +6e +9b +f6 +e3 +c0 +38 +84 +96 +be +c8 +ad +16 +15 +15 +b0 +16 +e9 +1b +5a +b4 +e4 +ee +9c +48 +f0 +de +49 +50 +aa +49 +6b +3b +ac +3a +bf +a8 +6b +9c +be +27 +a9 +2a +c8 +a8 +17 +65 +0b +2c +4c +53 +6e +da +1d +2a +b5 +81 +95 +cd +42 +3e +0f +4a +fb +5b +ae +71 +01 +43 +88 +21 +b8 +9a +99 +20 +6b +a5 +fd +d9 +d0 +6c +39 +df +d6 +f0 +6f +ba +8c +71 +94 +21 +3d +0e +86 +f8 +0e +4e +5a +24 +97 +7e +fa +ac +f7 +eb +c0 +2b +02 +8c +fc +96 +73 +de +6c +8a +0c +c6 +ae +1e +57 +73 +50 +93 +5c +91 +2c +e1 +d5 +6c +67 +08 +75 +c4 +d6 +be +d8 +75 +0a +9e +fb +b4 +50 +79 +1c +3d +56 +0c +e5 +10 +21 +32 +74 +f7 +d4 +b3 +b8 +8a +d9 +96 +70 +34 +75 +10 +68 +58 +0a +9d +ed +f0 +ab +3c +ad +bb +2f +3b +bf +37 +19 +ce +73 +e9 +38 +66 +6f +2a +7f +e8 +2f +10 +f0 +8d +32 +5d +20 +3e +c0 +b0 +58 +5b +58 +22 +16 +b7 +fc +05 +a7 +29 +14 +81 +d1 +22 +27 +91 +38 +5b +64 +16 +e8 +07 +e6 +97 +02 +6b +e2 +18 +c5 +19 +c1 +b2 +15 +84 +2a +fa +0e +58 +f9 +88 +f8 +8f +3d +90 +cf +6c +f4 +21 +87 +87 +6b +db +d7 +be +0b +2c +26 +1b +0d +d3 +6d +16 +dd +e6 +ed +83 +54 +bd +74 +32 +b6 +6d +10 +bc +ac +cb +69 +c8 +94 +47 +78 +90 +2f +c3 +6d +c7 +0f +4e +63 +85 +b9 +d5 +9a +ec +c6 +44 +5c +e4 +ad +65 +bc +c9 +58 +e8 +86 +a9 +2a +1d +4d +17 +5c +f3 +54 +b4 +fe +e8 +89 +0e +a4 +ce +21 +f5 +e8 +31 +f6 +90 +5a +e5 +28 +db +39 +91 +83 +4a +24 +52 +f5 +91 +c3 +ea +88 +d7 +61 +2a +59 +9a +30 +14 +fc +8e +10 +b3 +0d +48 +39 +8b +b8 +99 +1c +0f +f1 +2a +73 +56 +64 +50 +32 +53 +0d +81 +8d +8a +a2 +50 +0b +25 +21 +a7 +3e +18 +59 +1e +c6 +ef +42 +2d +ae +ed +66 +d2 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kbar.hex new file mode 100644 index 0000000..811e66e --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kbar.hex @@ -0,0 +1,32 @@ +12 +10 +3c +dc +50 +6a +c9 +50 +3e +5d +5c +1b +f0 +a6 +9a +cc +46 +d2 +85 +fd +3e +38 +6b +83 +bf +97 +d1 +51 +d9 +d7 +ae +f4 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kprime.hex new file mode 100644 index 0000000..69967ce --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_kprime.hex @@ -0,0 +1,32 @@ +63 +df +b8 +42 +bf +76 +7f +89 +71 +78 +39 +64 +2a +9b +92 +fc +cf +82 +bf +46 +a9 +f3 +9b +a1 +a3 +29 +29 +95 +f3 +f9 +34 +dc diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_rprime.hex new file mode 100644 index 0000000..62ff970 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c1_rprime.hex @@ -0,0 +1,32 @@ +a9 +1d +9b +93 +5b +57 +c1 +e9 +bb +4f +4a +6a +8f +2b +9b +36 +8a +20 +07 +f6 +53 +78 +4c +01 +c1 +6f +a3 +4b +a5 +58 +2c +cb diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_cprime.hex new file mode 100644 index 0000000..64d5ff5 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_cprime.hex @@ -0,0 +1,768 @@ +55 +33 +60 +42 +56 +12 +0d +54 +80 +65 +76 +94 +13 +b8 +2f +b5 +ab +d0 +01 +4e +7e +9f +10 +49 +2f +f1 +5f +d4 +5d +c7 +82 +b2 +dc +4c +55 +32 +5f +cc +57 +68 +5f +13 +4f +f7 +e1 +23 +cf +02 +8f +a7 +b4 +5d +cc +71 +7c +f2 +d7 +b2 +74 +d8 +f2 +a8 +b7 +d1 +ac +d6 +63 +53 +a5 +63 +35 +f4 +82 +ec +3d +04 +50 +4d +2e +05 +2d +ed +28 +11 +2a +c7 +41 +0f +a8 +e4 +7f +0d +7c +5e +b1 +d6 +a2 +9e +94 +87 +81 +db +38 +63 +76 +7b +7e +a8 +7a +59 +1e +0d +7e +a4 +13 +0c +1c +9f +a5 +e8 +14 +2d +ab +f7 +ee +8c +02 +19 +1c +df +1b +8c +80 +4d +38 +e2 +b6 +e4 +44 +5c +d8 +fd +34 +1a +63 +ec +00 +01 +b9 +d8 +82 +9d +4c +8f +5e +53 +dc +6e +87 +86 +df +67 +f4 +ac +0b +b9 +d1 +88 +f0 +64 +da +50 +c1 +fa +b3 +96 +55 +10 +a0 +48 +eb +6b +4a +a7 +8a +85 +1c +47 +b1 +06 +42 +9b +30 +f8 +a9 +a3 +b5 +46 +48 +c8 +b4 +3d +cf +76 +19 +0b +bc +8c +66 +a6 +a3 +6d +f7 +b9 +5a +e3 +d9 +78 +4a +dd +87 +58 +23 +5b +29 +1c +0a +1d +b1 +ba +80 +54 +12 +e8 +b9 +2c +14 +16 +fb +e6 +4c +42 +db +12 +38 +30 +ed +1b +d9 +7e +69 +e5 +22 +e4 +82 +e8 +33 +25 +e9 +e8 +8a +d9 +40 +3f +7e +86 +d8 +8d +53 +5e +39 +1a +e4 +cd +33 +0e +e0 +58 +92 +a1 +14 +e4 +43 +9b +59 +b3 +06 +02 +d9 +d9 +87 +04 +aa +55 +30 +5f +a1 +f8 +5b +23 +d7 +c3 +b0 +f3 +06 +54 +c8 +b7 +cb +4c +e0 +29 +85 +e6 +cb +e9 +a8 +7c +f0 +e9 +99 +a5 +65 +41 +30 +99 +fd +fa +f5 +77 +84 +5a +40 +7c +d6 +c2 +ea +5e +de +db +04 +ba +43 +4d +80 +e1 +13 +24 +67 +08 +88 +61 +d6 +51 +99 +81 +8e +d4 +ba +3a +09 +5e +06 +63 +39 +f3 +53 +39 +48 +77 +e3 +bf +79 +26 +28 +8c +dd +37 +ac +31 +cd +b4 +99 +b5 +eb +8c +a0 +68 +59 +be +b5 +c6 +60 +73 +0f +a7 +93 +cf +11 +34 +7f +bf +ed +73 +a8 +2e +1d +2b +22 +9a +09 +59 +32 +79 +ad +04 +45 +bc +11 +b4 +f1 +64 +d0 +15 +ec +51 +41 +da +dc +10 +d3 +22 +c9 +28 +3e +5a +64 +11 +57 +df +e5 +3b +da +4c +3c +a7 +36 +46 +99 +df +0b +f7 +94 +d4 +68 +3f +b1 +fd +ec +e8 +e3 +18 +da +3f +f0 +28 +b6 +3a +a7 +d9 +f5 +0b +58 +78 +53 +78 +be +79 +fc +7e +8a +2b +12 +73 +a8 +d7 +87 +74 +85 +33 +57 +ae +c5 +23 +ef +7d +92 +76 +44 +b0 +7d +3d +0f +28 +76 +bf +0b +55 +d4 +59 +2e +33 +a6 +58 +c4 +61 +c9 +6c +8b +81 +cc +c2 +b1 +d4 +8c +39 +29 +ad +99 +4d +01 +5a +e6 +dc +4c +98 +a7 +54 +16 +76 +7c +7b +a1 +60 +bf +74 +91 +b4 +a0 +aa +db +5e +43 +a3 +97 +f6 +3c +e1 +cf +7f +91 +64 +79 +f7 +63 +35 +0c +54 +dc +29 +6a +22 +31 +4b +4f +48 +4c +8c +22 +e3 +64 +fc +e5 +a6 +ca +6e +15 +0b +81 +02 +1b +44 +b5 +f4 +9f +91 +49 +27 +89 +64 +37 +21 +3d +0a +bc +ae +a2 +80 +62 +db +28 +54 +13 +8d +0e +0b +ec +84 +1e +6b +e8 +e0 +39 +b8 +a0 +d7 +62 +e6 +0e +c8 +b6 +41 +6d +fe +7c +7c +8e +d9 +b7 +41 +59 +08 +b8 +dd +9a +69 +89 +50 +69 +7f +a5 +fa +a5 +b1 +92 +6a +54 +de +98 +6a +00 +93 +da +97 +6c +89 +ed +bf +83 +71 +1a +4b +aa +bc +2c +21 +c7 +4f +2b +7f +e9 +6a +aa +9e +b0 +82 +dd +66 +e3 +40 +8c +d3 +00 +02 +cd +bd +57 +3d +27 +f6 +6a +80 +6e +b0 +b3 +14 +4c +42 +7e +07 +ef +7a +39 +67 +f0 +4f +0a +43 +36 +f5 +5e +8e +12 +c6 +3a +67 +80 +25 +18 +44 +80 +22 +73 +ac +90 +1d +4f +6a +55 +65 +02 +db +49 +6d +4b +b4 +61 +09 +be +1f +90 +b7 +ef +a7 +6d +34 +03 +a3 +bb +ec +6a +32 +e8 +e5 +cf +4e +db +a3 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kbar.hex new file mode 100644 index 0000000..ed600e6 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kbar.hex @@ -0,0 +1,32 @@ +d1 +79 +b1 +cc +1a +8f +4a +19 +f4 +08 +5b +74 +33 +68 +62 +07 +3b +c7 +ca +5e +de +23 +5b +40 +6a +99 +41 +6a +2f +58 +26 +2b diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kprime.hex new file mode 100644 index 0000000..524f510 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_kprime.hex @@ -0,0 +1,32 @@ +13 +5b +97 +48 +c6 +aa +6d +1a +e9 +b5 +42 +0c +72 +67 +9f +f6 +5c +ae +62 +2b +8a +7d +f5 +4c +d7 +65 +01 +31 +b5 +fd +77 +f8 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_rprime.hex new file mode 100644 index 0000000..763260f --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k2_c2_rprime.hex @@ -0,0 +1,32 @@ +bd +b9 +ea +a5 +62 +80 +be +33 +30 +be +de +f9 +32 +ca +62 +b8 +3f +d7 +33 +88 +b5 +21 +66 +75 +37 +f9 +6b +4f +53 +3a +ad +2e diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_cprime.hex new file mode 100644 index 0000000..23b1d06 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_cprime.hex @@ -0,0 +1,1088 @@ +16 +a6 +1f +f8 +47 +87 +fd +4a +5f +19 +ca +59 +b3 +65 +7d +b3 +a1 +06 +a7 +32 +9e +2d +62 +74 +7a +2e +f8 +51 +49 +16 +31 +09 +be +ff +f6 +bc +b3 +3d +f6 +62 +30 +b8 +f6 +72 +5c +e7 +19 +f5 +8f +71 +19 +6e +89 +5b +ef +c9 +75 +4d +9f +04 +24 +94 +64 +8c +88 +a6 +ed +4c +4c +f1 +3f +2f +af +9f +65 +1d +e7 +9d +ae +07 +77 +33 +cb +23 +5f +9d +ce +44 +89 +77 +fd +42 +d5 +48 +6b +7d +fd +f6 +d7 +bd +91 +72 +b1 +42 +47 +65 +5d +34 +f1 +05 +24 +d4 +69 +47 +8d +9a +96 +39 +f3 +4d +2a +cd +e6 +e3 +c0 +48 +d5 +2b +30 +8b +66 +24 +5f +e9 +a2 +8c +de +79 +83 +b9 +d1 +4c +03 +b3 +77 +15 +fe +39 +70 +cd +35 +73 +47 +71 +ad +d7 +aa +9b +58 +cf +b0 +ad +f8 +c6 +13 +de +af +b2 +b3 +1f +6e +5c +83 +64 +d4 +33 +4e +93 +af +8e +49 +43 +fa +94 +7c +c6 +76 +67 +44 +7c +ff +d0 +36 +23 +5a +fa +ea +7f +60 +3c +b2 +ea +27 +7b +97 +da +df +82 +ea +74 +6f +6b +27 +39 +6d +d0 +8c +85 +cf +f9 +30 +4a +2e +5c +e0 +57 +1f +de +2e +92 +67 +16 +bc +9f +8e +4d +47 +4b +4e +8f +d3 +4b +0d +c2 +83 +76 +20 +4e +a3 +06 +d3 +0e +9a +6d +d8 +82 +50 +b7 +98 +23 +e7 +73 +19 +f2 +ef +3a +77 +70 +4f +40 +9d +de +8b +eb +6d +b1 +be +4a +9f +25 +ae +2e +15 +93 +9d +ed +f1 +b1 +1a +5a +a5 +1f +cf +f0 +40 +68 +b4 +6d +42 +fb +ba +fd +24 +98 +26 +4c +ca +4f +b7 +8b +0f +2a +b1 +62 +c7 +ef +56 +98 +75 +a1 +31 +48 +b9 +a4 +b0 +b9 +da +17 +87 +ca +0a +70 +33 +e3 +ec +a1 +34 +71 +db +cb +be +15 +e3 +4f +2b +50 +65 +b9 +95 +fe +22 +1c +2b +7a +c1 +50 +33 +4d +14 +e6 +8e +dc +5e +04 +96 +63 +de +36 +2f +ae +8d +35 +e2 +4c +20 +2c +5f +ad +21 +53 +cd +04 +4e +a9 +62 +a3 +88 +f0 +30 +cd +c5 +de +c1 +c3 +42 +31 +83 +b1 +73 +c3 +2b +22 +f5 +80 +0a +e4 +5e +8e +89 +c8 +ee +46 +17 +ce +24 +e6 +0f +27 +8b +fd +1e +a0 +f8 +fa +92 +48 +6b +6f +84 +91 +27 +da +99 +be +7b +e4 +c6 +61 +e2 +ba +26 +66 +9d +6a +cf +61 +9a +33 +05 +68 +09 +68 +3e +24 +a2 +f2 +9e +33 +be +7f +5f +9a +c6 +68 +69 +7e +59 +48 +8e +9b +86 +85 +95 +6c +d8 +7b +7c +47 +10 +9d +60 +32 +02 +c2 +01 +47 +2e +c8 +29 +ea +64 +92 +2e +4d +0e +ad +d4 +a4 +b5 +a8 +fb +06 +e0 +f4 +bf +25 +a5 +9c +ed +54 +55 +73 +88 +dc +d9 +1b +38 +7c +b6 +14 +85 +97 +ed +f8 +4a +22 +59 +58 +01 +85 +1c +a4 +b9 +e9 +e0 +96 +fd +fc +96 +f2 +44 +4a +c9 +f1 +24 +7a +5e +64 +07 +87 +fc +a2 +3e +3e +b2 +1e +c1 +05 +9c +42 +a6 +58 +03 +44 +1d +f0 +12 +79 +01 +3c +44 +8d +fc +3e +ed +fc +33 +55 +ee +e1 +f5 +10 +08 +6a +11 +5f +85 +4c +36 +db +79 +7a +85 +ed +e1 +9a +47 +3a +33 +e7 +9a +80 +f6 +f7 +f6 +46 +7e +1b +0d +86 +6f +e0 +e5 +7a +8a +bd +37 +99 +34 +a6 +a6 +a4 +92 +f5 +f3 +25 +94 +d4 +3d +e2 +ec +2e +ea +81 +48 +79 +81 +bb +63 +94 +bf +a6 +df +54 +98 +d7 +4c +6d +b2 +20 +2a +63 +48 +a3 +25 +fb +c9 +06 +b8 +e8 +20 +bb +00 +65 +9a +2e +e1 +27 +40 +b1 +4b +2e +36 +f4 +c5 +da +b4 +11 +c0 +cd +09 +6c +5e +63 +ba +4d +48 +aa +9e +92 +b3 +1f +44 +dc +97 +c0 +fe +f6 +61 +bc +f4 +db +89 +5f +17 +46 +13 +d9 +d5 +ed +9e +83 +66 +57 +74 +5e +c9 +de +ec +7a +f2 +73 +ce +c8 +7e +f0 +ea +f8 +05 +da +1b +c8 +40 +16 +08 +81 +0b +8a +86 +f9 +52 +c6 +32 +6d +09 +fc +8d +1d +7f +d8 +3b +4e +86 +2e +05 +05 +8e +87 +7c +05 +6c +c5 +46 +5e +c3 +19 +2b +03 +a4 +c3 +3c +c6 +b1 +65 +58 +d2 +48 +2d +5f +84 +51 +8c +bb +c5 +26 +aa +e6 +e8 +84 +03 +17 +ef +b3 +a1 +98 +2c +3d +17 +19 +ef +15 +d1 +0f +8b +07 +7c +5c +68 +68 +0b +e6 +d3 +d9 +2e +86 +aa +a6 +eb +37 +8c +f0 +55 +9d +49 +32 +57 +14 +7b +55 +73 +0f +49 +a0 +42 +32 +5a +f0 +66 +b4 +f9 +74 +1b +9f +ff +5d +47 +97 +2d +5a +ca +f5 +2b +6b +ea +4e +9e +35 +4e +f9 +44 +8b +62 +f6 +d2 +a1 +31 +76 +75 +a9 +22 +e1 +4e +31 +57 +8d +6c +ab +5a +09 +a7 +1a +b2 +70 +d8 +65 +15 +1b +8a +b4 +c6 +12 +b5 +fd +5d +cc +97 +e4 +54 +19 +a1 +cf +b6 +b8 +b9 +ae +c6 +0f +62 +60 +20 +98 +f9 +1f +07 +c2 +38 +18 +66 +57 +94 +1c +7a +18 +e4 +d7 +ee +22 +0f +02 +2d +5f +ff +d2 +91 +85 +3b +9c +06 +3e +56 +1b +71 +76 +f7 +a2 +35 +ce +45 +bc +86 +ce +47 +18 +08 +6d +f9 +53 +6c +5a +5f +0a +bf +04 +c0 +a8 +4d +82 +bd +f6 +95 +52 +ad +e3 +13 +54 +33 +c1 +0a +1b +a6 +9d +68 +89 +69 +e6 +d9 +dc +e5 +4d +3b +3a +ae +3a +7f +2a +b9 +04 +e6 +57 +e3 +fb +05 +24 +1f +ac +11 +0a +a0 +7e +62 +cc +39 +91 +d7 +d0 +d6 +32 +9b +5a +b9 +d6 +9d +73 +36 +c0 +d1 +48 +58 +8c +9f +09 +21 +32 +5b +85 +df +5f +d3 +0d +b8 +0a +56 +a3 +72 +43 +72 +15 +36 +41 +96 +1a +a7 +e0 +42 +bf +26 +46 +ff +46 +02 +2c +05 +9d +57 +94 +c3 +a4 +b7 +f9 +0c +41 +0d +e7 +1a +52 +31 +dd +9b +83 +bb +d0 +e6 +bd +ab +1b +f9 +e6 +2f diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kbar.hex new file mode 100644 index 0000000..e944066 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kbar.hex @@ -0,0 +1,32 @@ +51 +95 +69 +07 +f1 +73 +e1 +cc +99 +d4 +72 +ca +06 +c6 +57 +39 +62 +bf +ef +5d +7e +a6 +36 +e2 +d8 +43 +d7 +20 +0b +21 +1e +40 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kprime.hex new file mode 100644 index 0000000..d0438db --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_kprime.hex @@ -0,0 +1,32 @@ +b4 +08 +d5 +d1 +15 +71 +3f +0a +93 +04 +7d +bb +ea +83 +2e +43 +40 +78 +76 +86 +d5 +9a +9a +2d +10 +6b +d6 +62 +ba +0a +a0 +35 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_rprime.hex new file mode 100644 index 0000000..4630ab9 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c0_rprime.hex @@ -0,0 +1,32 @@ +95 +ad +a5 +16 +59 +59 +17 +37 +1a +53 +3e +83 +f3 +d7 +95 +10 +06 +92 +67 +41 +28 +1c +42 +ea +73 +71 +13 +29 +ed +f7 +25 +5a diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_cprime.hex new file mode 100644 index 0000000..bef2d67 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_cprime.hex @@ -0,0 +1,1088 @@ +4c +fd +0f +0b +e1 +5d +db +62 +05 +86 +44 +6e +43 +51 +18 +2f +64 +aa +ac +3a +ff +a1 +3b +24 +65 +2b +87 +d6 +ed +91 +f6 +0c +d3 +d3 +17 +91 +2c +19 +84 +cb +98 +d5 +a3 +93 +b0 +b5 +75 +f2 +0a +5a +fe +bc +58 +db +8a +a8 +c7 +94 +76 +18 +7f +8f +ea +07 +2f +ff +d2 +6f +12 +00 +61 +59 +51 +86 +61 +da +a4 +65 +4f +60 +e3 +8a +5e +ec +79 +63 +83 +df +04 +57 +82 +8a +a3 +29 +73 +18 +7c +19 +a6 +47 +92 +85 +8a +de +46 +c7 +7a +53 +d1 +b6 +a9 +ae +e2 +c4 +db +23 +7b +e3 +52 +34 +e1 +80 +bf +01 +06 +80 +4c +08 +a3 +d9 +61 +78 +87 +82 +86 +96 +ea +61 +36 +59 +40 +31 +d1 +b6 +8e +f5 +74 +5e +61 +8a +9c +3b +07 +d0 +fb +00 +f4 +81 +c4 +7d +12 +15 +4c +57 +9d +00 +2f +f6 +9b +8f +5b +32 +08 +b6 +2b +ec +8b +5d +46 +fc +94 +b1 +2a +31 +11 +55 +5d +cd +ac +be +25 +48 +d3 +3b +f2 +4a +b2 +37 +ab +06 +65 +43 +e2 +ad +47 +ba +16 +58 +53 +ac +d7 +07 +fc +5a +19 +55 +d4 +ad +83 +38 +4d +d9 +36 +af +95 +eb +00 +7a +84 +23 +aa +35 +36 +2f +d7 +35 +01 +d6 +89 +09 +cf +8d +37 +7a +4b +8b +02 +15 +51 +27 +65 +47 +ba +d2 +6b +da +1f +73 +51 +35 +a6 +66 +2c +6c +e0 +47 +bf +3e +14 +6f +ca +5a +f3 +ff +d7 +b7 +5c +86 +45 +d8 +52 +5d +4a +22 +b0 +50 +61 +79 +78 +68 +ad +b5 +14 +c5 +f9 +e8 +fa +e5 +fc +27 +38 +0c +7e +f0 +2e +67 +19 +41 +fb +ef +f6 +3b +3e +7e +b5 +5b +b5 +e0 +0e +a3 +f3 +4d +6b +ad +fa +24 +bc +c2 +bf +80 +3e +44 +34 +dc +de +27 +12 +c9 +51 +ec +83 +a6 +44 +54 +d5 +56 +5a +d1 +48 +8b +1a +78 +05 +1b +9f +72 +b6 +8d +55 +81 +af +29 +49 +d1 +63 +00 +98 +f4 +8b +4f +a7 +e5 +95 +22 +3c +e7 +30 +9d +7f +79 +d2 +50 +dc +2a +91 +ba +c5 +13 +87 +14 +97 +3e +93 +f6 +70 +44 +a7 +3c +86 +ea +3a +29 +ad +56 +32 +27 +7b +65 +96 +50 +9d +64 +4e +1d +cb +55 +d3 +a8 +fd +1d +91 +99 +6f +2d +9f +f4 +71 +b4 +f1 +e3 +1a +75 +9a +f4 +87 +51 +48 +b4 +d4 +f1 +f8 +dc +6c +79 +2c +c8 +ed +9a +29 +93 +5b +d0 +4f +3a +c1 +28 +01 +57 +4e +c2 +9f +3b +60 +1a +8d +75 +d3 +f4 +4d +55 +e8 +a1 +4c +5b +63 +b1 +ef +7f +ba +cd +aa +80 +fd +73 +70 +b8 +dc +7a +16 +18 +58 +1b +fb +83 +27 +f2 +62 +a3 +03 +70 +15 +ae +c3 +48 +6a +8b +3a +e1 +15 +04 +52 +0d +dd +50 +9b +98 +6f +a2 +20 +35 +cb +b2 +fd +24 +2a +cb +ca +7a +ae +a5 +f8 +98 +e6 +10 +13 +37 +b5 +0e +c7 +cf +ec +e1 +c2 +f2 +dc +cd +d4 +64 +e5 +76 +06 +e4 +48 +77 +f9 +6c +27 +20 +65 +23 +83 +7b +4d +ca +5a +2f +65 +ff +b3 +97 +16 +69 +ca +9d +98 +3b +ad +15 +4d +1b +11 +f8 +6a +3a +37 +6e +69 +81 +e3 +ec +2e +e4 +20 +86 +43 +81 +03 +56 +78 +ad +18 +c1 +3c +38 +25 +87 +b2 +ff +b6 +7b +3c +56 +06 +8a +3d +53 +90 +77 +94 +1a +68 +76 +74 +5d +5a +1c +b2 +5f +1e +89 +7a +59 +46 +7e +fc +f8 +86 +ef +1d +71 +22 +87 +4e +54 +b2 +4e +d5 +24 +94 +68 +72 +3d +dc +54 +19 +88 +80 +e9 +40 +5f +0f +0b +94 +e6 +dd +95 +02 +60 +46 +a6 +0d +b1 +cf +3a +1d +92 +08 +3f +b8 +10 +4a +ea +74 +70 +15 +78 +57 +08 +59 +25 +96 +8d +78 +ca +35 +25 +8b +8e +7a +2b +c4 +d3 +e1 +4f +40 +4a +2d +5e +dd +fe +fb +aa +b1 +83 +6a +25 +a6 +44 +4c +31 +84 +2e +8f +56 +39 +5b +33 +5d +a8 +83 +0c +91 +a8 +10 +6a +53 +13 +c8 +00 +20 +91 +5c +e0 +c7 +9c +30 +32 +66 +93 +3d +87 +6e +85 +40 +96 +cf +6b +ac +83 +51 +81 +a3 +87 +95 +71 +1c +fc +1e +97 +3d +c7 +c4 +12 +ce +50 +37 +60 +49 +91 +90 +2f +3f +81 +ac +36 +36 +0b +37 +18 +71 +06 +da +a0 +44 +af +03 +de +0a +45 +4b +7b +3f +39 +96 +f3 +e4 +85 +8e +20 +f8 +7f +d9 +8c +a6 +63 +ce +21 +a9 +b5 +30 +9b +27 +73 +7b +9d +f7 +32 +53 +2b +0f +c9 +b2 +a2 +de +6c +de +4e +05 +97 +db +d6 +ab +9c +cc +ce +d9 +f7 +ce +2c +4c +72 +7c +9a +a4 +35 +8e +4f +5d +a2 +51 +13 +8f +10 +4f +66 +89 +1f +cc +67 +1c +64 +e5 +50 +0c +e3 +d3 +ad +27 +a6 +27 +2e +ed +5b +fd +44 +91 +ea +e6 +dc +1d +e6 +e7 +69 +6f +38 +0d +89 +aa +a6 +53 +57 +1a +a3 +13 +2c +a5 +48 +06 +f9 +30 +8c +41 +4b +db +28 +97 +cb +b6 +b8 +44 +e8 +e0 +4f +d9 +47 +32 +fa +9c +3d +e0 +f6 +47 +2c +bd +0f +d7 +4f +98 +d4 +9b +0d +5f +c5 +77 +2d +21 +3e +e8 +bb +ec +2e +85 +93 +02 +4d +03 +57 +6e +85 +16 +96 +63 +58 +22 +b9 +80 +b1 +34 +5d +5d +f9 +b9 +38 +6e +93 +9a +2f +8e +32 +4f +ba +84 +c1 +2f +8d +e6 +e2 +7f +b0 +70 +9d +57 +7a +e6 +ee +48 +aa +3f +2e +7a +70 +94 +86 +bd +f6 +8c +ba +12 +84 +cd +e4 +b3 +e3 +a4 +7b +51 +0f +a6 +a6 +ac +ca +a0 +60 +9e +82 +2c +0c +cc +9f +d5 +10 +00 +cd +d5 +78 +30 +b3 +75 +90 +ac +9b +3b +29 +d3 +be +01 +40 +0d +6e +7b +db +64 +0d +1e +22 +1c +26 +ff +7b +24 +fd +67 +a6 +ee +0a +56 +52 +ad +5d +50 +d4 +ea +40 +8b +1e +10 +c9 +74 +e8 +60 +94 +e5 +b4 +0e +08 +b6 +6e +7c diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kbar.hex new file mode 100644 index 0000000..3e71d2c --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kbar.hex @@ -0,0 +1,32 @@ +25 +89 +30 +2d +db +8d +af +8c +5b +03 +d1 +e8 +54 +14 +9a +e5 +59 +78 +ac +cb +a8 +c4 +e4 +06 +86 +d5 +e5 +7e +82 +5b +87 +1a diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kprime.hex new file mode 100644 index 0000000..df503b0 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_kprime.hex @@ -0,0 +1,32 @@ +8c +97 +02 +42 +40 +61 +11 +e2 +63 +68 +ad +87 +60 +c4 +d0 +2a +8b +28 +d1 +7d +13 +82 +10 +ad +c1 +27 +19 +7b +50 +96 +81 +40 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_rprime.hex new file mode 100644 index 0000000..79bc688 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c1_rprime.hex @@ -0,0 +1,32 @@ +8f +0d +5a +52 +a5 +87 +1d +6e +df +1d +94 +0c +0b +ec +6b +e5 +80 +05 +ae +c6 +b1 +d5 +47 +26 +2a +df +36 +e6 +e8 +6e +98 +b9 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_cprime.hex new file mode 100644 index 0000000..4b55566 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_cprime.hex @@ -0,0 +1,1088 @@ +0d +ad +92 +35 +27 +46 +60 +11 +95 +10 +23 +1d +62 +82 +e3 +d8 +62 +ce +ea +53 +65 +b9 +c7 +f7 +83 +07 +88 +91 +f3 +35 +85 +68 +ff +b1 +00 +86 +d0 +68 +5a +ac +86 +8c +39 +23 +5a +e9 +09 +ab +7f +4c +65 +df +e1 +49 +b5 +f6 +9e +b0 +c9 +40 +80 +94 +79 +58 +d7 +1d +b2 +62 +b5 +fd +c0 +5a +1a +d8 +81 +13 +1e +cf +c1 +c7 +89 +86 +18 +7f +39 +41 +40 +d3 +92 +35 +9a +64 +56 +fc +ea +0e +e1 +ce +08 +93 +98 +5b +7b +61 +4c +46 +f0 +44 +5d +12 +3e +58 +76 +24 +63 +31 +ad +74 +23 +45 +c2 +f7 +4e +1d +a0 +92 +35 +a1 +01 +12 +2f +b7 +8b +73 +e8 +f1 +b5 +2c +d8 +19 +1d +6f +a7 +80 +e5 +5b +89 +25 +7c +fb +58 +14 +43 +e5 +ac +a5 +21 +49 +c4 +23 +d7 +65 +8c +6a +ac +77 +43 +d5 +c3 +18 +8e +61 +39 +7a +74 +08 +f9 +c5 +2a +8c +c8 +e8 +ef +18 +37 +06 +74 +c5 +cf +c0 +f0 +3c +51 +c5 +89 +e7 +9e +2f +26 +31 +ff +81 +bc +85 +1e +eb +57 +89 +24 +7a +d3 +a0 +f9 +56 +d2 +a7 +4c +17 +f9 +35 +ae +7d +c9 +a4 +63 +f3 +ee +15 +0c +8f +34 +85 +52 +38 +99 +18 +2b +84 +01 +1d +a1 +fd +40 +58 +a6 +6b +e3 +10 +2a +08 +18 +24 +6d +93 +e9 +87 +d2 +7e +27 +98 +01 +37 +7d +31 +7b +ed +6e +f9 +ce +cb +74 +5c +96 +d3 +48 +50 +1b +e3 +e4 +d5 +36 +4f +27 +ad +73 +74 +13 +2c +58 +e3 +db +e6 +5b +18 +01 +48 +2a +89 +43 +2f +d4 +fc +da +08 +50 +ea +b1 +c7 +5b +03 +5b +4b +8f +0e +cc +d0 +f5 +61 +61 +e6 +1e +0b +5a +1e +43 +b9 +95 +f8 +eb +dc +0a +92 +ff +29 +97 +19 +b6 +ab +22 +3e +84 +f1 +bd +81 +6c +de +c0 +5e +35 +12 +64 +41 +e4 +c3 +f0 +97 +d8 +c6 +a9 +8f +49 +c1 +37 +b3 +7f +ce +1d +24 +58 +7f +81 +0d +50 +0c +bd +ec +5a +18 +7d +36 +96 +7c +5f +22 +02 +b4 +b7 +ff +b4 +a2 +1a +87 +51 +89 +0e +cf +4c +72 +2f +f4 +6b +11 +3c +d7 +89 +32 +de +35 +a7 +aa +61 +4b +dc +df +27 +6b +e1 +f0 +36 +74 +83 +4e +7d +c7 +54 +39 +ea +8a +af +1c +88 +17 +3b +c7 +ff +b8 +52 +7d +d8 +5f +a4 +4c +1c +8c +4a +50 +b2 +46 +cd +e6 +30 +16 +92 +45 +a8 +7e +68 +b0 +da +e6 +92 +54 +05 +cd +fc +4e +09 +56 +d5 +3e +a7 +ec +f7 +67 +dc +5d +ad +a2 +4f +d9 +9f +6e +89 +a8 +47 +2b +fe +9d +25 +ce +88 +07 +bd +93 +da +5b +1f +22 +68 +36 +88 +47 +d7 +76 +57 +ac +6c +ba +ec +6d +e7 +d4 +87 +b2 +c7 +ad +c1 +f8 +66 +d7 +69 +fe +ed +31 +9f +4a +71 +f5 +56 +4f +f9 +b4 +62 +db +d7 +31 +eb +81 +b6 +03 +f0 +51 +14 +74 +25 +d4 +a9 +1c +08 +1f +34 +97 +06 +cb +76 +d8 +c7 +02 +ab +90 +2f +29 +f3 +37 +b3 +b6 +4b +06 +38 +81 +f5 +8f +d8 +94 +10 +59 +68 +80 +ea +32 +b2 +c4 +6f +ce +45 +8e +22 +40 +34 +23 +07 +45 +c5 +e8 +93 +3c +aa +77 +b8 +d4 +f0 +97 +0a +58 +2e +cf +c3 +db +d7 +41 +78 +be +d3 +f7 +f4 +7a +41 +f8 +e5 +a4 +3e +74 +e6 +9f +01 +47 +1b +8c +af +7c +49 +ef +75 +df +ef +9b +b2 +c8 +02 +06 +f1 +ad +25 +47 +64 +0b +6b +3b +33 +5e +06 +f2 +52 +f0 +8a +7a +ef +02 +20 +2b +6a +43 +60 +4e +b3 +51 +7a +04 +26 +ab +50 +e5 +ef +ee +d9 +47 +9f +62 +f0 +b3 +a6 +03 +08 +19 +79 +a0 +e8 +30 +cf +08 +be +33 +40 +cc +45 +27 +00 +ca +dc +ca +e3 +cb +b2 +31 +63 +72 +85 +67 +b1 +ce +2f +34 +0a +1d +f9 +43 +84 +36 +6a +06 +1c +13 +73 +ce +ab +aa +f8 +98 +8e +10 +fd +20 +49 +33 +34 +73 +27 +7c +87 +18 +5a +6a +1a +d0 +74 +99 +f8 +ce +b2 +9d +11 +d5 +04 +be +e7 +fb +0d +6e +58 +5f +b8 +12 +bc +b6 +aa +91 +e0 +cc +18 +ca +ad +07 +1b +8b +3d +1f +30 +7f +e8 +72 +b1 +31 +07 +c8 +f2 +4c +f9 +47 +31 +00 +0a +1b +a1 +92 +3f +32 +02 +1f +12 +79 +00 +f8 +f7 +23 +8f +a9 +59 +88 +29 +98 +79 +a4 +5d +56 +0a +32 +94 +79 +a4 +68 +c0 +10 +1b +34 +99 +1c +f6 +00 +c5 +04 +3e +d8 +b3 +ed +22 +50 +61 +5c +a3 +fd +50 +18 +f7 +04 +60 +3c +f6 +dc +53 +f2 +5e +2e +84 +ec +64 +f5 +e4 +2c +d8 +b9 +ae +db +80 +11 +d3 +a0 +21 +0b +20 +d9 +7b +68 +e8 +84 +84 +50 +da +cf +44 +91 +6a +9c +b7 +85 +d8 +04 +c4 +44 +e9 +e7 +d3 +07 +d7 +58 +70 +c2 +25 +83 +ba +39 +56 +79 +f1 +92 +72 +36 +c5 +70 +f4 +0d +b0 +dc +2a +90 +c1 +62 +b4 +fc +66 +cf +31 +55 +6d +6c +d0 +a0 +2c +80 +c6 +d4 +22 +b7 +54 +5c +68 +6c +a5 +02 +37 +71 +d9 +b0 +74 +9c +6d +1d +c1 +e9 +3e +a0 +aa +99 +1b +1a +05 +e7 +26 +78 +26 +23 +a5 +2f +10 +fe +4d +d5 +34 +58 +be +8a +2d +66 +0b +95 +dd +bd +93 +0d +67 +ff +5b +8e +ab +d9 +61 +e6 +8a +2b +d5 +1b +ee +93 +5c +a8 +bc +c7 +9d +b1 +fd +ba +2c +78 +84 +dd +ee +00 +61 +5d +a8 +9c +07 +f8 +95 +c4 +18 +59 +93 +c6 +7d +43 +26 +84 +90 +e7 +78 +ba +ba +6e +3e +9b +02 +b6 +e6 +8e +91 +19 +78 +84 +97 +f9 +49 +de +3e +37 +69 +60 +c2 +20 +35 +47 +84 +92 +9c +c2 +79 +7d +84 +1a +b2 +79 +ee +39 +32 +b8 +47 +0b +d2 +85 +74 +36 +3d +1b +ad +87 +f7 +2b +69 +48 +85 +3e +91 +96 +58 +db +44 +7c +08 +08 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kbar.hex new file mode 100644 index 0000000..ef950a4 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kbar.hex @@ -0,0 +1,32 @@ +07 +13 +2d +84 +fb +8c +49 +59 +05 +a8 +ca +67 +09 +e2 +56 +3e +90 +fe +55 +27 +ab +72 +e0 +f8 +0d +e1 +db +34 +29 +ee +54 +be diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kprime.hex new file mode 100644 index 0000000..479ea86 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_kprime.hex @@ -0,0 +1,32 @@ +c0 +d4 +57 +64 +e3 +db +f0 +94 +8b +91 +4d +6f +65 +c9 +2b +d0 +eb +d2 +15 +56 +e5 +07 +67 +53 +af +48 +df +8f +ff +d6 +ba +dc diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_rprime.hex new file mode 100644 index 0000000..81bc3ce --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k3_c2_rprime.hex @@ -0,0 +1,32 @@ +c9 +f6 +7b +d4 +70 +62 +84 +c9 +62 +9b +6f +b1 +3a +25 +db +24 +5a +70 +94 +63 +9e +95 +77 +e2 +8b +e5 +14 +df +09 +02 +01 +70 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_cprime.hex new file mode 100644 index 0000000..95b63bf --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_cprime.hex @@ -0,0 +1,1568 @@ +70 +7d +18 +ca +bc +f8 +96 +70 +c8 +00 +03 +b4 +7d +2b +86 +78 +ad +0d +a4 +aa +ad +78 +1a +33 +51 +e8 +2a +c3 +e4 +47 +e7 +01 +9a +f5 +cb +86 +02 +0f +b2 +ac +72 +7e +79 +65 +41 +55 +83 +5b +45 +de +9b +8a +f5 +e5 +c7 +ef +a0 +12 +95 +da +89 +88 +13 +1d +c8 +d6 +ed +b0 +64 +5c +3e +41 +16 +aa +b0 +80 +c5 +a5 +71 +e7 +60 +41 +6f +e8 +e2 +99 +c8 +98 +11 +96 +3c +f9 +77 +6e +0c +82 +87 +51 +70 +1f +90 +e2 +64 +35 +89 +7f +8f +df +7a +7a +fa +ad +98 +70 +09 +c0 +eb +12 +fb +91 +4d +fa +ab +1f +ce +92 +64 +f5 +5e +e0 +cb +4d +89 +44 +93 +85 +dd +08 +1b +02 +da +ce +9b +17 +9a +54 +51 +3d +28 +15 +29 +b8 +fd +61 +c5 +3e +3b +cf +c9 +e2 +c3 +ae +72 +33 +9a +61 +97 +11 +9f +97 +d4 +4b +05 +d3 +f3 +6a +5a +be +0a +3f +7c +cb +db +b9 +1d +24 +b2 +58 +56 +46 +2a +64 +9b +6c +1d +46 +ae +6e +05 +e9 +99 +27 +4d +a9 +23 +9e +67 +45 +25 +a5 +22 +f6 +14 +1c +b9 +5d +e9 +6b +93 +b3 +9f +0f +7d +09 +0d +4b +1c +05 +46 +ef +6f +c3 +fd +08 +e9 +0b +22 +8f +65 +7a +f3 +1e +b9 +33 +c9 +cf +ce +63 +4a +f6 +bf +82 +0d +5e +18 +5f +31 +57 +ef +bc +92 +6a +8a +e4 +20 +f2 +93 +00 +51 +3b +af +30 +23 +6c +c1 +14 +47 +e7 +4a +ed +4e +26 +27 +99 +d7 +7a +5c +f2 +2b +0a +7d +a1 +26 +42 +25 +fc +d6 +8c +f0 +76 +70 +bb +f5 +b0 +4f +31 +73 +d6 +14 +2d +c9 +42 +6d +90 +06 +dd +ed +c5 +d5 +94 +43 +a1 +1c +8d +20 +45 +3c +28 +67 +c1 +04 +34 +ab +6b +05 +b4 +f0 +b4 +67 +b6 +7a +42 +03 +03 +7c +16 +ea +72 +09 +45 +de +47 +41 +02 +e1 +68 +d5 +f7 +9d +7f +53 +0f +61 +d6 +b7 +97 +3e +d6 +45 +7e +87 +7f +b2 +b4 +5e +32 +1d +ed +8f +fd +30 +36 +82 +59 +b3 +ea +60 +b4 +cf +9d +11 +c5 +a0 +08 +7f +27 +ed +40 +d5 +36 +5c +3d +0b +8b +a2 +e8 +cd +ea +59 +af +a3 +51 +49 +97 +04 +88 +ce +a9 +e0 +7c +94 +34 +92 +3e +96 +e6 +a9 +9c +f3 +a0 +be +11 +01 +6a +86 +dc +9e +aa +53 +9f +ec +bd +dc +6c +fd +59 +7a +28 +ae +ca +e2 +75 +72 +34 +34 +01 +94 +f4 +fa +c7 +e5 +a2 +04 +82 +13 +82 +d5 +92 +8c +8e +03 +58 +33 +c7 +ca +d4 +9b +ba +43 +04 +e8 +26 +d5 +c0 +24 +c7 +cc +a2 +ac +f9 +5c +6c +bb +d6 +8c +38 +48 +55 +4a +85 +56 +95 +c2 +48 +ad +d5 +0c +87 +da +e4 +a4 +9d +11 +cd +bc +7c +75 +7a +b1 +e0 +0b +8f +d2 +1e +78 +54 +a8 +97 +dc +21 +b4 +0f +08 +7b +3d +fb +13 +17 +73 +d9 +d8 +74 +01 +e5 +d5 +01 +7a +b1 +f8 +64 +30 +f8 +89 +ff +66 +cc +9e +04 +be +86 +3e +7e +38 +ad +52 +7e +76 +44 +c8 +ce +93 +d0 +bc +2e +25 +5c +dc +3b +e2 +d3 +78 +4e +d0 +c1 +26 +49 +f5 +fe +bb +ab +ac +0c +8e +4c +91 +7c +8b +ef +29 +77 +5f +a3 +db +1e +a2 +3f +ed +dc +60 +95 +39 +c2 +33 +54 +dc +e7 +22 +ae +e7 +1c +45 +40 +7b +34 +da +00 +6f +24 +45 +2e +a0 +5e +76 +6e +6b +5d +ca +c9 +37 +ef +74 +3a +a9 +08 +a7 +b7 +cf +2f +3e +d8 +93 +1c +61 +cd +d3 +43 +df +df +6c +58 +8d +1b +1f +40 +99 +ba +5b +e5 +3e +76 +91 +09 +96 +60 +87 +74 +63 +c4 +31 +0a +36 +76 +7e +e2 +7e +0d +bd +31 +32 +ac +f6 +88 +84 +21 +e1 +01 +2e +df +38 +3d +4e +ec +96 +43 +e8 +a1 +0b +50 +e1 +05 +27 +c5 +a1 +47 +44 +58 +b3 +5e +54 +b8 +41 +fc +02 +59 +9e +d0 +7c +19 +01 +54 +52 +5c +47 +b8 +5e +69 +b0 +9e +82 +08 +dc +f3 +6f +7e +38 +d9 +f1 +09 +0b +8d +af +0a +32 +4d +7c +b4 +8a +ce +08 +da +c1 +1b +e4 +60 +58 +5d +ba +90 +61 +ab +e7 +ef +72 +43 +43 +a4 +ba +f1 +c7 +40 +90 +e8 +d7 +91 +86 +48 +d0 +dd +c4 +37 +43 +bc +03 +1e +ec +9e +3a +29 +12 +d8 +70 +f5 +0e +dc +db +6e +29 +24 +56 +c4 +00 +00 +6e +f6 +5e +b2 +c2 +4e +03 +8c +a3 +dd +f9 +75 +e2 +a2 +61 +1a +8b +18 +7e +33 +e5 +2a +ad +dc +11 +9e +f9 +e6 +40 +3c +61 +92 +4a +7c +f2 +29 +f6 +61 +9e +f9 +ba +ce +ee +7c +04 +f2 +67 +59 +96 +17 +4c +93 +80 +78 +f5 +0c +ca +f6 +d6 +58 +0f +ce +d0 +15 +64 +72 +3d +29 +79 +b3 +3b +77 +f6 +89 +95 +1b +7c +77 +b6 +50 +e4 +8a +84 +08 +53 +93 +26 +12 +c0 +80 +f9 +b5 +5b +fc +78 +de +64 +1e +09 +02 +c5 +50 +3b +2f +6c +c4 +50 +66 +47 +71 +b9 +4d +55 +90 +95 +7b +66 +9e +a0 +8b +96 +f3 +68 +e1 +1e +b9 +05 +42 +7e +26 +50 +ed +18 +5d +60 +03 +ab +70 +4e +23 +88 +93 +00 +cd +d9 +20 +06 +0d +39 +34 +b4 +40 +74 +78 +3d +b3 +97 +17 +28 +38 +c9 +be +31 +8b +5f +89 +20 +58 +e6 +7d +9e +c9 +40 +19 +87 +0d +75 +82 +29 +e6 +30 +18 +cd +85 +d4 +49 +2e +0e +b8 +c0 +a9 +0d +3a +66 +6e +76 +16 +dd +ab +33 +16 +01 +ec +96 +11 +57 +29 +29 +ee +74 +bc +e8 +d3 +bf +b8 +a7 +08 +85 +8f +db +f6 +61 +be +a1 +f0 +92 +7f +6e +51 +92 +a8 +61 +51 +fd +03 +b0 +01 +93 +6c +82 +da +6d +8c +14 +7a +1a +f2 +e9 +1b +22 +a4 +02 +ce +75 +8f +d7 +43 +22 +6a +87 +0f +3e +36 +35 +23 +1a +39 +0a +20 +c6 +ae +e1 +72 +81 +89 +79 +dc +c4 +db +5e +8b +d9 +80 +2b +c5 +c0 +bf +fd +a3 +5c +28 +8d +02 +7c +ba +de +7d +61 +59 +96 +87 +9a +09 +29 +2b +b3 +ca +2c +97 +20 +e7 +41 +e5 +19 +59 +d8 +18 +c9 +df +69 +03 +bb +71 +1a +93 +ba +67 +b8 +45 +39 +7d +d1 +d5 +78 +c6 +b9 +37 +f8 +c3 +ee +e4 +67 +50 +46 +f3 +c3 +00 +4a +b1 +04 +a4 +36 +c5 +51 +35 +2e +70 +d5 +17 +9c +43 +ce +48 +c5 +ee +71 +07 +44 +de +45 +96 +b3 +c4 +cd +b1 +21 +81 +d0 +d9 +6a +c0 +ec +69 +aa +14 +51 +15 +9f +ab +cf +3f +b8 +89 +98 +09 +ae +cc +4d +4f +09 +7e +86 +b4 +b7 +35 +21 +5c +89 +d1 +3b +0d +af +e7 +5d +f0 +02 +0b +22 +be +f4 +97 +3b +45 +7f +54 +8b +4a +89 +98 +df +f7 +92 +32 +ec +44 +69 +51 +aa +7e +bc +92 +21 +2b +ae +1a +06 +f7 +82 +be +99 +25 +a5 +32 +e1 +0d +d0 +2a +ad +a8 +94 +87 +66 +c4 +27 +ed +5a +57 +99 +36 +eb +bf +5c +7a +2c +97 +62 +fd +bf +e1 +4c +70 +b2 +c0 +11 +83 +78 +ac +d6 +44 +05 +6f +ec +83 +c7 +74 +b5 +48 +67 +e3 +88 +9c +2a +f1 +17 +66 +10 +86 +aa +5a +bd +c1 +bd +1b +e4 +1c +0f +66 +34 +3e +0e +c5 +17 +a7 +a5 +98 +49 +b2 +b5 +a3 +7a +99 +0c +e4 +48 +7b +09 +8d +bd +d9 +17 +8b +28 +84 +11 +f4 +37 +36 +54 +c8 +73 +ee +8e +d0 +18 +15 +6b +b3 +40 +11 +53 +b0 +96 +f8 +53 +aa +14 +c3 +65 +b2 +c3 +21 +54 +13 +eb +ce +8d +c0 +7c +4b +af +dd +02 +61 +3e +16 +59 +05 +6a +4d +01 +0e +97 +0b +38 +dc +7e +10 +07 +24 +03 +d8 +c9 +62 +2e +eb +f4 +03 +0b +6a +b6 +40 +f7 +02 +2d +5c +2c +93 +8c +0c +a2 +15 +6b +c1 +61 +64 +b2 +32 +06 +63 +de +1f +90 +4a +5c +0d +9f +63 +d4 +6e +b4 +13 +08 +1c +80 +9a +f2 +cb +c2 +47 +d2 +6b +b6 +cb +74 +c5 +80 +22 +cb +c9 +b7 +d6 +0b +17 +d0 +32 +55 +e7 +36 +02 +4b +61 +46 +ab +9f +1c +1c +6d +64 +8b +9f +df +25 +6a +60 +2b +7c +46 +9d +a0 +4b +ff +b6 +b7 +35 +57 +28 +a0 +53 +08 +b9 +33 +6a +49 +a1 +52 +2d +7e +7e +e0 +ad +2f +d2 +47 +2b +b9 +cf +88 +2a +48 +51 +f5 +ba +5b +43 +3d +ef +66 +6f +b0 +bf +ed +43 +58 +af +df +5b +60 +05 +05 +1e +74 +c1 +62 +44 +f4 +57 +92 +88 +a0 +da +8c +2f +49 +59 +8f +74 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kbar.hex new file mode 100644 index 0000000..6f2271f --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kbar.hex @@ -0,0 +1,32 @@ +52 +d0 +42 +14 +da +32 +7d +b1 +27 +94 +31 +10 +1e +f0 +b8 +d8 +c1 +ab +39 +fb +c3 +69 +60 +18 +4a +a8 +69 +c2 +4b +16 +79 +71 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kprime.hex new file mode 100644 index 0000000..02a4b82 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_kprime.hex @@ -0,0 +1,32 @@ +23 +f2 +11 +b8 +4a +6e +e2 +0c +8c +29 +f6 +e5 +31 +4c +91 +b4 +14 +e9 +40 +51 +3d +38 +0a +dd +17 +bd +72 +4a +b3 +a1 +3a +52 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_rprime.hex new file mode 100644 index 0000000..0d42df5 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c0_rprime.hex @@ -0,0 +1,32 @@ +3e +27 +51 +88 +8a +87 +ac +c8 +33 +a6 +e8 +83 +01 +8e +16 +0d +e9 +28 +5e +2b +f9 +60 +33 +f0 +ca +8b +e9 +7d +42 +b1 +63 +85 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_cprime.hex new file mode 100644 index 0000000..583ba92 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_cprime.hex @@ -0,0 +1,1568 @@ +fc +06 +34 +59 +b7 +ba +4d +7a +97 +70 +21 +e6 +1c +26 +e6 +4c +0c +5d +e2 +e0 +8d +72 +f5 +8c +35 +67 +05 +28 +6a +36 +b1 +23 +ba +da +21 +d2 +06 +7f +91 +e5 +13 +55 +46 +31 +d6 +8f +b3 +14 +ce +44 +37 +93 +e1 +2a +cc +a0 +b5 +ad +d2 +e0 +d5 +16 +c7 +6f +9a +4b +21 +71 +65 +75 +aa +ae +1f +8f +86 +8a +97 +fc +65 +4b +e4 +d6 +2c +02 +74 +6a +59 +61 +fd +5c +94 +80 +a4 +23 +c2 +49 +f8 +10 +a9 +1b +c5 +bf +97 +83 +3b +57 +2e +f5 +d7 +bc +87 +77 +9c +19 +80 +aa +9e +84 +4f +11 +f0 +b9 +a9 +fc +52 +1d +c9 +c3 +88 +f8 +21 +d8 +dc +61 +52 +9c +d5 +e8 +b9 +08 +2a +4a +9f +48 +7a +df +db +70 +28 +3c +15 +82 +b9 +85 +96 +7c +97 +34 +20 +cb +67 +71 +c5 +9f +74 +e7 +65 +80 +8c +ae +6a +5f +0c +bc +14 +8e +d1 +65 +ef +2a +cd +16 +15 +74 +df +fc +e4 +83 +cb +f4 +b9 +71 +13 +ca +90 +d2 +00 +56 +6b +93 +44 +49 +ec +f0 +84 +7d +3b +95 +e7 +fa +8f +3a +a9 +2e +68 +a8 +31 +3d +90 +17 +81 +c9 +a6 +fd +83 +2d +99 +1d +5f +02 +c1 +46 +b0 +f6 +ab +c7 +e5 +f0 +7c +5e +3a +d9 +96 +59 +01 +c0 +77 +68 +05 +01 +0a +5c +10 +e1 +90 +15 +39 +76 +2d +56 +5c +c7 +e6 +46 +fa +60 +0c +2d +75 +2f +f7 +9f +0f +9c +32 +af +c9 +2d +c7 +25 +b4 +97 +79 +a5 +61 +00 +54 +db +a7 +13 +ae +84 +39 +f6 +52 +7b +b6 +88 +6d +da +ae +07 +1a +b1 +59 +ea +b1 +87 +a4 +19 +6e +4e +b0 +55 +37 +4e +eb +4c +76 +3e +d3 +b0 +c7 +7e +d5 +b4 +a9 +72 +c4 +8d +f7 +3e +c5 +5c +51 +a6 +ed +90 +bc +0a +7d +b4 +6e +8e +ac +e0 +89 +66 +7a +1e +57 +42 +63 +c8 +6f +4d +ae +a6 +73 +dc +68 +ca +4f +24 +a8 +cb +c1 +6b +b4 +02 +e7 +a7 +5f +1e +79 +b7 +39 +24 +71 +65 +b2 +95 +fb +9f +67 +82 +89 +da +6f +3e +a5 +ff +64 +40 +cb +b0 +39 +de +ed +50 +ca +18 +81 +b1 +56 +c6 +e7 +6c +04 +69 +4a +c9 +2b +fc +64 +f0 +60 +34 +73 +8c +11 +6c +8a +83 +e4 +d0 +39 +2e +1e +ce +fb +e4 +3c +17 +7f +98 +01 +6f +74 +e1 +68 +42 +a9 +2c +76 +9c +de +c7 +54 +34 +b8 +5f +77 +61 +12 +28 +da +b3 +e1 +e2 +3c +6d +98 +d2 +4a +1f +eb +84 +e2 +2b +91 +bc +da +32 +c1 +a9 +d2 +5e +b3 +10 +4d +35 +68 +ec +0b +cf +22 +d5 +3b +ce +95 +56 +08 +f6 +d5 +9f +f0 +f1 +e2 +7a +27 +a5 +71 +c8 +1e +55 +45 +07 +74 +0f +9e +33 +41 +65 +f2 +14 +3d +ad +50 +57 +b3 +a0 +fb +84 +ba +57 +12 +38 +eb +95 +24 +d3 +bb +d5 +99 +b1 +dd +5c +fb +a6 +3a +95 +19 +72 +31 +55 +a9 +16 +30 +92 +bc +d0 +c0 +c0 +d2 +bd +d1 +fc +6b +4f +b6 +30 +b3 +f6 +74 +f6 +57 +54 +b6 +0a +9f +e2 +38 +d3 +c8 +b9 +7e +74 +58 +36 +67 +99 +10 +07 +cd +2c +27 +14 +bf +a1 +5b +93 +9f +1d +4b +01 +70 +f3 +9d +fa +95 +4c +9f +4b +d9 +ee +6d +bb +19 +64 +17 +f9 +a8 +66 +61 +c3 +3f +1f +2e +e9 +3f +9f +3f +ee +3a +9b +3a +a8 +a4 +2b +ba +e0 +1d +92 +fe +59 +36 +d1 +96 +78 +0f +31 +88 +5e +2c +15 +16 +ab +a7 +ba +a1 +3f +01 +88 +32 +b4 +28 +50 +23 +b5 +3b +11 +53 +bc +c8 +44 +bf +35 +7e +18 +a0 +c2 +3d +3f +88 +57 +db +10 +70 +25 +a3 +cd +f2 +c1 +33 +8c +3b +87 +2e +f5 +3f +bc +a7 +4e +25 +78 +32 +b7 +0d +18 +66 +ff +b6 +1f +4a +e6 +d8 +4c +2a +59 +92 +50 +de +a3 +8f +a3 +65 +b0 +45 +c3 +99 +cf +57 +a0 +b3 +55 +cb +eb +b1 +a5 +ab +b2 +bc +21 +03 +55 +04 +04 +70 +d1 +59 +45 +02 +3b +61 +96 +bf +4e +6e +8e +39 +c7 +21 +69 +af +d1 +21 +92 +c1 +a2 +e8 +1f +4d +99 +b4 +a8 +90 +8f +4d +fc +a3 +86 +9a +e2 +d5 +9d +70 +ff +4d +f1 +0e +b2 +ba +7f +86 +2b +f5 +fb +a1 +b6 +ff +20 +50 +f6 +c4 +f9 +02 +9f +07 +e9 +3b +01 +f4 +10 +d3 +c0 +1f +a8 +dc +1b +26 +10 +98 +42 +c8 +fe +c6 +17 +54 +34 +48 +fc +38 +b6 +7d +62 +ad +2c +9d +8f +40 +ed +40 +0f +b1 +e2 +c1 +28 +5f +c8 +07 +07 +5a +7b +29 +de +be +51 +e7 +7d +55 +d3 +2f +2c +eb +2e +da +0a +df +24 +ab +89 +55 +67 +85 +18 +b8 +df +b7 +38 +ff +a5 +d2 +16 +dc +74 +fa +24 +b9 +5a +13 +65 +e9 +80 +59 +cc +de +90 +67 +3a +c1 +8d +dc +7c +51 +58 +3f +b0 +10 +23 +f1 +ed +42 +27 +10 +1b +ae +46 +95 +2d +33 +c1 +d6 +1a +05 +ce +13 +0e +0e +d0 +96 +77 +b1 +15 +48 +66 +bc +19 +0d +e0 +ff +74 +08 +41 +12 +63 +67 +53 +72 +3b +7f +fa +29 +57 +93 +f3 +8b +1d +a6 +af +99 +a6 +26 +46 +f4 +a2 +34 +ab +da +5a +3e +18 +e0 +f7 +6f +64 +35 +b8 +e2 +44 +5d +41 +9b +d2 +e3 +92 +34 +ba +21 +f1 +f5 +6e +37 +29 +94 +83 +eb +d4 +b4 +49 +5d +f6 +e4 +ce +20 +46 +eb +37 +b1 +5c +8c +60 +55 +7f +2f +86 +aa +63 +eb +70 +3f +aa +28 +03 +d6 +4f +97 +d9 +f3 +f7 +de +3b +f2 +13 +94 +b9 +79 +be +6e +c1 +70 +7a +fd +e3 +6c +6c +23 +4c +ad +9f +49 +74 +88 +45 +af +ca +60 +b8 +17 +1f +f6 +1e +7a +7b +af +5c +b5 +28 +a9 +0d +8d +27 +d2 +65 +03 +90 +18 +a7 +7e +9a +64 +36 +03 +29 +1b +86 +99 +14 +9c +d1 +9f +6e +4c +1c +54 +8e +cf +17 +3f +6b +03 +09 +7e +d3 +e6 +68 +67 +ae +b6 +ea +cf +17 +93 +0a +c9 +0c +8c +da +e4 +d8 +09 +a9 +ed +76 +19 +f2 +5c +95 +2e +ba +38 +6a +b8 +e9 +0a +3f +9d +da +86 +6b +51 +43 +10 +e3 +8c +39 +bb +3c +b8 +63 +e0 +1e +ce +b4 +9f +c9 +83 +9a +74 +f0 +0f +e0 +3b +11 +51 +22 +f1 +9d +bb +99 +5c +9d +28 +38 +ce +c6 +5b +bc +1b +6d +eb +d1 +86 +95 +66 +f9 +3a +43 +be +fd +49 +aa +39 +de +ff +63 +ee +19 +0e +7e +41 +ee +f6 +b1 +c5 +24 +c8 +72 +8c +09 +86 +a8 +31 +71 +1c +97 +26 +e4 +05 +ca +a3 +c2 +5a +d6 +81 +99 +63 +ee +a7 +47 +49 +40 +6d +1f +fd +1c +ce +1d +9d +e6 +fd +37 +09 +0e +e2 +3f +cc +9b +3a +ed +4e +6d +12 +00 +8b +09 +04 +67 +9e +5c +62 +0f +9b +4c +70 +06 +2b +d1 +d4 +3c +51 +9e +aa +a3 +b1 +57 +cc +52 +bd +e0 +bb +b9 +6d +25 +c5 +f1 +62 +5c +7b +4d +b8 +52 +e8 +c3 +f8 +a2 +c8 +e3 +12 +ae +0a +2c +48 +10 +14 +72 +3c +0b +8a +88 +e3 +c1 +36 +59 +1b +15 +2c +77 +cf +52 +10 +39 +31 +ae +8d +79 +09 +7b +bb +b1 +63 +7d +69 +f4 +67 +6a +78 +4b +b8 +ef +00 +9e +49 +a7 +8d +66 +a7 +0f +0f +e6 +b4 +63 +7e +9d +46 +f2 +a4 +e5 +1b +aa +a6 +64 +58 +d9 +41 +ae +90 +d0 +13 +0b +7c +92 +ff +0c +35 +4b +16 +57 +64 +6b +5f +03 +3f +6a +01 +02 +47 +6e +e2 +fd +c7 +72 +34 +d9 +fd +05 +0e +92 +59 +d6 +85 +22 +c5 +2b +c4 +d8 +0b +ca +72 +e5 +63 +86 +0d +18 +32 +af +bd +00 +23 +ac +94 +23 +64 +a8 +9f +b4 +a2 +6e +15 +47 +45 +ca +93 +55 +b9 +02 +be +ef +b3 +05 +57 +b4 +85 +1f +fd +b6 +21 +86 +42 +18 +bf +a4 +fd +51 +92 +14 +14 +04 +35 +e1 +d1 +4c +5f +b5 +94 +ee +be +67 +47 +56 +ca +c4 +56 +df +9b +d1 +b7 +28 +25 +4f +b4 +56 +44 +5e +6d +99 +d1 +1d +cd +7c +43 +c9 +14 +fb +3d +80 +12 +da +13 +74 +70 +63 +3d +9f +e8 +fb +e9 +48 +29 +ea +fc +9c +40 +99 +ec +3a +55 +81 +59 +92 +f1 +52 +85 +db +50 +eb +d8 +e5 +a4 +f4 +fc +72 +a9 +63 +bd +23 +9c +b4 +66 +05 +5c +93 +03 +e7 +13 +a4 +a6 +ca +99 +19 +1f +bf +66 +ca +ee +cc +3d +5e +a6 +60 +38 +e0 +c5 +d8 +6a +da +e8 +c8 +58 +1c +79 +62 +38 +49 +6a +92 +d1 +f5 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kbar.hex new file mode 100644 index 0000000..e43325c --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kbar.hex @@ -0,0 +1,32 @@ +b8 +cb +b2 +8a +5e +0c +1a +2c +c3 +87 +ec +be +75 +b0 +bb +2d +0f +c4 +40 +26 +26 +d6 +3e +ec +e2 +2f +4b +82 +f2 +77 +cd +d0 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kprime.hex new file mode 100644 index 0000000..a02f7cc --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_kprime.hex @@ -0,0 +1,32 @@ +26 +22 +50 +3a +2a +54 +4f +35 +83 +92 +90 +3e +6f +2a +dc +5a +2d +94 +fe +01 +05 +83 +b5 +74 +a5 +4d +9a +7e +6d +22 +3a +24 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_rprime.hex new file mode 100644 index 0000000..0e7e6b3 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c1_rprime.hex @@ -0,0 +1,32 @@ +fd +db +06 +63 +19 +03 +51 +7f +ff +a8 +a7 +df +a6 +97 +43 +4e +45 +ab +84 +d5 +0e +bc +d5 +28 +31 +8d +18 +bf +e3 +26 +97 +89 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_cprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_cprime.hex new file mode 100644 index 0000000..0772b1a --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_cprime.hex @@ -0,0 +1,1568 @@ +b9 +b6 +c3 +b6 +8f +90 +1e +11 +43 +f4 +fa +61 +d5 +89 +64 +54 +55 +39 +1a +09 +40 +19 +16 +ac +70 +d1 +ca +d9 +b4 +2e +5b +d6 +1d +cf +4b +b6 +2d +b4 +54 +f5 +80 +af +65 +a8 +cf +07 +d8 +48 +bc +85 +c8 +f4 +62 +2f +9d +bf +ca +42 +40 +57 +b6 +36 +fe +56 +58 +ee +bb +2c +52 +83 +9a +43 +13 +5a +ac +ca +f1 +98 +f1 +38 +6e +d5 +a7 +00 +bf +cc +ed +d5 +6b +29 +88 +9e +75 +9d +6c +32 +cb +b9 +ca +99 +49 +5e +d2 +65 +66 +31 +48 +d0 +9d +41 +cb +35 +9b +16 +c8 +d3 +5e +ee +9e +a3 +6c +0e +1d +3c +2f +25 +82 +54 +7f +0f +14 +54 +3d +f9 +89 +55 +9b +ad +d2 +27 +42 +99 +06 +61 +b7 +30 +fa +6e +33 +5a +35 +5d +e5 +40 +31 +be +57 +9f +8a +e9 +20 +1e +69 +05 +fd +ba +02 +00 +10 +59 +11 +82 +e9 +e2 +69 +81 +cf +21 +80 +3c +d1 +ad +f3 +45 +b3 +ec +22 +01 +b5 +1b +09 +83 +12 +a5 +a5 +8c +81 +69 +99 +40 +42 +22 +42 +82 +40 +ae +93 +af +75 +bc +81 +58 +37 +1a +aa +a3 +bf +2b +65 +a6 +bf +d2 +05 +55 +ca +05 +2c +e2 +f6 +0a +1f +e2 +2f +85 +e5 +01 +0b +81 +1c +6b +3b +fb +00 +58 +85 +5b +db +41 +de +67 +a1 +ac +2e +be +61 +45 +d3 +f1 +7a +ec +c7 +74 +85 +26 +c7 +e8 +7c +43 +18 +de +ad +3e +a4 +7c +a8 +45 +3c +c7 +ee +a4 +25 +a0 +e7 +e6 +99 +a6 +44 +28 +5f +a7 +88 +7e +aa +46 +68 +14 +ad +25 +3c +0e +b0 +44 +e4 +a5 +82 +fc +ba +56 +f1 +ac +13 +f3 +d9 +12 +7d +32 +30 +63 +cc +2f +c0 +2e +71 +e4 +83 +23 +b9 +b6 +84 +25 +70 +c8 +48 +25 +19 +93 +b0 +d9 +99 +7a +8c +d2 +23 +23 +8f +b6 +29 +08 +65 +b0 +fa +0d +b0 +08 +25 +56 +4f +cf +72 +a5 +fd +23 +b9 +b0 +fa +43 +84 +47 +9d +aa +d8 +f7 +af +a8 +a2 +1f +fc +bc +ca +2a +4e +f7 +92 +08 +dc +45 +e6 +e4 +70 +61 +30 +2b +c1 +77 +20 +e7 +a3 +5b +e5 +c5 +b6 +8c +db +45 +bb +fd +fd +aa +52 +5f +e9 +fc +af +0d +12 +c8 +2f +8d +0a +45 +73 +f7 +c4 +0b +45 +3e +f8 +cb +e9 +1e +ff +96 +d6 +de +be +da +fe +81 +c3 +8c +ec +14 +be +cb +bc +17 +cf +d0 +02 +aa +59 +c4 +25 +d4 +b1 +01 +16 +6b +36 +6d +c0 +5f +f3 +11 +9d +f9 +b1 +44 +e0 +d8 +f1 +80 +db +bd +fc +35 +64 +00 +d4 +55 +79 +28 +12 +3d +e3 +9c +29 +34 +95 +c5 +e0 +ef +3f +fe +ce +5b +c5 +e0 +b3 +59 +2a +bf +2d +72 +1d +9c +b5 +23 +fd +17 +9b +3d +f3 +9c +73 +28 +ef +14 +c1 +f3 +99 +60 +65 +ae +a8 +3b +1b +0c +4d +83 +c6 +96 +7d +9d +bb +e6 +bc +fc +d6 +0a +d6 +0f +71 +1e +ed +37 +01 +1b +5b +84 +b5 +94 +ca +b9 +0a +81 +79 +94 +5e +3e +b4 +09 +5e +5a +5f +57 +4b +6e +ee +52 +5e +67 +28 +1b +d5 +a4 +e1 +26 +be +55 +e7 +2f +18 +03 +9b +2b +81 +9b +7a +a5 +9d +9b +7c +e0 +d6 +3d +89 +e0 +2a +88 +14 +ff +93 +8e +dd +15 +3c +9b +f9 +bb +56 +2c +04 +ad +41 +48 +58 +7c +80 +53 +7c +b0 +3d +2f +83 +35 +1d +60 +43 +5a +72 +a3 +9e +9a +32 +81 +10 +d4 +8d +05 +f0 +80 +00 +03 +1c +71 +84 +b7 +ab +5e +6d +0d +32 +7e +32 +11 +e9 +67 +da +de +f7 +11 +5f +5c +26 +d4 +3b +b1 +15 +b5 +92 +87 +50 +19 +67 +5d +75 +7b +a5 +00 +12 +a6 +c9 +9a +1a +87 +34 +d7 +ee +73 +1b +3a +c4 +b0 +f1 +4b +a7 +14 +21 +7a +29 +4e +3a +30 +9d +c0 +94 +86 +50 +7b +ea +ad +37 +c7 +d5 +0b +06 +41 +53 +55 +ba +eb +30 +21 +9a +3e +50 +fa +b7 +fd +e9 +3d +a8 +8c +4a +8e +f9 +1f +42 +7f +86 +ac +7f +15 +46 +ae +55 +71 +c8 +92 +9b +ad +17 +59 +c8 +c9 +b3 +df +ea +69 +a0 +d4 +ef +94 +76 +76 +33 +a8 +1e +c8 +91 +9c +6d +f9 +47 +9a +45 +d3 +7c +82 +78 +cd +d2 +94 +35 +e1 +5c +6b +e2 +ac +57 +42 +05 +0e +a9 +62 +54 +d7 +01 +3a +cb +b0 +4b +de +44 +13 +0f +f7 +f9 +7d +d8 +09 +55 +16 +c3 +7c +6c +60 +8f +6b +bd +f2 +10 +51 +aa +18 +ce +87 +a8 +31 +0a +d4 +dd +00 +49 +ca +b6 +ba +9c +0f +23 +63 +c7 +59 +d7 +c4 +b8 +b0 +5e +be +02 +02 +12 +bb +5b +65 +e1 +a8 +f6 +f0 +73 +bc +2d +cc +e9 +c2 +1e +38 +f4 +f6 +04 +65 +4f +17 +1a +74 +0c +9b +e2 +91 +65 +ad +bc +73 +98 +a4 +8b +74 +17 +3f +e7 +46 +7a +6f +42 +65 +f8 +92 +4e +3b +60 +84 +73 +1e +19 +53 +f4 +11 +46 +b9 +0c +f4 +de +be +61 +b1 +ce +4a +4c +33 +ca +8b +06 +90 +37 +01 +26 +7c +7a +a5 +18 +3c +52 +fa +09 +28 +9b +74 +d4 +ad +37 +53 +73 +a0 +4e +ee +8e +8f +78 +d0 +1f +51 +43 +a4 +cf +9a +d9 +ff +e6 +73 +82 +97 +79 +90 +0c +51 +d8 +a2 +a3 +2e +28 +12 +e4 +99 +d9 +bc +d8 +7f +bc +f3 +9e +f1 +5b +c0 +a7 +f8 +68 +98 +9b +68 +60 +10 +d1 +02 +ab +17 +b6 +9d +fe +8d +e3 +ff +58 +f3 +ab +3a +86 +3a +79 +64 +9f +fe +e0 +92 +7e +3f +08 +1e +6c +4e +08 +52 +88 +84 +a4 +03 +50 +47 +bc +e2 +60 +64 +5e +99 +21 +67 +3f +8b +c5 +62 +ee +aa +7f +ab +c9 +52 +54 +3b +cb +25 +57 +ed +32 +69 +5a +98 +11 +25 +88 +2a +ac +01 +c0 +ef +fb +43 +59 +7b +5f +3d +8b +f3 +49 +5a +17 +c7 +af +4b +bb +1e +96 +43 +1d +4d +6f +27 +8e +25 +e7 +90 +5a +49 +e8 +83 +e1 +d7 +f2 +0c +16 +3b +35 +55 +65 +37 +2b +32 +18 +2c +2a +c5 +e6 +11 +08 +7f +7b +53 +88 +49 +68 +72 +ef +24 +94 +2d +22 +b1 +6c +4d +04 +ee +62 +c7 +9c +c3 +23 +1c +d0 +be +c4 +e6 +f9 +8e +ab +53 +fc +af +62 +10 +1b +79 +fe +ac +77 +7c +5f +95 +40 +7c +32 +e8 +df +54 +50 +9a +47 +c4 +dd +0c +5a +21 +96 +57 +3e +9d +5d +1d +79 +56 +80 +96 +c3 +6e +96 +31 +f7 +ea +97 +37 +e8 +d3 +5f +27 +fe +70 +b1 +00 +47 +92 +d5 +b9 +f7 +4a +3d +a4 +71 +08 +cf +13 +5a +22 +45 +d5 +b2 +ca +80 +28 +0b +4a +74 +80 +11 +4e +c6 +5a +c0 +70 +ae +01 +df +fd +6b +6d +65 +b3 +fd +d0 +d1 +2c +55 +f6 +8c +1b +8f +b5 +56 +75 +e4 +e7 +38 +ae +c6 +8a +e4 +04 +03 +3f +87 +f3 +83 +cf +0d +af +82 +f9 +46 +00 +31 +75 +fb +30 +0e +09 +ac +17 +15 +ec +b1 +18 +0f +c2 +6e +10 +a2 +5e +b1 +b2 +3e +5c +d5 +20 +b0 +58 +a3 +5c +3c +dd +8b +07 +e1 +f4 +4d +fb +a7 +09 +1b +43 +a6 +cd +dc +eb +77 +ca +0c +ab +57 +eb +b7 +a8 +25 +c9 +d7 +be +55 +8b +89 +75 +b7 +b0 +c2 +6b +de +0d +3c +fe +53 +37 +b9 +9e +46 +f6 +65 +9e +82 +29 +b6 +19 +d8 +b5 +39 +3b +65 +1c +71 +fd +87 +9d +7c +29 +a1 +c7 +8a +9d +0f +3a +71 +ad +a5 +62 +84 +68 +56 +5c +c9 +21 +fe +9c +a7 +6d +d8 +86 +71 +79 +f8 +77 +53 +7e +06 +77 +3e +83 +78 +0b +58 +c4 +a8 +cc +80 +8d +a2 +58 +77 +aa +f1 +b2 +0b +43 +c9 +4c +22 +20 +d7 +45 +65 +15 +f7 +c8 +16 +12 +f5 +0d +cc +e4 +32 +7b +fd +97 +ad +5f +4e +9d +7c +6c +29 +c9 +03 +b6 +1c +c4 +a9 +ba +8c +54 +bf +1a +d4 +6e +ad +b5 +e4 +f7 +19 +98 +c4 +13 +c1 +15 +d6 +f5 +85 +1c +fe +a0 +1d +c7 +ea +91 +ed +31 +9a +0f +44 +8d +d0 +66 +cd +26 +df +9e +3f +83 +6a +0c +7b +c0 +90 +d9 +50 +d3 +5d +e3 +86 +2e +7f +59 +e9 +43 +aa +4b +ec +5c +66 +13 +e3 +ee +70 +11 +d1 +95 +04 +2b +d8 +18 +b0 +99 +7a +9e +33 +bd +1f +6a +43 +29 +4e +7b +45 +c0 +41 +13 +fb +99 +83 +dd +26 +d6 +a9 +81 +29 +25 +c1 +31 +1b +19 +5b +43 +e1 +59 +93 +01 +52 +b1 +b5 +52 +cd +66 +19 +21 +65 +7a +28 +78 +10 +b1 +94 +0c +cb +ce +f1 +5b diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kbar.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kbar.hex new file mode 100644 index 0000000..0536d9c --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kbar.hex @@ -0,0 +1,32 @@ +70 +ee +c6 +f0 +65 +1b +ca +f1 +9e +f2 +82 +c3 +c7 +7f +34 +9b +99 +12 +31 +0f +4c +31 +72 +7f +4c +61 +89 +c0 +0c +4b +81 +97 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kprime.hex new file mode 100644 index 0000000..5f0c4f8 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_kprime.hex @@ -0,0 +1,32 @@ +72 +3a +b6 +2b +92 +58 +0b +3d +ef +8c +e8 +87 +00 +1e +ef +e4 +d9 +05 +65 +aa +ca +f5 +43 +0e +e2 +aa +b7 +de +cf +99 +db +76 diff --git a/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_rprime.hex b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_rprime.hex new file mode 100644 index 0000000..cd1f083 --- /dev/null +++ b/sync_rtl/top/TB/vectors/decgold/dc_k4_c2_rprime.hex @@ -0,0 +1,32 @@ +b3 +f9 +50 +1f +16 +4f +37 +5b +5c +52 +6d +e4 +16 +e6 +95 +78 +9c +a9 +ae +b8 +fe +be +06 +47 +53 +b9 +c6 +83 +36 +2e +28 +67 diff --git a/sync_rtl/top/mlkem_top.v b/sync_rtl/top/mlkem_top.v index 8523f01..8cd00c9 100644 --- a/sync_rtl/top/mlkem_top.v +++ b/sync_rtl/top/mlkem_top.v @@ -195,7 +195,11 @@ module mlkem_top #( .rd_addr(cin_rd_addr), .rd_data(cin_rd_data), .wr_en(c_in_we), .wr_addr(c_in_addr), .wr_data(c_in_byte) ); - assign cin_rd_addr = cin_rd_addr_r; + // c_in read addr: D5 J presents dj_c_idx combinationally (no extra register + // stage) so the registered BRAM read yields the byte 1 cycle later, matching + // the assemble/writeback pipeline. Otherwise the registered cin_rd_addr_r + // (D1 walker / idle) drives it. + assign cin_rd_addr = (st == ST_DEC_J) ? dj_c_idx[10:0] : cin_rd_addr_r; // ================================================================ // Polynomial storage, sized for KMAX (worst case). Runtime k uses a @@ -482,6 +486,8 @@ module mlkem_top #( localparam ST_DEC_NTT = 5'd23; // D2: u_hat[i] = NTT(u'[i]) in place (bank_se rel i) localparam ST_DEC_W = 5'd24; // D3: w = v' - INTT(sum_j s_hat[j] o u_hat[j]) localparam ST_DEC_MENC = 5'd25; // D4: m' = byteEncode_1(Compress_1(w)) + localparam ST_DEC_G = 5'd26; // D5: (K',r') = G(m' || h), SHA3-512 single block + localparam ST_DEC_J = 5'd27; // D5: K-bar = J(z || c), multi-block SHAKE256 localparam ST_DONE = 5'd31; reg [4:0] st, st_next; @@ -524,7 +530,9 @@ module mlkem_top #( reg sha3_ack; // consumer ready for hash wire [511:0] kg_g_data = {248'b0, 5'b0, k_r, d_i}; // KeyGen G: [263:256]=k, [255:0]=d wire [511:0] enc_g_data = {hek_r, m_r}; // Encaps G: m || H(ek), 64 bytes - wire [511:0] g_data = (st == ST_ENC_G) ? enc_g_data : kg_g_data; + wire [511:0] dec_g_data = {hek_r, mprime_r}; // Decaps D5 G: m' || h, 64 bytes + wire [511:0] g_data = (st == ST_ENC_G) ? enc_g_data : + (st == ST_DEC_G) ? dec_g_data : kg_g_data; // ================================================================ // Shared keccak_core + phase mux (3 consumers -> 1 core) @@ -551,7 +559,8 @@ module mlkem_top #( // phase selects (mutually exclusive). Encaps adds ST_ENC_H/G (sha3), // ST_ENC_A (snt), ST_ENC_C (cbd). wire sel_sha3 = (st == ST_G) || (st == ST_H) || - (st == ST_ENC_H) || (st == ST_ENC_G); + (st == ST_ENC_H) || (st == ST_ENC_G) || + (st == ST_DEC_G) || (st == ST_DEC_J); wire sel_snt = (st == ST_A) || (st == ST_ENC_A); wire sel_cbd = (st == ST_C) || (st == ST_ENC_C); @@ -578,15 +587,17 @@ module mlkem_top #( .ready_i(1'b1) // consumers always accept (kc_ready_i=1) ); - // ---- single shared sha3_top serving BOTH G and H ---- - // G (ST_G) uses single-block mode (mb_en=0); H(ek) (ST_H) uses the - // multi-block absorb path (mb_en=1). These phases are disjoint in the - // top FSM, so one sha3_top (one keccak_core) is sufficient. mb_en and - // ready_i are muxed by phase; data_i/mode only matter while mb_en=0. - wire sha3_mb_en = (st == ST_H) || (st == ST_ENC_H); - // sha3 single-block mode: 2'b00 = G(33B) for KeyGen, 2'b11 = G(64B) for - // Encaps (m||H(ek)). mode only matters when mb_en=0. - wire [1:0] sha3_mode = (st == ST_ENC_G) ? 2'b11 : 2'b00; + // G/H/J share one sha3_top. Single-block (mb_en=0): KeyGen G (ST_G, mode 00), + // Encaps G (ST_ENC_G, mode 11), Decaps D5 G (ST_DEC_G, mode 11). Multi-block + // absorb (mb_en=1): H(ek) (ST_H/ST_ENC_H, SHA3-256 pad) and Decaps D5 J + // (ST_DEC_J, SHAKE256 pad over z||c). mb_* inputs are muxed by phase. + wire sha3_mb_en = (st == ST_H) || (st == ST_ENC_H) || (st == ST_DEC_J); + wire [1:0] sha3_mode = (st == ST_ENC_G || st == ST_DEC_G) ? 2'b11 : 2'b00; + // multi-block feed mux: J (ST_DEC_J) drives dj_*, else H drives h_*. + wire [1087:0] mb_block_mux = (st == ST_DEC_J) ? dj_block_r : h_block_r; + wire mb_valid_mux = (st == ST_DEC_J) ? dj_mbvalid : h_mbvalid; + wire mb_last_mux = (st == ST_DEC_J) ? dj_mblast : h_mblast; + wire mb_ack_mux = (st == ST_DEC_J) ? dj_ack : h_ack; sha3_top_shared u_sha3 ( .clk(clk), .rst_n(rst_n), .mode(sha3_mode), // G = SHA3-512 (only used when mb_en=0) @@ -595,11 +606,11 @@ module mlkem_top #( .ready_o(sha3_ready), .hash_o(sha3_hash), .valid_o(sha3_vo), - .ready_i(sha3_mb_en ? h_ack : sha3_ack), + .ready_i(sha3_mb_en ? mb_ack_mux : sha3_ack), .mb_en(sha3_mb_en), - .mb_block_i(h_block_r), - .mb_valid_i(h_mbvalid), - .mb_last_i(h_mblast), + .mb_block_i(mb_block_mux), + .mb_valid_i(mb_valid_mux), + .mb_last_i(mb_last_mux), .mb_ready_o(h_mbready), // shared keccak_core interface (gated by phase in the mux below) .kc_state_o(kc_state_o), @@ -631,6 +642,43 @@ module mlkem_top #( reg [7:0] h_wb_pad; // pad constant to use if g is out of ek range reg h_wb_inek; // 1 if g is within ek range (use BRAM data) + // ---- Decaps D5 J(z||c) multi-block SHAKE256 state ---- + // Message = z (32 B, from z_r) || c (ct_bytes_rt B, from c_in_bram). Rate=136. + // SHAKE256 pad: byte at msg_len = 0x1F, last byte of last block |= 0x80. + // Reuses the shared u_sha3 mb_* port (muxed by ST_DEC_J above). + reg [1087:0] dj_block_r; // current pre-padded rate block + reg dj_mbvalid; + reg dj_mblast; + reg dj_ack; + reg [3:0] dj_blk; // block index 0..DJ_NBLK-1 (z||c up to ~1600B -> <=12 blks) + reg [7:0] dj_byte; // 0..136 byte being assembled + reg [1:0] dj_phase; // 0=assemble 1=feed 2=wait-perm 3=done + reg dj_done; + // writeback pipeline (c_in_bram registered read, 1-cyc latency) + reg dj_wb_vld; + reg [7:0] dj_wb_idx; // position within 136-byte block + reg dj_wb_inc; // 1 if global byte g is within c range (use BRAM) + reg dj_wb_inz; // 1 if g < 32 (use z_r byte) + reg [7:0] dj_wb_pad; // pad constant if g out of msg range + reg [4:0] dj_wb_zidx; // z byte index (g) when inz + // J message length = 32 (z) + ct_bytes_rt; total padded blocks. + wire [11:0] dj_msglen = 12'd32 + {1'b0, ct_bytes_rt}; + wire [11:0] dj_last_byte = (dj_msglen / 12'd136) * 12'd136 + 12'd135; // last byte of final block + wire [3:0] dj_nblk = (dj_msglen / 12'd136) + 4'd1; + // global byte index for the address presented this cycle (assemble) + wire [11:0] dj_g = {4'd0, dj_blk} * 12'd136 + {4'd0, dj_byte}; + // c_in_bram byte index (when g>=32): g-32 + wire [11:0] dj_c_idx = dj_g - 12'd32; + // SHAKE256 pad constant for global byte g + function [7:0] dj_padconst(input [11:0] g); + begin + if (g == dj_last_byte && g == dj_msglen) dj_padconst = 8'h9f; // 0x1F|0x80 + else if (g == dj_msglen) dj_padconst = 8'h1f; + else if (g == dj_last_byte) dj_padconst = 8'h80; + else dj_padconst = 8'h00; + end + endfunction + // h_hash / h_vo are now served by the shared u_sha3 above (mb_en=1 during // ST_H). They alias the single core's outputs; the H consumer logic below // already gates on st==ST_H, and u_sha3's valid_o/hash_o are mb-selected. @@ -1075,7 +1123,10 @@ module mlkem_top #( // D3: w = v' - INTT(sum_j s_hat[j] o u_hat[j]). Single output poly // (u_row 0..0); MAC->INTT->SUB, then D4 encodes m'. ST_DEC_W: if (u_row >= 3'd1) st_next = ST_DEC_MENC; - ST_DEC_MENC: if (men_done) st_next = ST_DONE; + ST_DEC_MENC: if (men_done) st_next = ST_DEC_G; + // D5: (K',r') = G(m'||h) single-block, then K-bar = J(z||c) multi-block. + ST_DEC_G: if (sha3_vo) st_next = ST_DEC_J; + ST_DEC_J: if (dj_done) st_next = ST_DONE; ST_G: if (sha3_vo) st_next = ST_A; ST_A: if (a_pair >= kk_rt) st_next = ST_C; ST_C: if (c_poly >= {1'b0, k_r, 1'b0}) st_next = ST_N; @@ -1220,6 +1271,15 @@ module mlkem_top #( men_ph <= 2'd0; men_done <= 1'b0; mprime_r <= 256'd0; + dj_blk <= 4'd0; + dj_byte <= 8'd0; + dj_phase <= 2'd0; + dj_mbvalid <= 1'b0; + dj_mblast <= 1'b0; + dj_ack <= 1'b0; + dj_done <= 1'b0; + dj_wb_vld <= 1'b0; + dj_block_r <= 1088'd0; h_blk <= 3'd0; h_byte <= 8'd0; h_phase <= 2'd0; @@ -1885,6 +1945,93 @@ module mlkem_top #( sha3_ack <= 1'b0; end + // Arm Decaps D5 G when m' is ready (ST_DEC_MENC -> ST_DEC_G): fire the + // 64-byte single-block G(m'||h). dec_g_data = {hek_r, mprime_r}. + if (st == ST_DEC_MENC && st_next == ST_DEC_G) begin + sha3_valid <= 1'b1; + sha3_ack <= 1'b1; + end + // Capture (K', r') when D5 G completes. K' = low half (candidate ss), + // r' = high half (PRF seed for D6 re-encrypt). Reuse ss_r / r_r. + if (st == ST_DEC_G && sha3_vo) begin + ss_r <= sha3_hash[255:0]; // K' = G bytes 0..31 + r_r <= sha3_hash[511:256]; // r' = G bytes 32..63 + sha3_ack <= 1'b0; + end + + // Arm D5 J(z||c) when G completes (ST_DEC_G -> ST_DEC_J): assemble the + // first 136-byte block. dj_ack high to consume the final digest. + if (st == ST_DEC_G && st_next == ST_DEC_J) begin + dj_blk <= 4'd0; + dj_byte <= 8'd0; + dj_phase <= 2'd0; + dj_mbvalid<= 1'b0; + dj_mblast <= 1'b0; + dj_ack <= 1'b1; + dj_done <= 1'b0; + dj_wb_vld <= 1'b0; + cin_rd_addr_r <= 11'd0; // present c byte 0 (g=32 -> c_idx 0) + end + + // ---- ST_DEC_J: K-bar = J(z||c) multi-block SHAKE256 ---- + // Mirror of the H(ek) multi-block machine. Byte source by global g: + // g < 32 -> z_r byte g + // 32 <= g < msglen -> c_in_bram byte (g-32), registered read + // else -> SHAKE256 pad constant + // c_in_bram read is registered: present c_idx for dj_byte this cycle, + // write back the byte that arrived for the addr presented last cycle. + if (st == ST_DEC_J && !dj_done) begin + case (dj_phase) + 2'd0: begin + // writeback the byte read for the previous address + if (dj_wb_vld) begin + if (dj_wb_inz) + dj_block_r[dj_wb_idx*8 +: 8] <= z_r[dj_wb_zidx*8 +: 8]; + else if (dj_wb_inc) + dj_block_r[dj_wb_idx*8 +: 8] <= cin_rd_data; + else + dj_block_r[dj_wb_idx*8 +: 8] <= dj_wb_pad; + end + if (dj_byte <= 8'd135) begin + dj_wb_vld <= 1'b1; + dj_wb_idx <= dj_byte; + dj_wb_inz <= (dj_g < 12'd32); + dj_wb_inc <= (dj_g >= 12'd32) && (dj_g < dj_msglen); + dj_wb_zidx <= dj_g[4:0]; + dj_wb_pad <= dj_padconst(dj_g); + // c_in addr is presented combinationally (cin_rd_addr + // mux uses dj_c_idx during ST_DEC_J); data lands next + // cycle, matching this byte's writeback. + dj_byte <= dj_byte + 8'd1; + end else begin + dj_wb_vld <= 1'b0; + dj_byte <= 8'd0; + dj_mbvalid <= 1'b1; + dj_mblast <= (dj_blk == dj_nblk - 4'd1); + dj_phase <= 2'd1; + end + end + 2'd1: begin + if (dj_mbvalid && !h_mbready) begin + dj_mbvalid <= 1'b0; + dj_mblast <= 1'b0; + dj_phase <= 2'd2; + end + end + 2'd2: begin + if (sha3_vo) begin + kbar_r <= sha3_hash[255:0]; + dj_done <= 1'b1; + dj_phase<= 2'd3; + end else if (h_mbready) begin + dj_blk <= dj_blk + 4'd1; + dj_phase <= 2'd0; + end + end + default: ; // done + endcase + end + // Arm rho-load when entering ST_ENC_LOAD. rho = ek[384k .. 384k+31]. if (st == ST_ENC_G && st_next == ST_ENC_LOAD) begin rl_idx <= 6'd0;