AXI-Lite Address Map
The PCIe BAR0 register space is decoded by a tree of AxiLiteCrossbar
instances rooted in axi-pcie-core. pgp-pcie-apps adds its own
application-region crossbar on top — this page documents the application
layer.
BAR0 Top Level (from axi-pcie-core)
The BAR0 register tree below offset 0x00100000 is owned by
axi-pcie-core and is documented in the
axi-pcie-core register_map reference.
The address window from 0x00100000 upwards is forwarded as the
appReadMaster / appWriteMaster pair to the application
(appClk domain). pgp-pcie-apps decodes that range as follows.
Application Region (Top-Level pgp-pcie-apps Crossbar)
The top-level target VHDL (e.g.
firmware/targets/XilinxVariumC1100/XilinxVariumC1100Pgp4_6Gbps/hdl/XilinxVariumC1100Pgp4_6Gbps.vhd)
instantiates an AXI-Lite crossbar inside the app clock domain with
the following layout:
Offset |
Slave |
Contents |
|---|---|---|
|
|
When the target includes the DDR/HBM-backed DMA buffer; otherwise
responds with |
|
Utility A |
Per-target utility AXI-Lite slave. |
|
Utility B |
Per-target utility AXI-Lite slave. |
|
Utility C |
Per-target utility AXI-Lite slave. |
|
|
The protocol layer — see Hardware Sub-Tree below. |
Hardware Sub-Tree
Within the Hardware slave at 0x00800000, the
PgpLaneWrapper distributes per-lane access:
Lane Base |
Lane Index |
Allocation |
|---|---|---|
|
0 |
First PGP lane (QSFP cage 0, lane 0) |
|
1 |
Second PGP lane |
|
2 |
Third PGP lane |
… |
… |
up to lane 7 at |
Stride |
|
Per-Lane Layout
Within each lane window the PgpGtyLane / PgpLane further
decodes:
Offset (within lane) |
Slave |
Contents |
|---|---|---|
|
GT core |
|
|
PGP monitor |
|
|
Control |
Lane-specific control bits ( |
|
TX stream monitor |
|
|
RX stream monitor |
|
Tracing in Software
The PyRogue device tree mirrors this layout. From any
LoopbackTesting.py or PgpTesting.py session:
# Top-level
root.AxiPcieCore.AxiVersion.UpTimeCnt.get()
# Application region (per target)
root.Hardware.Pgp[0].PgpAxiL.RxFrameCnt.get()
Adjust the path for HTSP targets — see software/scripts/HtspTesting.py
for the device-tree path through HtspWrapper.