Ch440 review fixes: 93-bit per-bank test coverage + soften M20K claims [READY FOR REVIEW]

Per Codex review of 471c1af:
1. tb_gs_async_fifo QUAD_WIDTH4 variant now runs at the PRODUCTION 93-bit width
   (exercising the odd 23/23/23/24 remainder split) and drives a DISTINCT NONZERO
   pattern into every width bank (seq XOR per-bank constants, bank2 inverted), with
   the scoreboard checking the FULL reconstructed word. A swapped/broken/zeroed
   upper bank now changes the word and trips the scoreboard. Depth-half crossing
   (DEPTH=8) + wrap/full coverage retained. mk() is generate-guarded so the 32-bit
   variants never elaborate the 93-bit selects.
2. Softened gs_async_fifo comments: 'same total M20K' -> EXPECTED-similar, pending
   synthesis (fact -> expectation).

No simulations or Quartus run. Awaiting review before any sim.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-21 10:28:31 -04:00
parent 471c1af9cd
commit 94d6293c43
2 changed files with 37 additions and 8 deletions
+5 -3
View File
@@ -31,8 +31,9 @@ module gs_async_fifo #(
parameter bit QUADRANT_READ = 1'b0,
// Ch440: two depth banks x FOUR width banks (eight physical RAMs). Like
// QUADRANT_READ but splits the payload into four width banks instead of two,
// halving each preserved read-address register's M20K load AGAIN at the same
// total M20K, while KEEPING QUADRANT_READ's 2:1 depth output selector (no
// halving each preserved read-address register's M20K load AGAIN (total M20K
// is EXPECTED to stay ~the same, pending synthesis), while KEEPING
// QUADRANT_READ's 2:1 depth output selector (no
// new/deeper output mux). Depth, one-cycle read latency, ordering, capacity,
// and interface behaviour are identical to QUADRANT_READ.
parameter bit QUAD_WIDTH4_READ = 1'b0
@@ -174,7 +175,8 @@ module gs_async_fifo #(
if (QUAD_WIDTH4_READ) begin : g_quad_width4_storage
// Ch440: 2 depth banks x 4 width banks = eight RAMs. Each read-address
// register drives only a HALF_DEPTH x ~(WIDTH/4) RAM -> roughly half the
// M20K load of QUADRANT_READ's hi/lo banks, at the SAME total M20K. The
// M20K load of QUADRANT_READ's hi/lo banks, at an EXPECTED-similar total
// M20K (pending synthesis confirmation). The
// depth-half selection stays a 2:1 OUTPUT mux, byte-for-byte the selector
// QUADRANT_READ already uses -- no new/deeper output mux is introduced.
localparam int W4B0 = WIDTH/4;