VDM - 2.0 English

Versal Adaptive SoC DMA and Bridge Subsystem for PCI Express Product Guide (PG344)

Document ID
Release Date
2.0 English

Vendor Defined Messages (VDMs) are an expansion of the existing messaging capabilities with PCI Express. PCI Express Specification defines additional requirements for Vendor Defined Messages, header formats and routing information. For details, see PCI-SIG Specifications (https://www.pcisig.com/specifications).

QDMA allows the transmission and reception of VDMs. To enable this feature, select Enable Bridge Slave Mode in the Vivado Customize IP dialog box. This enables the st_rx_msg interface.

RX Vendor Defined Messages are stored in shallow FIFO before they are transmitted to the output port. When there are many back-to-back VDM messages, FIFO will overflow and these message will be dropped. So it is better to repeat VDM messages at regular intervals.

Throughput for VDMs depend on several factors: PCIe speed, data width, message length, and the internal VDM pipeline.

Internal VDM pipelines must be replaced with the Internal RX VDM FIFO interface for network on chip (NoC) access, which has a shallow buffer of 64B.

Note: New VDM messages will be dropped if more than 64B of VDM are received before the FIFO is serviced through NoC.

Internal RX VDM FIFO interface cannot handle back-to-back messages. Pipeline throughput can only handle one in every four accesses, which is about 25% efficiency from the host access.

Important: Do not use back-to-back VDM access.

RX Vendor Defined Messages:

  1. When QDMA receives a VDM, the incoming messages will be received on the st_rx_msg port.
  2. The incoming data stream will be captured on the st_rx_msg_data port (per-DW).
  3. The user application needs to drive the st_rx_msg_rdy to signal if it can accept the incoming VDMs.
  4. Once st_rx_msg_rdy is High, the incoming VDM is forwarded to the user application.
  5. The user application needs to store this incoming VDMs and track of how many packets were received.

TX Vendor Defined Messages:

  1. To enable transmission of VDM from QDMA, program the TX Message registers in the Bridge through the AXI4-Lite Slave interface.
  2. Bridge has TX Message Control, Header L (bytes 8-11), Header H (bytes 12-15) and TX Message Data registers as shown in the PCIe TX Message Data FIFO Register (TX_MSG_DFIFO).
  3. Issue a Write to offset 0xE64 through AXI4-Lite Slave interface for the TX Message Header L register.
  4. Program offset 0xE68 for the required VDM TX Header H register.
  5. Program up to 16DW of Payload for the VDM message starting from DW0 – DW15 by sending Writes to offset 0xE6C one by one.
  6. Program the msg_routing, msg_code, data length, requester function field and msg_execute field in the TX_MSG_CTRL register in offset 0xE60 to send the VDM TX packet.
  7. The TX Message Control register also indicates the completion status of the message in bit 23. User needs to read this bit to confirm the successful transmission of the VDM packet.
  8. All the fields in the registers are RW except bit 23 (msg_fail) in TX Control register which is cleared by writing a 1.
  9. VDM TX packet will be sent on the AXI-ST RQ transmit interface.