Module axi_to_mem_split

AXI4+ATOP to memory-protocol interconnect. Completely separates the read and write channel to

individual mem ports. This can only be used when addresses for the same bank are accessible

from different memory ports.

Parameters

axi_req_t: type

AXI4+ATOP request type. See include/axi/typedef.svh.

axi_resp_t: type

AXI4+ATOP response type. See include/axi/typedef.svh.

AddrWidth: int unsigned

Address width, has to be less or equal than the width off the AXI address field.

Determines the width of mem_addr_o. Has to be wide enough to emit the memory region

which should be accessible.

AxiDataWidth: int unsigned

AXI4+ATOP data width.

IdWidth: int unsigned

AXI4+ATOP ID width.

MemDataWidth: int unsigned

Memory data width, must evenly divide DataWidth.

BufDepth: int unsigned

Depth of memory response buffer. This should be equal to the memory response latency.

HideStrb: bit

Hide write requests if the strb == ’0

OutFifoDepth: int unsigned

Depth of output fifo/fall_through_register. Increase for asymmetric backpressure (contention) on banks.

NumMemPorts: int unsigned

Dependent parameters, do not override. Number of memory ports.

addr_t: type

Dependent parameter, do not override. Memory address type.

mem_data_t: type

Dependent parameter, do not override. Memory data type.

mem_strb_t: type

Dependent parameter, do not override. Memory write strobe type.

Ports

clk_i: input logic

Clock input.

rst_ni: input logic

Asynchronous reset, active low.

test_i: input logic

Testmode enable

busy_o: output logic

The unit is busy handling an AXI4+ATOP request.

axi_req_i: input axi_req_t

AXI4+ATOP slave port, request input.

axi_resp_o: output axi_resp_t

AXI4+ATOP slave port, response output.

mem_req_o: output logic [NumMemPorts-1:0]

Memory stream master, request is valid for this bank.

mem_gnt_i: input logic [NumMemPorts-1:0]

Memory stream master, request can be granted by this bank.

mem_addr_o: output addr_t [NumMemPorts-1:0]

Memory stream master, byte address of the request.

mem_wdata_o: output mem_data_t [NumMemPorts-1:0]

Memory stream master, write data for this bank. Valid when mem_req_o.

mem_strb_o: output mem_strb_t [NumMemPorts-1:0]

Memory stream master, byte-wise strobe (byte enable).

mem_atop_o: output axi_pkg::atop_t [NumMemPorts-1:0]

Memory stream master, axi_pkg::atop_t signal associated with this request.

mem_we_o: output logic [NumMemPorts-1:0]

Memory stream master, write enable. Then asserted store of mem_w_data is requested.

mem_rvalid_i: input logic [NumMemPorts-1:0]

Memory stream master, response is valid. This module expects always a response valid for a

request regardless if the request was a write or a read.

mem_rdata_i: input mem_data_t [NumMemPorts-1:0]

Memory stream master, read response data.

Signals

axi_read_req: axi_req_t

axi_write_req: axi_req_t

axi_read_resp: axi_resp_t

axi_write_resp: axi_resp_t