Module axi_atop_filter
Filter atomic operations (ATOPs) in a protocol-compliant manner.
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:
-
aw_atop
is always zero on themst
port; -
write transactions with non-zero
aw_atop
on theslv
port are handled in conformance withthe 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).
Intended usage
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.
Specification reminder
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 in-flight at the same time**.
Parameters
AxiIdWidth: int unsigned
AXI ID width
AxiMaxWriteTxns: int unsigned
Maximum number of in-flight AXI write transactions
axi_req_t: type
AXI request type
axi_resp_t: type
AXI response type
COUNTER_WIDTH: int unsigned
Ports
clk_i: input logic
Rising-edge clock of both ports
rst_ni: input logic
Asynchronous reset, active low
slv_req_i: input axi_req_t
Slave port request
slv_resp_o: output axi_resp_t
Slave port response
mst_req_o: output axi_req_t
Master port request
mst_resp_i: input axi_resp_t
Master port response
Types
cnt_t | |
w_state_e | |
r_state_e | |
id_t | |
len_t | |
r_resp_cmd_t |