Repository navigation
fpga(ax7203): DDR3 head read measured at 2769 MB/s -- own_model cell 26 grounded as a draft (Closes #10170) - #10248
Merged
Merged
Conversation
… written and sealed The board top around a LiteDRAM core: write 325,000 beats of 32 bytes, read them back at full rate, count the clocks, divide into MB/s, and send the receipt line on the UART. 10/10 tests, 0 vacuous, on the Railway lab. RTL written and synthesised; not yet routed or measured. Refs #10024, #10170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…as a draft The checksum folded the four lanes of a beat with a plain xor, and the pattern's lanes xor to zero, so the first bitstream reported S=0 C=0. Each lane is now rotated by 16*k before the xor (wiring only); the spec's test predicts the head's sum, FFB7236C398EE555, and the board reports exactly that for both the write and the read pass. The read beat is latched and checked one clock later, and the divider works on a per-beat numerator and its quotient instead of a multiply, which takes the user logic off the critical path (56.8 -> 90.9 MHz in nextpnr's estimate; the worst path is now inside the LiteDRAM core). Board receipt (AX7203, two flashes): 325000 beats in 375548..375554 read clocks, M=2769 MB/s, E=0, PASS. A mutant checking beat ri+1 reported E=325000 FAIL. own_model cell 26 is grounded at 10 percent as a DELIVER draft; the tally is 1 published, 16 verified, 6 drafts, 4 gaps. Refs #10024 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
Contributor
gHashTag
enabled auto-merge (squash)
October 18, 2026 06:00
gHashTag
added a commit
that referenced
this pull request
Oct 18, 2026
Cell 26 is grounded as a draft at 10 percent (DDR3 head read), cells 8, 24 and 25 keep this branch's evidence. Tally 1 published, 17 verified, 8 drafts, 1 gap, 61 percent; own_model 9/9 and own_model_board 6/6 on the lab, 0 vacuous. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #10170. Refs #10024 (own-model cell 26, "Full model on FPGA, DDR3").
The DDR3 head-read top for the ALINX AX7203. It is written in t27 (
specs/fpga/ddr3_head_bandwidth.t27), lowered byt27b verilogaround a LiteDRAM core, routed with openXC7 and measured on the board. The gate is a head read of 2.0 GB/s or more, with the kill at 1.5 GB/s. The board read the head at 2,769 MB/s with every beat correct. Cell 26 ofspecs/igla/own_model.t27is grounded from that receipt, as a draft at 10 percent.Everything hand-written is .t27. No Verilog, constraint file, Python or C was written by hand: the pins are PIN ATTRIBUTEs (#10209), the top is
t27b verilogoutput, andlitedram_core.vislitedram_genoutput.RTL written
specs/fpga/ddr3_head_bandwidth.t27passes 11/11 tests with 0 vacuous on the Railway lab (t27c test-report, zig 0.16.0). Seal:.trinity/seals/fpga_FpgaDdr3HeadBandwidth.json, spec sha2565ae8e395....The run, step by step:
Three fixes since the first bitstream:
FFB7236C398EE555.verdict_by_rateis proved againstverdict_ofon the boundary rows.Synthesised and routed (Railway lab)
synth_xilinx -flatten, then nextpnr-xilinx forxc7a200tfbg484-2, then fasm2frames and xc7frames2bit.VREF.V_675_MVfor the SSTL bank (MT41J256M16 wants 750 mV). Calibration passed anyway.Measured (AX7203,
openFPGALoader -c digilent_hs2 --busdev-num 1:3, UART CP2102N)Bitstream sha256
e6915eaf461e755a1831a29632ee496e699df9328ca6f54727419b800111523a.BIOS:
Receipts from two flashes of the same bitstream (the L= line counter dropped):
FFB7236C398EE555, the value the spec's test predictsNegative control. A lab-only mutant checks each beat against the pattern of beat ri+1. It is not committed. Its seed-5 route (sha256
40a9fe42...) calibrated, and it reported:Every beat counts as bad, 325,000 of 325,000, and the checksum still matches because the data are right. So E=0 on the real build is a real compare, and so is the checksum match.
Cell 26 in
specs/igla/own_model.t27own_model_board.t27follows: MSG, LENS_PCT, CELL_STATUS, CELL_PCT and METRICS_BYTES 626 → 627.t27b verilogexits 0 on both.Not claimed
🤖 Generated with Claude Code