You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- ntt_core.v: host words are fully reduced on load (h_din is 14-bit
< 2q, so one conditional subtract closes the < q operating envelope
the verified datapath is proven for — an out-of-range host value can
no longer propagate unreduced garbage). tb_ntt_core.v's last
round-trip vector now feeds RAW 14-bit words (>= q) and checks the
round-trip lands on x mod q; the Python NTT-golden comparison covers
the same vector end-to-end.
- basys3_ntt_selftest.v: 2-FF synchronizer on the async button (was
raw pin -> FSM next-state logic), previous verdict LEDs cleared on
re-run, self-test duration comment corrected to ~3 ms (simulated
completion: 3.03 ms).
- bit.sh: nextpnr exit code no longer masked (grep||true dropped); adds
a timing gate — every reported clock must close >= 50 MHz (the /2
core clock) and any 'FAIL at' constraint aborts. The first gate
version parsed only single-space clock names and picked the IO-pad
clock (1218 MHz) as the minimum; fixed and validated against the real
log (min = clk_core 70.28 MHz). README Fmax claim (~102 MHz) updated
to the observed 70-95 MHz range.
Verified: run_check.py ALL PASS (incl. the raw >= q vector), Basys3
self-test sim PASS (3.03 ms), full Vivado-free bitstream flow end-to-end
with the timing gate on real nextpnr output.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments