# mlkem_top KAT Testbench

## Goal

编写 `mlkem_top` 的 KAT (Known Answer Test) testbench，使用 FIPS 203 标准测试向量验证 KeyGen/Encaps/Decaps 正确性。

## Data Source

`/home/fallensigh/Dev/ml-kem-r/test_data/kat_MLKEM_512.rsp`
- 100 个测试向量 (count 0-99)
- 每个向量包含：d, z, msg, pk, sk, ct, ss
- NIST FIPS 203 标准格式

## Requirements

1. Python `gen_vectors.py` 解析 KAT 文件，生成 `mlkem_top_input.hex` 和 `mlkem_top_expected.hex`
2. Verilog `tb_mlkem_top_xsim.v`：
   - 读取输入向量 (d, z, msg)
   - 驱动 KeyGen → 验证 pk, sk
   - 驱动 Encaps → 验证 ct, ss
   - 驱动 Decaps → 验证 ss
   - 超时看门狗
   - pass/fail 统计

## Decisions

* 先用 ML-KEM-512 (k=2)，后续扩展 768/1024
* 文件向量模式，遵循现有 TB 风格
* 自检模式：与 KAT 期望值逐个字节比较

## Test Flow (per vector)

1. 复位
2. KeyGen: d → verify pk, sk
3. Encaps: msg → verify ct, ss
4. Decaps: ct → verify ss (output matches ss from encaps)

## Acceptance Criteria

* [ ] 至少 count=0 的 KeyGen 通过
* [ ] 至少 count=0 的 Encaps 通过
* [ ] at least basic Decaps consistency
* [ ] xvlog 编译通过
* [ ] xsim 仿真通过

## Out of Scope

* 全部 100 个向量（先做前 5 个）
* ct_n 无效密文测试
* ML-KEM-768/1024
