Module axi_id_serialize

Reduce AXI IDs by serializing transactions when necessary.

This module is designed to remap a wide ID space to an arbitrarily narrow ID space. If

necessary, this module maps two different IDs at its slave port to the same ID at its master

port, thereby constraining the order of those transactions and in this sense serializing them.

If the independence of IDs needs to be retained at the cost of a wider ID space at the master

port, use axi_id_remap instead.

This module contains one axi_serializer per master port ID (given by

the AxiMstPortMaxUniqIds parameter).

Parameters

AxiSlvPortIdWidth: int unsigned

ID width of the AXI4+ATOP slave port

AxiSlvPortMaxTxns: int unsigned

Maximum number of transactions that can be in flight at the slave port. Reads and writes are

counted separately (except for ATOPs, which count as both read and write).

AxiMstPortIdWidth: int unsigned

ID width of the AXI4+ATOP master port

AxiMstPortMaxUniqIds: int unsigned

Maximum number of different IDs that can be in flight at the master port. Reads and writes

are counted separately (except for ATOPs, which count as both read and write).

The maximum value of this parameter is 2**AxiMstPortIdWidth.

AxiMstPortMaxTxnsPerId: int unsigned

Maximum number of in-flight transactions with the same ID at the master port.

AxiAddrWidth: int unsigned

Address width of both AXI4+ATOP ports

AxiDataWidth: int unsigned

Data width of both AXI4+ATOP ports

AxiUserWidth: int unsigned

User width of both AXI4+ATOP ports

AtopSupport: bit

Enable support for AXI4+ATOP atomics

slv_req_t: type

Request struct type of the AXI4+ATOP slave port

slv_resp_t: type

Response struct type of the AXI4+ATOP slave port

mst_req_t: type

Request struct type of the AXI4+ATOP master port

mst_resp_t: type

Response struct type of the AXI4+ATOP master port

MstIdBaseOffset: int unsigned

A custom offset (modulo AxiMstPortMaxUniqIds, ignored for input IDs remapped through

IdMap) for the assigned output IDs.

IdMapNumEntries: int unsigned

Explicit input-output ID map. If an input ID id does not appear in this mapping (default),

it is simply mapped to the output ID id % AxiMstPortMaxUniqIds. If id appears in more

than one entry, it is matched to the last matching entry’s output ID.

Number of Entries in the explicit ID map (default: None)

IdMap: int unsigned

Explicit ID map; index [0] in each entry is the input ID to match, index [1] the output ID.

SelectWidth: int unsigned

Number of bits of the slave port ID that determine the mapping to the master port ID

MuxIdWidth: int unsigned

ID width after the multiplexer

SlvIdMap: slv_id_map_t

Input-to-output ID map used

Ports

clk_i: input logic

Rising-edge clock of both ports

rst_ni: input logic

Asynchronous reset, active low

slv_req_i: input slv_req_t

Slave port request

slv_resp_o: output slv_resp_t

Slave port response

mst_req_o: output mst_req_t

Master port request

mst_resp_i: input mst_resp_t

Master port response

Types

select_t

Slice of slave port IDs that determines the master port ID

ser_id_t

ID after serializer (i.e., with a constant value of zero)

mux_id_t

ID after the multiplexer

slv_id_t

ID at the slave port

mst_id_t

ID at the master port

addr_t

Address in any AXI channel

data_t

Data in any AXI channel

strb_t

Strobe in any AXI channel

user_t

User signal in any AXI channel

w_t

W channel at any interface

slv_aw_t

AW channel at slave port

slv_b_t

B channel at slave port

slv_ar_t

AR channel at slave port

slv_r_t

R channel at slave port

ser_aw_t

AW channel after serializer

ser_b_t

B channel after serializer

ser_ar_t

AR channel after serializer

ser_r_t

R channel after serializer

ser_req_t

AXI Requests from serializer

ser_resp_t

AXI responses to serializer

mux_aw_t

AW channel after the multiplexer

mux_b_t

B channel after the multiplexer

mux_ar_t

AR channel after the multiplexer

mux_r_t

R channel after the multiplexer

mux_req_t

AXI requests from the multiplexer

mux_resp_t

AXI responses to the multiplexer

mst_aw_t

AW channel at master port

mst_b_t

B channel at master port

mst_ar_t

AR channel at master port

mst_r_t

R channel at master port

slv_id_map_t

Type for slave ID map

Signals

slv_aw_select: select_t

slv_ar_select: select_t

axi_mux_req: mux_req_t

axi_mux_resp: mux_resp_t