blob: 0f60775cea4c8352076b674f31aa4ab1e9622344 [file] [log] [blame]
module axi_slice_wrap
#(
parameter AXI_ADDR_WIDTH = 32,
parameter AXI_DATA_WIDTH = 64,
parameter AXI_USER_WIDTH = 6,
parameter AXI_ID_WIDTH = 6,
parameter SLICE_DEPTH = 2
)
(
clk_i,
rst_ni,
test_en_i,
s00_aw_addr,
s00_aw_prot,
s00_aw_region,
s00_aw_len,
s00_aw_size,
s00_aw_burst,
s00_aw_lock,
s00_aw_cache,
s00_aw_qos,
s00_aw_id,
s00_aw_user,
s00_aw_ready,
s00_aw_valid,
s00_ar_addr,
s00_ar_prot,
s00_ar_region,
s00_ar_len,
s00_ar_size,
s00_ar_burst,
s00_ar_lock,
s00_ar_cache,
s00_ar_qos,
s00_ar_id,
s00_ar_user,
s00_ar_ready,
s00_ar_valid,
s00_w_valid,
s00_w_data,
s00_w_strb,
s00_w_user,
s00_w_last,
s00_w_ready,
s00_r_data,
s00_r_resp,
s00_r_last,
s00_r_id,
s00_r_user,
s00_r_ready,
s00_r_valid,
s00_b_resp,
s00_b_id,
s00_b_user,
s00_b_ready,
s00_b_valid,
m00_aw_addr,
m00_aw_prot,
m00_aw_region,
m00_aw_len,
m00_aw_size,
m00_aw_burst,
m00_aw_lock,
m00_aw_cache,
m00_aw_qos,
m00_aw_id,
m00_aw_user,
m00_aw_ready,
m00_aw_valid,
m00_ar_addr,
m00_ar_prot,
m00_ar_region,
m00_ar_len,
m00_ar_size,
m00_ar_burst,
m00_ar_lock,
m00_ar_cache,
m00_ar_qos,
m00_ar_id,
m00_ar_user,
m00_ar_ready,
m00_ar_valid,
m00_w_valid,
m00_w_data,
m00_w_strb,
m00_w_user,
m00_w_last,
m00_w_ready,
m00_r_data,
m00_r_resp,
m00_r_last,
m00_r_id,
m00_r_user,
m00_r_ready,
m00_r_valid,
m00_b_resp,
m00_b_id,
m00_b_user,
m00_b_ready,
m00_b_valid
);
//parameter AXI_ADDR_WIDTH = 32;
//parameter AXI_DATA_WIDTH = 64;
//parameter AXI_USER_WIDTH = 6;
//parameter AXI_ID_WIDTH = 6;
//parameter SLICE_DEPTH = 2;
parameter AXI_STRB_WIDTH = AXI_DATA_WIDTH / 8;
input wire clk_i;
input wire rst_ni;
input wire test_en_i;
input wire [AXI_ADDR_WIDTH - 1:0] s00_aw_addr;
input wire [2:0] s00_aw_prot;
input wire [3:0] s00_aw_region;
input wire [7:0] s00_aw_len;
input wire [2:0] s00_aw_size;
input wire [1:0] s00_aw_burst;
input wire s00_aw_lock;
input wire [3:0] s00_aw_cache;
input wire [3:0] s00_aw_qos;
input wire [AXI_ID_WIDTH - 1:0] s00_aw_id;
input wire [AXI_USER_WIDTH - 1:0] s00_aw_user;
output wire s00_aw_ready;
input wire s00_aw_valid;
input wire [AXI_ADDR_WIDTH - 1:0] s00_ar_addr;
input wire [2:0] s00_ar_prot;
input wire [3:0] s00_ar_region;
input wire [7:0] s00_ar_len;
input wire [2:0] s00_ar_size;
input wire [1:0] s00_ar_burst;
input wire s00_ar_lock;
input wire [3:0] s00_ar_cache;
input wire [3:0] s00_ar_qos;
input wire [AXI_ID_WIDTH - 1:0] s00_ar_id;
input wire [AXI_USER_WIDTH - 1:0] s00_ar_user;
output wire s00_ar_ready;
input wire s00_ar_valid;
input wire s00_w_valid;
input wire [AXI_DATA_WIDTH - 1:0] s00_w_data;
input wire [AXI_STRB_WIDTH - 1:0] s00_w_strb;
input wire [AXI_USER_WIDTH - 1:0] s00_w_user;
input wire s00_w_last;
output wire s00_w_ready;
output wire [AXI_DATA_WIDTH - 1:0] s00_r_data;
output wire [1:0] s00_r_resp;
output wire s00_r_last;
output wire [AXI_ID_WIDTH - 1:0] s00_r_id;
output wire [AXI_USER_WIDTH - 1:0] s00_r_user;
input wire s00_r_ready;
output wire s00_r_valid;
output wire [1:0] s00_b_resp;
output wire [AXI_ID_WIDTH - 1:0] s00_b_id;
output wire [AXI_USER_WIDTH - 1:0] s00_b_user;
input wire s00_b_ready;
output wire s00_b_valid;
output wire [AXI_ADDR_WIDTH - 1:0] m00_aw_addr;
output wire [2:0] m00_aw_prot;
output wire [3:0] m00_aw_region;
output wire [7:0] m00_aw_len;
output wire [2:0] m00_aw_size;
output wire [1:0] m00_aw_burst;
output wire m00_aw_lock;
output wire [3:0] m00_aw_cache;
output wire [3:0] m00_aw_qos;
output wire [AXI_ID_WIDTH - 1:0] m00_aw_id;
output wire [AXI_USER_WIDTH - 1:0] m00_aw_user;
input wire m00_aw_ready;
output wire m00_aw_valid;
output wire [AXI_ADDR_WIDTH - 1:0] m00_ar_addr;
output wire [2:0] m00_ar_prot;
output wire [3:0] m00_ar_region;
output wire [7:0] m00_ar_len;
output wire [2:0] m00_ar_size;
output wire [1:0] m00_ar_burst;
output wire m00_ar_lock;
output wire [3:0] m00_ar_cache;
output wire [3:0] m00_ar_qos;
output wire [AXI_ID_WIDTH - 1:0] m00_ar_id;
output wire [AXI_USER_WIDTH - 1:0] m00_ar_user;
input wire m00_ar_ready;
output wire m00_ar_valid;
output wire m00_w_valid;
output wire [AXI_DATA_WIDTH - 1:0] m00_w_data;
output wire [AXI_STRB_WIDTH - 1:0] m00_w_strb;
output wire [AXI_USER_WIDTH - 1:0] m00_w_user;
output wire m00_w_last;
input wire m00_w_ready;
input wire [AXI_DATA_WIDTH - 1:0] m00_r_data;
input wire [1:0] m00_r_resp;
input wire m00_r_last;
input wire [AXI_ID_WIDTH - 1:0] m00_r_id;
input wire [AXI_USER_WIDTH - 1:0] m00_r_user;
output wire m00_r_ready;
input wire m00_r_valid;
input wire [1:0] m00_b_resp;
input wire [AXI_ID_WIDTH - 1:0] m00_b_id;
input wire [AXI_USER_WIDTH - 1:0] m00_b_user;
output wire m00_b_ready;
input wire m00_b_valid;
generate
if (SLICE_DEPTH > 1) begin : WITH_SLICE
axi_slice #(
.AXI_ADDR_WIDTH(AXI_ADDR_WIDTH),
.AXI_DATA_WIDTH(AXI_DATA_WIDTH),
.AXI_USER_WIDTH(AXI_USER_WIDTH),
.AXI_ID_WIDTH(AXI_ID_WIDTH),
.SLICE_DEPTH(SLICE_DEPTH)
) axi_slice_i(
.clk_i(clk_i),
.rst_ni(rst_ni),
.test_en_i(test_en_i),
.axi_slave_aw_valid_i(s00_aw_valid),
.axi_slave_aw_addr_i(s00_aw_addr),
.axi_slave_aw_prot_i(s00_aw_prot),
.axi_slave_aw_region_i(s00_aw_region),
.axi_slave_aw_len_i(s00_aw_len),
.axi_slave_aw_size_i(s00_aw_size),
.axi_slave_aw_burst_i(s00_aw_burst),
.axi_slave_aw_lock_i(s00_aw_lock),
.axi_slave_aw_cache_i(s00_aw_cache),
.axi_slave_aw_qos_i(s00_aw_qos),
.axi_slave_aw_id_i(s00_aw_id[AXI_ID_WIDTH - 1:0]),
.axi_slave_aw_user_i(s00_aw_user),
.axi_slave_aw_ready_o(s00_aw_ready),
.axi_slave_ar_valid_i(s00_ar_valid),
.axi_slave_ar_addr_i(s00_ar_addr),
.axi_slave_ar_prot_i(s00_ar_prot),
.axi_slave_ar_region_i(s00_ar_region),
.axi_slave_ar_len_i(s00_ar_len),
.axi_slave_ar_size_i(s00_ar_size),
.axi_slave_ar_burst_i(s00_ar_burst),
.axi_slave_ar_lock_i(s00_ar_lock),
.axi_slave_ar_cache_i(s00_ar_cache),
.axi_slave_ar_qos_i(s00_ar_qos),
.axi_slave_ar_id_i(s00_ar_id[AXI_ID_WIDTH - 1:0]),
.axi_slave_ar_user_i(s00_ar_user),
.axi_slave_ar_ready_o(s00_ar_ready),
.axi_slave_w_valid_i(s00_w_valid),
.axi_slave_w_data_i(s00_w_data),
.axi_slave_w_strb_i(s00_w_strb),
.axi_slave_w_user_i(s00_w_user),
.axi_slave_w_last_i(s00_w_last),
.axi_slave_w_ready_o(s00_w_ready),
.axi_slave_r_valid_o(s00_r_valid),
.axi_slave_r_data_o(s00_r_data),
.axi_slave_r_resp_o(s00_r_resp),
.axi_slave_r_last_o(s00_r_last),
.axi_slave_r_id_o(s00_r_id[AXI_ID_WIDTH - 1:0]),
.axi_slave_r_user_o(s00_r_user),
.axi_slave_r_ready_i(s00_r_ready),
.axi_slave_b_valid_o(s00_b_valid),
.axi_slave_b_resp_o(s00_b_resp),
.axi_slave_b_id_o(s00_b_id[AXI_ID_WIDTH - 1:0]),
.axi_slave_b_user_o(s00_b_user),
.axi_slave_b_ready_i(s00_b_ready),
.axi_master_aw_valid_o(m00_aw_valid),
.axi_master_aw_addr_o(m00_aw_addr),
.axi_master_aw_prot_o(m00_aw_prot),
.axi_master_aw_region_o(m00_aw_region),
.axi_master_aw_len_o(m00_aw_len),
.axi_master_aw_size_o(m00_aw_size),
.axi_master_aw_burst_o(m00_aw_burst),
.axi_master_aw_lock_o(m00_aw_lock),
.axi_master_aw_cache_o(m00_aw_cache),
.axi_master_aw_qos_o(m00_aw_qos),
.axi_master_aw_id_o(m00_aw_id[AXI_ID_WIDTH - 1:0]),
.axi_master_aw_user_o(m00_aw_user),
.axi_master_aw_ready_i(m00_aw_ready),
.axi_master_ar_valid_o(m00_ar_valid),
.axi_master_ar_addr_o(m00_ar_addr),
.axi_master_ar_prot_o(m00_ar_prot),
.axi_master_ar_region_o(m00_ar_region),
.axi_master_ar_len_o(m00_ar_len),
.axi_master_ar_size_o(m00_ar_size),
.axi_master_ar_burst_o(m00_ar_burst),
.axi_master_ar_lock_o(m00_ar_lock),
.axi_master_ar_cache_o(m00_ar_cache),
.axi_master_ar_qos_o(m00_ar_qos),
.axi_master_ar_id_o(m00_ar_id[AXI_ID_WIDTH - 1:0]),
.axi_master_ar_user_o(m00_ar_user),
.axi_master_ar_ready_i(m00_ar_ready),
.axi_master_w_valid_o(m00_w_valid),
.axi_master_w_data_o(m00_w_data),
.axi_master_w_strb_o(m00_w_strb),
.axi_master_w_user_o(m00_w_user),
.axi_master_w_last_o(m00_w_last),
.axi_master_w_ready_i(m00_w_ready),
.axi_master_r_valid_i(m00_r_valid),
.axi_master_r_data_i(m00_r_data),
.axi_master_r_resp_i(m00_r_resp),
.axi_master_r_last_i(m00_r_last),
.axi_master_r_id_i(m00_r_id[AXI_ID_WIDTH - 1:0]),
.axi_master_r_user_i(m00_r_user),
.axi_master_r_ready_o(m00_r_ready),
.axi_master_b_valid_i(m00_b_valid),
.axi_master_b_resp_i(m00_b_resp),
.axi_master_b_id_i(m00_b_id[AXI_ID_WIDTH - 1:0]),
.axi_master_b_user_i(m00_b_user),
.axi_master_b_ready_o(m00_b_ready)
);
end
else begin : NO_SLICE
assign m00_aw_valid = s00_aw_valid;
assign m00_aw_addr = s00_aw_addr;
assign m00_aw_prot = s00_aw_prot;
assign m00_aw_region = s00_aw_region;
assign m00_aw_len = s00_aw_len;
assign m00_aw_size = s00_aw_size;
assign m00_aw_burst = s00_aw_burst;
assign m00_aw_lock = s00_aw_lock;
assign m00_aw_cache = s00_aw_cache;
assign m00_aw_qos = s00_aw_qos;
assign m00_aw_id = s00_aw_id;
assign m00_aw_user = s00_aw_user;
assign s00_aw_ready = m00_aw_ready;
assign m00_ar_valid = s00_ar_valid;
assign m00_ar_addr = s00_ar_addr;
assign m00_ar_prot = s00_ar_prot;
assign m00_ar_region = s00_ar_region;
assign m00_ar_len = s00_ar_len;
assign m00_ar_size = s00_ar_size;
assign m00_ar_burst = s00_ar_burst;
assign m00_ar_lock = s00_ar_lock;
assign m00_ar_cache = s00_ar_cache;
assign m00_ar_qos = s00_ar_qos;
assign m00_ar_id = s00_ar_id;
assign m00_ar_user = s00_ar_user;
assign s00_ar_ready = m00_ar_ready;
assign m00_w_valid = s00_w_valid;
assign m00_w_data = s00_w_data;
assign m00_w_strb = s00_w_strb;
assign m00_w_user = s00_w_user;
assign m00_w_last = s00_w_last;
assign s00_w_ready = m00_w_ready;
assign s00_r_valid = m00_r_valid;
assign s00_r_data = m00_r_data;
assign s00_r_resp = m00_r_resp;
assign s00_r_last = m00_r_last;
assign s00_r_id = m00_r_id;
assign s00_r_user = m00_r_user;
assign m00_r_ready = s00_r_ready;
assign s00_b_valid = m00_b_valid;
assign s00_b_resp = m00_b_resp;
assign s00_b_id = m00_b_id;
assign s00_b_user = m00_b_user;
assign m00_b_ready = s00_b_ready;
end
endgenerate
endmodule