Module axi_to_detailed_mem

AXI4+ATOP slave module which translates AXI bursts into a memory stream.

If both read and write channels of the AXI4+ATOP are active, both will have an

utilization of 50%.

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.

DataWidth: int unsigned

AXI4+ATOP data width.

IdWidth: int unsigned

AXI4+ATOP ID width.

UserWidth: int unsigned

AXI4+ATOP user width.

NumBanks: int unsigned

Number of banks at output, 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.

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.

mem_id_t: type

Dependent parameter, do not override. Memory id type.

mem_user_t: type

Dependent parameter, do not override. Memory user type.

NumBytesPerBank:

Ports

clk_i: input logic

Clock input.

rst_ni: input logic

Asynchronous reset, active low.

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 [NumBanks-1:0]

Memory stream master, request is valid for this bank.

mem_gnt_i: input logic [NumBanks-1:0]

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

mem_addr_o: output addr_t [NumBanks-1:0]

Memory stream master, byte address of the request.

mem_wdata_o: output mem_data_t [NumBanks-1:0]

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

mem_strb_o: output mem_strb_t [NumBanks-1:0]

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

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

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

mem_lock_o: output logic [NumBanks-1:0]

Memory stream master, lock signal.

mem_we_o: output logic [NumBanks-1:0]

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

mem_id_o: output mem_id_t [NumBanks-1:0]

Memory stream master, ID. Response ID is managed internally, ensure in-order responses.

mem_user_o: output mem_user_t [NumBanks-1:0]

Memory stream master, user signal. Ax channel user bits used.

mem_cache_o: output axi_pkg::cache_t [NumBanks-1:0]

Memory stream master, cache signal.

mem_prot_o: output axi_pkg::prot_t [NumBanks-1:0]

Memory stream master, protection signal.

mem_qos_o: output axi_pkg::qos_t [NumBanks-1:0]

Memory stream master, QOS signal.

mem_region_o: output axi_pkg::region_t [NumBanks-1:0]

Memory stream master, region signal.

mem_rvalid_i: input logic [NumBanks-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 [NumBanks-1:0]

Memory stream master, read response data.

mem_err_i: input logic [NumBanks-1:0]

Memory stream master, error response.

mem_exokay_i: input logic [NumBanks-1:0]

Memory stream master, read response exclusive access OK.

Types

axi_data_t
axi_strb_t
axi_id_t
mem_req_t
meta_t
mem_rsp_t
tmp_atop_t

Signals

mem_rdata: mem_rsp_t

m2s_resp: mem_rsp_t

m2s_req: mem_req_t

mem_req: mem_req_t

rd_meta: meta_t

rd_meta_d: meta_t

rd_meta_q: meta_t

wr_meta: meta_t

wr_meta_d: meta_t

wr_meta_q: meta_t

meta: meta_t

meta_buf: meta_t

mem_req_atop: tmp_atop_t