Triggering on AXI Address Command and Data Beats - 2022.1 English

Vivado Design Suite User Guide: Programming and Debugging (UG908)

Document ID
UG908
Release Date
2022-04-26
Version
2022.1 English

Debugging AXI interfaces often involves triggering on three specific kinds of AXI events: End of the Address Command, End of Data Beat, and Write Response. It is often required to trigger on one or more of these events on different interface channels. For instance, to implement the trigger condition of "End of Read Address Command OR End of Write Address Command", the following equation is required:

Trigger Condition = (((ARVALID == 1) && (ARREADY == 1)) || ((AWVALID == 1) && (AWREADY == 1)))

However, this requires a "Sum of Products" or "SOP"-style Boolean equation that is not possible to implement when the required AXI signals (such as ARVALID and ARREADY) reside on different probe ports. To facilitate this type of triggering, the required *VALID, *READY, and *LAST control signals are concatenated together onto a single probe port as shown in the following table.

Table 1. AXI Channel Control Signal Probes
Description Probe Name Bit 2 Bit 1 Bit 0
Read Address channel control signals *ar_ctrl[1:0] N/A ARREADY ARVALID
Read Data channel control signals *r_ctrl[2:0] RLAST RREADY RVALID
Write Address channel control signals *aw_ctrl[1:0] N/A AWREADY AWVALID
Write Data channel control signals *w_ctrl[2:0] WLAST WREADY WVALID
Write Response channel control signals *b_ctrl[1:0] N/A BREADY BVALID

The following table shows how to use both the individual AXI control signal probes as well as the AXI channel control probes to implement useful basic trigger and capture control equations. The following figure shows how to implement the "End of Read Address Command OR End of Write Address Command" event using the basic trigger setup GUI.

Table 2. Trigger and/or Capture Control Event
AXI Event Individual AXI Control Signals Combined AXI Channel Control Probe
End of the Read Address Command ((ARVALID == 1) && (ARREADY == 1)) (*ar_ctrl == 2'b11)
End of the Last Read Data Beat ((RVALID == 1) && (RREADY == 1) && (RLAST == 1)) (*r_ctrl == 3'b111)
End of the (Non-Last) Read Data Beat ((RVALID == 1) && (RREADY == 1) && (RLAST == 0)) (*r_ctrl == 3'b011)
End of the Write Address Command ((AWVALID == 1) && (AWREADY == 1)) (*aw_ctrl == 2'b11)
End of the Write Read Data Beat ((WVALID == 1) && (WREADY == 1) && (WLAST == 1)) (*w_ctrl == 3'b111)
End of the (Non-Last) Read Data Beat ((WVALID == 1) && (WREADY == 1) && (WLAST == 0)) (*w_ctrl == 3'b011)
Figure 1. Basic Trigger Setup for "End of Read Address Command OR End of Write Address Command" Event