Table 43: MSI-X Interrupt Internal Interface Port Descriptions (cont'd)
Name
I/O
Width
Description
pcie0_cfg_msix_vec_pending
pcie1_cfg_msix_vec_pending
I
2
Configuration Interrupt MSI-X Pending Bit Query/Clear
These mode bits are used only when the core is
configured to include the MSI-X Table and Pending Bit
Array. These two bits are set when asserting
pcie(n)_cfg_msix_int_vector to send an MSI-X interrupt, to
perform certain actions on the MSI-X Pending Bit
associated with the selected Function and interrupt
vector. The various modes are:
•
00b: Normal interrupt generation. If the Mask bit
associated with the vector was 0 when
pcie(n)_cfg_msix_int_vector was asserted, the core
transmits the MSI-X request TLP on the link. If the
Mask bit was 1, the core does not immediately send
the interrupt, but instead sets the Pending Bit
associated with the interrupt vector in its MSI-X
Pending Bit Array (and subsequently transmits the
MSI-X request TLP when the Mask clears). In both
cases, the core asserts pcie(n)_cfg_msix_sent for one
cycle to indicate that the interrupt request was
accepted. The user can distinguish these two cases by
sampling the pcie(n)_cfg_msix_vec_pending_status
output,which reflects the current setting of the MSI-X
Pending Bit corresponding to the interrupt vector.
•
01b: Pending Bit Query. In this mode, the core treats
the assertion of one of the bits of
pcie(n)_cfg_msix_mint_vector as a query for the status
of its Pending Bit. The user must also place the
Function number of the Pending Bit being queried on
the pcie(n)_cfg_msix_function_number input. The core
does not transmit a MSI-X request in response, but
asserts pcie(n)_cfg_msix_sent for one cycle, along with
the status of the MSI-X Pending Bit on the
pcie(n)_cfg_msix_vec_pending_status output.
•
10b: Pending Bit Clear. In this mode, the core treats
the assertion of one of the bits of
pcie(n)_cfg_msix_int_vector as a request to clear its
Pending Bit. The user must also place the Function
number of the Pending Bit being queried on the
pcie(n)_cfg_msix_function_number input. The core
does not transmit a MSI-X request in response, but
clears he MSI-X Pending Bit of the vector (if it is set),
and activates pcie(n)_cfg_msix_sent for one cycle as
the acknowledgment. The core also provides the
previous state of the MSI-X Pending Bit on the
pcie(n)_cfg_msix_vec_pending_status output, which
can be sampled by the user to determine if the
Pending Bit was cleared by the core before the user
request (because the pending interrupt was actually
transmitted). This mode can be used to implement a
polling mode for MSI-X interrupts, where the
interrupt is permanently masked and the software
polls the Pending Bit to detect and service the
interrupt. After each interrupt is serviced, the Pending
Bit can be cleared through this interface.
Chapter 3: Product Specification
PG346 (v3.3) November 16, 2022
CPM Mode for PCI Express
118