|
| 1 | +{ |
| 2 | + "id": "ntt-fpga", |
| 3 | + "fetchedAt": "2026-06-19T08:12:32.064Z", |
| 4 | + "sources": [ |
| 5 | + { |
| 6 | + "title": "CFNTT: Scalable Radix-2/4 NTT Multiplication Architecture (TCHES 2022)", |
| 7 | + "url": "https://tches.iacr.org/index.php/TCHES/article/view/9291" |
| 8 | + }, |
| 9 | + { |
| 10 | + "title": "CFNTT PDF (IACR TCHES)", |
| 11 | + "url": "https://tches.iacr.org/index.php/TCHES/article/download/9291/8857" |
| 12 | + }, |
| 13 | + { |
| 14 | + "title": "DOI 10.46586/tches.v2022.i1.94-126", |
| 15 | + "url": "https://doi.org/10.46586/tches.v2022.i1.94-126" |
| 16 | + }, |
| 17 | + { |
| 18 | + "url": "https://tches.iacr.org/index.php/TCHES/article/view/9291" |
| 19 | + } |
| 20 | + ], |
| 21 | + "items": [ |
| 22 | + { |
| 23 | + "kind": "paper", |
| 24 | + "file": "paper.md" |
| 25 | + } |
| 26 | + ], |
| 27 | + "attempts": [ |
| 28 | + { |
| 29 | + "method": "paper", |
| 30 | + "at": "2026-06-19T07:46:21.997Z", |
| 31 | + "gaps": [ |
| 32 | + "[operation] Exact conflict-free bank-index and offset functions, and the per-stage crossbar permutation table σ_s (the paper's headline Sec. III result) (part crossbar_network)", |
| 33 | + "[shape] BRAM depth is inconsistent: bram_0 declares depth_words=256 but the crossbar/offset map uses 128 words/bank (part bram_0)", |
| 34 | + "[operation] Twiddle-ROM addressing f(stage,block) under the rearranged-loop twiddle-reuse structure (only a seed power table + generator are given) (part twiddle_rom)", |
| 35 | + "[control] Full radix-4 transform schedule: the fused two-stage pass and radix-4 conflict-free addressing (only the butterfly unit is pinned) (part config_radix_selector)", |
| 36 | + "[timing] Radix-4 cycle accounting: reconcile bf_cycles_per_stage_r4=32 / total=160 against 256 BUs / 4 lanes = 64 cycles/stage (part config_radix_selector)", |
| 37 | + "[param] Radix-4 butterfly multiplier count contradiction (3 mults in config_radix_selector vs 2 mults in op-count reconciliation) (part config_radix_selector)", |
| 38 | + "[control] Exact FSM transition table (spec lists states but calls the transitions reconstructed/unpublished) (part schedule_controller)", |
| 39 | + "[port] PCIe/DMA framing, handshake and beat packing at the host boundary (recorded as reproduction-invented) (part host_phy)", |
| 40 | + "[param] Paper's true modulus (source gives only '14-bit NTT-friendly prime'; q=12289 is a reproduction fix)", |
| 41 | + "parameter \"radix\" — the source's real value (impls guessed \"2 implemented; 4 only as a butterfly unit, not full schedule\")", |
| 42 | + "evidence for the named property \"Conflict-free memory mapping (arbitrary radix/#BU, no bank conflict)\"", |
| 43 | + "evidence for the named property \"No bit-reversal stage / natural-order output\"", |
| 44 | + "evidence for the named property \"Radix-4: 33% fewer mults / 20% fewer add/sub\"", |
| 45 | + "evidence for the named property \"~50% butterfly hardware saved via symmetric operators\"", |
| 46 | + "evidence for the named property \"ATP advantage 2.2x/1.2x/1.1x/1.9x LUT/FF/DSP/BRAM vs radix-2\"", |
| 47 | + "the source's actual structure for: The paper's defining feature — the conflict-free interleaved-bank mapping and per-stage crossbar permutation — is replaced by a reproduction-chosen XOR-fold in both impls; the actual routing topology is unverified." |
| 48 | + ], |
| 49 | + "bytes": 10283 |
| 50 | + }, |
| 51 | + { |
| 52 | + "method": "refs", |
| 53 | + "at": "2026-06-19T08:12:32.064Z", |
| 54 | + "gaps": [ |
| 55 | + "[operation] Paper's actual conflict-free (bank,offset) mapping function and per-stage crossbar permutation sigma_s (the headline Sec. III contribution)", |
| 56 | + "[operation] Twiddle-ROM addressing function f(stage,block) under the rearranged twiddle-reuse loop", |
| 57 | + "[control] Exact FSM transition table and per-state cycle latencies (only aggregate 9 cycles/lane given)", |
| 58 | + "[param] Naive-radix-4 add/sub baseline (10 assumed) that pins the 20% reduction claim", |
| 59 | + "[operation] Whether output is genuinely bit-reversal-free in hardware vs. computed bit-reversed then relabeled", |
| 60 | + "[param] Specific 14-bit modulus of the paper benchmark (q=12289 is a reproduction fix, not the stated prime)", |
| 61 | + "[port] Host PCIe/DMA framing, beat packing and handshake (explicitly reproduction-invented) (part pcb_substrate)", |
| 62 | + "evidence for the named property \"Conflict-free memory mapping (arbitrary radix/#BU, no bank conflict)\"", |
| 63 | + "evidence for the named property \"No bit-reversal stage / natural-order output\"", |
| 64 | + "evidence for the named property \"Twiddle-factor reuse via rearranged loop\"", |
| 65 | + "evidence for the named property \"radix-4 uses 33% fewer mults / 20% fewer add/sub (vs NAIVE radix-4)\"", |
| 66 | + "evidence for the named property \"~50% butterfly hardware saved via symmetric operators\"", |
| 67 | + "evidence for the named property \"ATP LUT/FF/DSP/BRAM ~2.2x/1.2x/1.1x/1.9x lower than radix-2\"", |
| 68 | + "the source's actual structure for: The architecture's headline contribution — the conflict-free interleaved-BRAM mapping and crossbar permutation — is replaced by a guessed XOR-fold in both impls; the SPECIFIC mapping the paper describes is not reproduced", |
| 69 | + "the source's actual structure for: Twiddle addressing uses generic bit-reversed ROM layout rather than the paper's rearranged twiddle-reuse loop, so the memory-footprint/reuse optimization is structurally absent", |
| 70 | + "the source's actual structure for: Functional Python models do not realize the 9-cycle pipeline (mult 3 + add/sub 1 + Barrett 4 + reg 1) as actual pipeline stages — latency is only asserted as a bound" |
| 71 | + ], |
| 72 | + "bytes": 17665 |
| 73 | + } |
| 74 | + ] |
| 75 | +} |
0 commit comments