The AXI MM Bridge Master interface is used for high bandwidth access to
AXI Memory Mapped space from the host. The interface supports up to 32 outstanding AXI
reads and writes. One or more PCIe BAR of any
physical function (PF) or virtual function (VF) can be mapped to the AXI-MM bridge
master interface. This selection must be made prior to design compilation. The function
ID, BAR ID, VF group, and VF group offset will be made available as part of aruser
and awuser
of the
AXI-MM interface allowing the user logic to identify the source of each memory access.
The m_axib_awuser/m_axib_aruser[54:0]
user bits mapping
is listed in AXI Bridge Master Ports.
Virtual function group (VFG) refers to the VF group number. It is equivalent to the PF number associated with the corresponding VF. VFG_OFFSET refers to the VF number with respect to a particular PF. Note that this is not the FIRST_VF_OFFSET of each PF.
For example, if both PF0 and PF1 have 8 VFs, FIRST_VF_OFFSET for PF0 and PF1 is 4 and 11. Below is the mapping for VFG and VFG_OFFSET.
Function Number | PF Number | VFG | VFG_OFFSET |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
4 | 0 | 0 | 0 (Because FIRST_VF_OFFSET for PF0 is 4, the first VF of PF0 starts at FN_NUM=4 and VFG_OFFSET=0 indicates this is the first VF for PF0) |
5 | 0 | 0 | 1 (VFG_OFFSET=1 indicates this is the second VF for PF0) |
... | ... | ... | ... |
12 | 1 | 1 | 0 (VFG=1 indicates this VF is associated with PF1) |
13 | 1 | 1 | 1 |
Each host initiated access can be uniquely mapped to the 64-bit AXI address space through the PCIe to AXI BAR translation.
Since all functions share the same AXI Master address space, a mechanism is needed to map requests from different functions to a distinct address space on the AXI master side. An example provided below shows how PCIe to AXI translation vector is used. Note that all VFs belonging to the same PF share the same PCIe to AXI translation vector. Therefore, the AXI address space of each VF is concatenated together. Use VFG_OFFSET to calculate the actual starting address of AXI for a particular VF.
To summarize, m_axib_awaddr
is
determined as:
- For PF,
m_axib_awaddr
=pcie2axi_vec
+axib_offset
. - For VF,
m_axib_awaddr
=pcie2axi_vec
+ (VFG_OFFSET + 1)*vf_bar_size
+axib_offset
.
Where pcie2axi_vec
is PCIe
to AXI BAR translation (that can be set when the IP core is configured from the
Vivado®
IP catalog).
And axib_offset
is the address offset in
the requested target space.