feat(poly_mul): implement synchronous PolyMul with base-case multiply

Phase 2.2: NTT-domain polynomial pointwise multiplication.
- basecase_mul.v: degree-1 base-case multiply (c0,c1) with Barrett
- poly_mul_zeta_rom.v: 128-entry zeta ROM for PolyMul
- poly_mul_sync.v: FSM (IDLE→LOAD 256 cycles→COMPUTE 256 cycles→DONE)

Verified: 5/5 vectors bit-exact vs Python PolyMul reference
This commit is contained in:
2026-06-24 23:10:18 +08:00
parent c4cd10c2c1
commit 39dd36994b
6 changed files with 604 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
{
"module": "poly_mul",
"rtl_top": "sync_rtl/poly_mul/poly_mul_sync.v",
"rtl_deps": [
"sync_rtl/poly_mul/basecase_mul.v",
"sync_rtl/poly_mul/poly_mul_zeta_rom.v",
"sync_rtl/ntt/barrett_mul.v"
],
"tb_cpp": "sync_rtl/poly_mul/TB/tb_poly_mul.cpp",
"simulator": "verilator",
"timeout_s": 300,
"cases": [
{
"id": "basic",
"description": "Pointwise multiply of two random NTT-domain polynomials, vs Python basecase_mul reference",
"params": {},
"num_vectors": 5,
"tolerance": "bit_exact"
}
]
}