aws/aws-fpga

Reading Interrupt Signal from the shell

Gogul-N opened this issue · 2 comments

Hi,

I want to read the signal irq_req[15:0] from the shell.

How to read it..?

The document provided in the below link, but I am not able to understand it.
https://github.com/aws/aws-fpga/blob/master/hdk/docs/AWS_Shell_Interface_Specification.md#interrupts

I am using IPI mode (Vivado GUI). Interrupt generated from the CL is connected to irq_req[15:0] and the irq_ack[15:0] should be connected to which one?

Kindly help me on how to use the MSI-X.

Thank you

Hello,

The cl_sh_apppf_irq_req[15:0] should be pulsed by the CL to trigger an MSIX interrupt and wait for a corresponding pulse ack on sh_cl_apppf_irq_ack[15:0]. Please note that CL should not send out another interrupt request while still waiting on the ack from the Shell. In your IPI design, you could use the sh_cl_apppf_irq_ack[15:0] signal to track any pending interrupts.
https://github.com/aws/aws-fpga/blob/master/hdk/docs/AWS_Shell_Interface_Specification.md#interrupts

An example logic for triggering and acking interrupt is shown in the link below:
https://github.com/aws/aws-fpga/blob/master/hdk/cl/examples/cl_dram_dma/design/cl_int_tst.sv#L106-L134

Software test to run MSIX interrupts can be found here.
https://github.com/aws/aws-fpga/blob/master/hdk/cl/examples/cl_dram_dma/software/runtime/test_dram_dma.c#L170-L249

Unfortunately, the Shell does not relay the status of cl_sh_apppf_irq_req[15:0] to the host (or users) directly but you could connect this to any of the registers in your design and check the status. Alternately you could also use the cl_sh_status_vled[15:0] and use fpga-get-virtual-led Management tool to check the status of interrupts. Please note that these signals are pulsed so you may have to pair it with sh_cl_apppf_irq_ack[15:0] to track any pending status.

Please reach out to us if you have any questions.

Thanks!
Chakra

Thank you @AWScsaralay for the reply