Module axi_atop_filter

AXI Atomic Operation Filter

This module filters atomic operations (ATOPs), i.e., write transactions that have a non-zero aw_atop value, from its slv to its mst port. This module guarantees that:

  1. aw_atop is always zero on the mst port;

  2. write transactions with non-zero aw_atop on the slv port are handled in conformance with the AXI standard by replying to such write transactions with the proper B and R responses. The response code on atomic operations that reach this module is always SLVERR (implementation-specific, not defined in the AXI standard).

This module is intended to be placed between masters that may issue ATOPs and slaves that do not support ATOPs. That way, this module ensures that the AXI protocol remains in a defined state on systems with mixed ATOP capabilities.

Interface Note

The AXI standard specifies that there may be no ordering requirements between different atomic bursts (i.e., a burst started by an AW with ATOP other than 0) and none between atomic bursts and non-atomic bursts [E2.1.4]. That is, an atomic burst may never have the same ID as any other write or read burst that is ongoing at the same time.

Parameters

AxiIdWidth

AxiMaxWriteTxns

req_t

resp_t

COUNTER_WIDTH

Ports

clk_i

rst_ni

slv_req_i

slv_resp_o

mst_req_o

mst_resp_i

Types

cnt_t
w_state_e
r_state_e
id_t
len_t
r_resp_cmd_t

Signals

w_cnt_d: cnt_t

w_cnt_q: cnt_t

w_state_d: w_state_e

w_state_q: w_state_e

r_state_d: r_state_e

r_state_q: r_state_e

id_d: id_t

id_q: id_t

r_beats_d: len_t

r_beats_q: len_t

r_resp_cmd_push: r_resp_cmd_t

r_resp_cmd_pop: r_resp_cmd_t