Scalable Scatter-Gather DMA Intel® FPGA IP User Guide

ID 823097
Date 4/07/2025
Public
Document Table of Contents

3.1.1.7. PCIe* MSI-X Controller

The MSI-X Controller is responsible to generate MSI-X interrupt to PCIe* host through Memory write TLPs upon the descriptor completion if interrupt is enabled:

  • MSI-X message TLP moderation is controlled by a timer value in the WB_INTR_TIMEOUT Register.
  • If interrupt is enabled, and the WB_INTR_TIMEOUT time is satisfied, MSI-X is sent.
  • If the FIFO in the logic that handles the MSI-X generation begins to fill up, interrupts are processed regardless of the delay value programmed in the WB_INTR_TIMEOUT register.
Currently, each Device Port is allocated 3-4 MSI-X vectors:
  • 2’b00: H2D/D2H Prefetcher Engine Vector
  • 2’b01: H2D/D2H Agent Vector
  • 2’b10: Reserved
  • 2’b11: Video Data Flushing Event Interrupt (D2H ST only)

The following example shows MSI-X vector mapping based on the given parameters configured in build time:

MSI-X Vector Mapping

Number of H2D MM Device Port = 0, Number of H2D ST Device Port = 1, Number of D2H ST Device Port = 2

MSI-X Table Vector Entries 0 1 2 3 4 5 6 7 8 9 10
H2D ST Port Number 0 0 0                
D2H ST Port Number       0 0 0 0 1 1 1 1
H2D ST Port 0:
  • Vector Entry 0 - Prefetcher Engine Vector

  • Vector Entry 1 - Agent Vector

  • Vector Entry 2 - Reserved

D2H ST Port 0:
  • Vector Entry 3 - Prefetcher Engine Vector

  • Vector Entry 4 - Agent Vector

  • Vector Entry 5 - Reserved

  • Vector Entry 6 - Video Data Flushing Event Interrupt

D2H ST Port 1:
  • Vector Entry 7 - Prefetcher Engine Vector

  • Vector Entry 8 - Agent Vector

  • Vector Entry 9 - Reserved

  • Vector Entry 10 - Video Data Flushing Event Interrupt