Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.8.7.6.4. Programming Flow for Generating Master Request

This section describes the programming flow for generating the master request of the slave in the secondary master configuration.

  1. The application must set the SLV_INTR_REQ[MR] bit to enable the slave controller to send the IBI. The application must ensure that SLV_EVENT_STATUS[MR_EN] bit is set to 1 (enabled by the master) before programming SLV_INTR_REQ [MR] bit.
  2. If the interrupt is enabled, the application must wait for the IBI completion status interrupt INTR_STATUS[IBI_UPDATED_STS] and then read the SLV_INTR_REQ[IBI_STS] field to check if the IBI got accepted by the master. If the master responds with NACK, then the controller reattempts the MR automatically until the master accepts (ACK) the MR or until the master disables the MR event through DISEC CCC.
  3. Alternatively, the application can poll the SLV_INTR_REQ[MR] bit to 0 and then read the SLV_INTR_REQ[IBI_STS] field to check if the IBI got accepted by the master.
  4. If the SLV_INTR_REQ[IBI_STS] field indicates that the IBI request was not attempted, the application can request MR again if the favorable conditions (see the description of SLV_INTR_REQ[IBI_STS]) are met.
Figure 201. Flow Diagram for Master Request Interrupt Generation
Note: The secondary master application does not set both MR and SIR together. The application must wait for any outstanding IBI to be completed (MR and SIR fields of the SLV_INTR_REQ register must be 1’b0) before attempting to issue a new IBI.