Debug Gotchas

  • The Host can enable one or more interrupt types from the specified list of supported interrupts during IP configuration.
    • The IP only generates one interrupt type at a given time even when there are more than one enabled. MSI-X interrupt takes precedence over MSI interrupt, and MSI interrupt take precedence over Legacy interrupt. The Host software must not switch (either enable or disable) an interrupt type while there is an interrupt asserted or pending.

  • The user_irq_ack assertion indicates the requested interrupt has been sent to the PCIe block. This will ensure interrupt pending register within the IP remains asserted when queried by the Host’s Interrupt Service Routine (ISR) to determine the source of interrupts.
    • You must implement a mechanism in the user application to know when the interrupt routine has been serviced. This detection can be done in many different ways depending on your application and your use of this interrupt pin. This typically involves a register (or array of registers) implemented in the user application that is cleared, read, or modified by the Host software when an interrupt is serviced.

  • For host-to-card transfers, data is read from the host at the source address, but the destination address in the descriptor is unused. Packets can span multiple descriptors.
    • The termination of a packet is indicated by the EOP control bit. A descriptor with an EOP bit asserts tlast on the AXI4-Stream user interface on the last beat of data.

  • The tkeep bits for transfers for all except the last data transfer of a packet must be all 1s.
    • On the last transfer of a packet, when tlast is asserted, you can specify a tkeep that is not all 1s to specify a data cycle that is not the full datapath width. The asserted tkeep bits need to be packed to the lsb, indicating contiguous data.

  • The length of a C2H Stream descriptor (the size of the destination buffer)
    • It must always be a multiple of 64 bytes.

  • The user IRQ example design can be generated by using the following Tcl command.
    • set_property -dict [list CONFIG.usr_irq_exdes {true}] [get_ips <ip_name>]


The above debug gotchas are taken from XDMA Product Guide PG195.Please refer to the latest version of the document for new updates.