nextpnr/himbaechel/uarch
Joris van Zwieten a652a752de himbaechel/xilinx: don't override driven ADDR*L15 on cascaded RAMB36E1
pack_bram unconditionally disconnected ADDRARDADDRL15/ADDRBWRADDRL15
on every RAMB36E1 and tied them to VCC. Tying high is correct for
non-cascaded modes, but in a depth-cascaded pair (RAM_EXTENSION_A/B =
LOWER/UPPER) these pins carry the address MSB that selects between
the two 32K halves, and the port multixform has already wired
ADDRARDADDR[15] onto them. Overriding that with VCC pinned both reads
and writes to the upper half: address bit 15 was simply ignored.

Keep the tie as a fallback for undriven pins only.

Hardware-verified on xc7a100t: a 128K ROM built from cascaded
RAMB36E1 pairs passes a full 32/32 content fingerprint check that
failed before this change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 15:47:34 +02:00
..
example himbaechel: add uarch specific options parsing (#1582) 2025-10-21 14:41:53 +02:00
gatemate gatemate: fixed test assert 2026-07-27 14:52:21 +02:00
gowin Gowin. BUGFIX. Alu optimization. (#1736) 2026-06-17 08:48:25 +02:00
ng-ultra himbaechel: Merge all test entrypoints into one 2026-07-27 11:01:32 +02:00
xilinx himbaechel/xilinx: don't override driven ADDR*L15 on cascaded RAMB36E1 2026-07-30 15:47:34 +02:00