Interrupt class represents a single interrupt pin in the block
design. It mimics a python
Event by having a single
wait function that
blocks until the interrupt is raised. The event will be cleared automatically
when the interrupt is cleared. To construct an event, pass in fully qualified
path to the pin in the block diagram, e.g.
'my_ip/interrupt' as the only
An interrupt is only enabled for as long there is a thread or coroutine waiting on the corresponding event. The recommended approach to using interrupts is to wait in a loop, checking and clearing the interrupt registers in the IP before resuming the wait. As an example, the AxiGPIO class uses this approach to wait for a desired value to be present.
class AxiGPIO(DefaultIP): # Rest of class definition def wait_for_level(self, value): while self.read() != value: self._interrupt.wait() # Clear interrupt self._mmio.write(IP_ISR, 0x1)