fix(tb): strict numerical pass/fail — FSM completion without value match now counts as FAIL

This commit is contained in:
2026-06-27 01:46:35 +08:00
parent e3470c92e1
commit 5e0ba7ad77

View File

@@ -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);