Skip to content

Commit 979b0c7

Browse files
committed
targets: add XCU1525 SDRAM BIST option
Add --with-sdram-bist to enable LiteDRAM generator/checker CSRs on the selected DDRAM channels. Tested on SQRL XCU1525 with Vivado 2024.1: - --ddram-channels=0,1 --with-sdram-bist full bitstream builds and programs. - Route clean; DRC 28 warnings/0 errors. Final timing WNS -0.686 ns, with sys_clk met at +0.676 ns; remaining failing paths are main_crg_clkout1/IDELAYCTRL reset related. - BIOS calibration and 2 MiB memtest pass on both selected controllers. - sdram_bist all 1024 1 5 reports sdram 6554/6592 MiB/s and sdram1 6555/6598 MiB/s, 0 total errors. - sdram_hw_test all 0x0 0x1000000 1024 reports 0 errors. 4-channel follow-up: - --ddram-channels=all --with-sdram-bist builds/routes at 125 MHz/1000 MT/s, but physical channel 1 is marginal while channels 0/2/3 pass BIST. - The 100 MHz/800 MT/s build is worse on this board and fails BIST/CPU memtest on all channels.
1 parent 06d00fb commit 979b0c7

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

litex_boards/targets/sqrl_xcu1525.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ def __init__(self, sys_clk_freq=125e6, ddram_channel=0,
150150
pcie_address_width = 32,
151151
with_pcie_dma_status = False,
152152
with_pcie_dma_monitor = False,
153+
with_sdram_bist = False,
153154
with_sata = False,
154155
with_ethernet = False,
155156
with_etherbone = False,
@@ -222,6 +223,7 @@ def __init__(self, sys_clk_freq=125e6, ddram_channel=0,
222223
channel = channel,
223224
phy_name = phy_name,
224225
ddrctrl_name = f"ddrctrl{channel}",
226+
with_bist = with_sdram_bist,
225227
cached = not (0x8000_0000 <= origin < 0x1_0000_0000),
226228
l2_cache_size = kwargs.get("l2_size", 8192)
227229
)
@@ -341,6 +343,7 @@ def main():
341343
parser.add_target_argument("--pcie-address-width", default=32, type=int, choices=[32, 64], help="PCIe address width.")
342344
parser.add_target_argument("--pcie-with-dma-status", action="store_true", help="Enable PCIe DMA status CSRs.")
343345
parser.add_target_argument("--pcie-with-dma-monitor", action="store_true", help="Enable PCIe DMA monitor CSRs.")
346+
parser.add_target_argument("--with-sdram-bist", action="store_true", help="Enable LiteDRAM BIST generator/checker on selected DDRAM channels.")
344347
parser.add_target_argument("--with-ethernet", action="store_true", help="Enable Ethernet support over QSFP/SFP.")
345348
parser.add_target_argument("--with-etherbone", action="store_true", help="Enable Etherbone support over QSFP/SFP.")
346349
parser.add_target_argument("--ethernet-port", default="qsfp0_sfp0", choices=QSFP_PORTS, help="Ethernet QSFP/SFP port.")
@@ -379,6 +382,7 @@ def main():
379382
pcie_address_width = args.pcie_address_width,
380383
with_pcie_dma_status = args.pcie_with_dma_status,
381384
with_pcie_dma_monitor = args.pcie_with_dma_monitor,
385+
with_sdram_bist = args.with_sdram_bist,
382386
with_sata = args.with_sata,
383387
with_ethernet = args.with_ethernet,
384388
with_etherbone = args.with_etherbone,

0 commit comments

Comments
 (0)