Interrupt - 1.0 English

Versal ACAP CIPS Verification IP (DS996)

Document ID
DS996
Release Date
2021-07-14
Version
1.0 English
APIs Inputs Outputs
read_interrupt

Use this API to poll the interrupt status at any given time. This is a non-blocking task to poll the interrupt status and returns immediately with current state on interrupt lines.

For example: versal_cips_0.inst.PS9_VIP_inst.inst.read_interrupt()

It returns the interrupt status (16-bit) for {PLPSIRQ1,PLPSIRQ0}.

None [15:0] irq_status:

Interrupts generated by PL.

wait_interrupt

Use this API to wait for any of the interrupt to occur. This is a blocking task to wait for an interrupt to occur and returns immediately with any of the four interrupt lines asserts.

For example: versal_cips_0.inst.PS9_VIP_inst.inst.wait_interrupt(4)

  • Above call waits for an interrupt on PLPSIRQ0[2]
  • It also returns the interrupt status (16-bit) for {PLPSIRQ1,PLPSIRQ0}.

For example: versal_cips_0.inst.PS9_VIP_inst.inst.wait_interrupt(14)

  • Above call waits for an interrupt on PLPSIRQ1[6]
  • It also returns the interrupt status (16-bit) for {PLPSIRQ1,PLPSIRQ0}.
[3:0] irq: Interrupt line number

irq: 0 → PLPSIRQ0[0],

1 → PLPSIRQ0[1],

2 → PLPSIRQ0[2],

3 → PLPSIRQ0[3],

4 → PLPSIRQ0[4],

5 → PLPSIRQ0[5],

6 → PLPSIRQ0[6],

7 → PLPSIRQ0[7],

8 → PLPSIRQ1[0],

9 → PLPSIRQ1[1],

10 → PLPSIRQ1[2],

11 → PLPSIRQ1[3],

12 → PLPSIRQ0[4],

13 → PLPSIRQ0[5],

14 → PLPSIRQ1[6],

15 → PLPSIRQ1[7].

[15:0] irq_status:

Interrupts generated by PL.

irq_status = {PLPSIRQ1[7:0]

,PLPSIRQ0[7:0]}.

trigger_interrupt

Use this API to trigger an interrupt pin (IRQFPD/IRQLDP/IRQPMC) of the PL.

This is a non-blocking task for triggering the interrupts.

For example: versal_cips_0.inst.PS9_VIP_inst.inst.trigger_interrupt(1,10)

[1:0] intr_type: To specify either IRQFPD/TRQLPD/IRQPMC
  • 01: IRQFPD
  • 10: IRQLPD
  • 11: IRQPMC

[7:0] interrupt_no: Interrupt pin number/index of the particular index type.

For example: If, intr_type: 10, interrupt_no: 32.

Then, IRQLPD[32] will be triggered.

None
clear_interrupt

Use this API to clear an interrupt pin (IRQFPD/IRQLDP/IRQPMC) of the PL.

This is a non-blocking task for clearing the interrupts.

For example: versal_cips_0.inst.PS9_VIP_inst.inst.clear_interrupt(1,10)

[1:0] intr_type: To specify either IRQFPD/TRQLPD/IRQPMC
  • 01: IRQFPD
  • 10: IRQLPD
  • 11: IRQPMC

[7:0] interrupt_no: Interrupt pin number/index of the particular index type.

For example: If, intr_type: 10, interrupt_no: 32.

Then, IRQLPD[32] will be cleared.

None