diff --git a/sync_rtl/top/TB/tb_mlkem_top_xsim.v b/sync_rtl/top/TB/tb_mlkem_top_xsim.v index 837beb1..9e63949 100644 --- a/sync_rtl/top/TB/tb_mlkem_top_xsim.v +++ b/sync_rtl/top/TB/tb_mlkem_top_xsim.v @@ -314,18 +314,18 @@ module tb_mlkem_top_xsim; $display(" PASS: pk matches expected"); kg_pass = kg_pass + 1; end else begin - $display(" WARN: pk mismatch (RTL may have placeholder computation)"); + $display(" FAIL: pk mismatch"); print_hex256(pk_o[255:0], " pk[low] "); print_hex256(exp_pk[255:0], " exp[low] "); - kg_pass = kg_pass + 1; // structural pass (FSM completed) + kg_fail = kg_fail + 1; end - // Check sk output (only compare raw s_hat within port width) - // NOTE: KAT sk includes pk+H(pk)+z; mlkem_top sk_o is raw s_hat only + // Check sk output if (sk_o[SK_WIDTH-1:0] == exp_sk[SK_WIDTH-1:0]) begin $display(" PASS: sk matches expected"); end else begin - $display(" WARN: sk mismatch (RTL may have placeholder computation)"); + $display(" FAIL: sk mismatch"); + kg_fail = kg_fail + 1; end end else begin $display(" FAIL: pk_valid=%b sk_valid=%b", pk_valid, sk_valid); @@ -374,19 +374,20 @@ module tb_mlkem_top_xsim; $display(" PASS: ct matches expected"); en_pass = en_pass + 1; end else begin - $display(" WARN: ct mismatch (RTL may have placeholder computation)"); + $display(" FAIL: ct mismatch"); print_hex256(ct_o[255:0], " ct[low] "); print_hex256(exp_ct[255:0], " exp[low] "); - en_pass = en_pass + 1; // structural pass + en_fail = en_fail + 1; end // Check K (shared secret) if (K_o == exp_ss) begin $display(" PASS: K matches expected ss"); end else begin - $display(" WARN: K mismatch (RTL may have placeholder computation)"); + $display(" FAIL: K mismatch"); print_hex256(K_o, " K "); print_hex256(exp_ss, " exp_ss"); + en_fail = en_fail + 1; end end else begin $display(" FAIL: ct_valid=%b K_valid=%b", ct_valid, K_valid);