# 修复 KeyGen 计算路径

## Goal
修复 `mlkem_top.v` 中 KeyGen 的占位状态，实现 t_hat、pk、sk 的实际计算，使 `./run_tb.sh top` 中 KeyGen 产生非零输出。

## Current Issues
1. KeyGen 的 t_hat 计算（poly_mul + poly_arith）是占位：`phase_done <= 1'b1`
2. `pk_o_r` / `sk_o_r` 从未被赋值（默认 0）
3. `rng_valid_i` 竞态（可能已跨过，仿真确认 FSM 在跑）

## Fix Plan
1. 实现 `S_KG_TMUL_LOAD/COMP/OUT` 状态 → 调用 poly_mul_sync 计算 t_hat
2. 实现 `S_KG_ADD` → 调用 poly_arith_sync
3. 在 `S_KG_DONE` 中赋值 `pk_o_r = {t_hat polys, rho}` 和 `sk_o_r = {s_hat polys}`
4. 验证：`./run_tb.sh top` KeyGen 输出非零

## Out of Scope
- Encaps/Decaps 修复
- pk/sk ByteEncode 编码（先输出 raw 12-bit coeffs）
- KAT 数值完全匹配
