Run the DMA Loopback Test
This tutorial picks up where First Build — XilinxVariumC1100DmaLoopback ends: you have
a XilinxVariumC1100DmaLoopback-<version>.bit (or .mcs) and a
board in a host with the aes-stream-drivers PCIe kernel module
(datadev.ko) installed. We will exercise the DMA engine end-to-end
using software/scripts/LoopbackTesting.py.
Prerequisites
A programmed board reachable as
/dev/datadev_0(or/dev/datadev_1etc. for multiple cards). Confirm:ls -l /dev/datadev_*
If no device nodes exist, install or reload
aes-stream-drivers(separate repository:slaclab/aes-stream-drivers).A conda-managed Rogue environment. At SLAC S3DF:
source software/setup_env_slac.sh
This activates the
rogue_v6.12.0conda environment that shipsrogue,pyrogue,pyrogue.pydm, and ZMQ. At other sites ensurerogue≥ v6.12.0 is onPYTHONPATH.
Run the Test
cd software/scripts
python LoopbackTesting.py
LoopbackTesting.py (software/scripts/LoopbackTesting.py) builds a
custom pr.Root that opens BAR0, opens DMA streams, and connects an
rogue.utilities.Prbs transmitter and receiver around the firmware
DMA loopback path. It then starts the PyDM GUI, which exposes
AxiPcieCore.AxiVersion, the IB and OB AxiStreamMonAxiL traffic
monitors, and live error counts.
Backend Selection
LoopbackTesting.py accepts a --type flag:
--type pcie(default) — real/dev/datadev_*backend--type sim— rogue TCP-socket backend for software co-simulation against a VHDL testbench (requiresROGUE_SIM_EN_G=truein the firmware top-level)
What “Working” Looks Like
In the PyDM GUI:
AxiPcieCore.AxiVersion.UpTimeCntis incrementingAxiPcieCore.AxiVersion.BuildStampmatches the.bityou flashedAxiPcieCore.AxiVersion.PCIE_HW_TYPE_GshowsXilinxVariumC1100The IB and OB stream monitors show matching frame counts and zero PRBS error counters
If the PRBS error counters increase, the DMA path is dropping or corrupting data — see the axi-pcie-core debug guide for the IB/OB FIFO + descriptor flow.
Next Steps
Replace the PRBS source with a real PGP feed: build a PGP target (e.g.
XilinxVariumC1100Pgp4_6Gbps) and runsoftware/scripts/PgpTesting.py— see Run the PGP Test Suite.For HTSP 100G targets, see
software/scripts/HtspTesting.pyand theXilinxVariumC1100Htsp100Gbpstarget.