blob: 4b14eb8c65fc76ac58eb732226a4fc2d7465bde1 [file] [log] [blame]
module axi_node
#(
parameter AXI_ADDRESS_W = 32,
parameter AXI_DATA_W = 64,
parameter AXI_NUMBYTES = AXI_DATA_W/8,
parameter AXI_USER_W = 6,
`ifdef USE_CFG_BLOCK
`ifdef USE_AXI_LITE
parameter AXI_LITE_ADDRESS_W = 32,
parameter AXI_LITE_DATA_W = 32,
parameter AXI_LITE_BE_W = AXI_LITE_DATA_W/8,
`else
parameter APB_ADDR_WIDTH = 32,
parameter APB_DATA_WIDTH = 32,
`endif
`endif
parameter N_MASTER_PORT = 8,
parameter N_SLAVE_PORT = 4,
parameter AXI_ID_IN = 16,
parameter AXI_ID_OUT = AXI_ID_IN + $clog2(N_SLAVE_PORT),
parameter FIFO_DEPTH_DW = 8,
parameter N_REGION = 2
)
(
clk,
rst_n,
test_en_i,
slave_awid_i,
slave_awaddr_i,
slave_awlen_i,
slave_awsize_i,
slave_awburst_i,
slave_awlock_i,
slave_awcache_i,
slave_awprot_i,
slave_awregion_i,
slave_awuser_i,
slave_awqos_i,
slave_awvalid_i,
slave_awready_o,
slave_wdata_i,
slave_wstrb_i,
slave_wlast_i,
slave_wuser_i,
slave_wvalid_i,
slave_wready_o,
slave_bid_o,
slave_bresp_o,
slave_bvalid_o,
slave_buser_o,
slave_bready_i,
slave_arid_i,
slave_araddr_i,
slave_arlen_i,
slave_arsize_i,
slave_arburst_i,
slave_arlock_i,
slave_arcache_i,
slave_arprot_i,
slave_arregion_i,
slave_aruser_i,
slave_arqos_i,
slave_arvalid_i,
slave_arready_o,
slave_rid_o,
slave_rdata_o,
slave_rresp_o,
slave_rlast_o,
slave_ruser_o,
slave_rvalid_o,
slave_rready_i,
master_awid_o,
master_awaddr_o,
master_awlen_o,
master_awsize_o,
master_awburst_o,
master_awlock_o,
master_awcache_o,
master_awprot_o,
master_awregion_o,
master_awuser_o,
master_awqos_o,
master_awvalid_o,
master_awready_i,
master_wdata_o,
master_wstrb_o,
master_wlast_o,
master_wuser_o,
master_wvalid_o,
master_wready_i,
master_bid_i,
master_bresp_i,
master_buser_i,
master_bvalid_i,
master_bready_o,
master_arid_o,
master_araddr_o,
master_arlen_o,
master_arsize_o,
master_arburst_o,
master_arlock_o,
master_arcache_o,
master_arprot_o,
master_arregion_o,
master_aruser_o,
master_arqos_o,
master_arvalid_o,
master_arready_i,
master_rid_i,
master_rdata_i,
master_rresp_i,
master_rlast_i,
master_ruser_i,
master_rvalid_i,
master_rready_o,
cfg_START_ADDR_i,
cfg_END_ADDR_i,
cfg_valid_rule_i,
cfg_connectivity_map_i
);
//parameter AXI_ADDRESS_W = 32;
//parameter AXI_DATA_W = 64;
//parameter AXI_NUMBYTES = AXI_DATA_W / 8;
//parameter AXI_USER_W = 6;
//parameter N_MASTER_PORT = 8;
//parameter N_SLAVE_PORT = 4;
//parameter AXI_ID_IN = 16;
//parameter AXI_ID_OUT = AXI_ID_IN + $clog2(N_SLAVE_PORT);
//parameter FIFO_DEPTH_DW = 8;
//parameter N_REGION = 2;
input wire clk;
input wire rst_n;
input wire test_en_i;
input wire [(N_SLAVE_PORT * AXI_ID_IN) - 1:0] slave_awid_i;
input wire [(N_SLAVE_PORT * AXI_ADDRESS_W) - 1:0] slave_awaddr_i;
input wire [(N_SLAVE_PORT * 8) - 1:0] slave_awlen_i;
input wire [(N_SLAVE_PORT * 3) - 1:0] slave_awsize_i;
input wire [(N_SLAVE_PORT * 2) - 1:0] slave_awburst_i;
input wire [N_SLAVE_PORT - 1:0] slave_awlock_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_awcache_i;
input wire [(N_SLAVE_PORT * 3) - 1:0] slave_awprot_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_awregion_i;
input wire [(N_SLAVE_PORT * AXI_USER_W) - 1:0] slave_awuser_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_awqos_i;
input wire [N_SLAVE_PORT - 1:0] slave_awvalid_i;
output wire [N_SLAVE_PORT - 1:0] slave_awready_o;
input wire [(N_SLAVE_PORT * AXI_DATA_W) - 1:0] slave_wdata_i;
input wire [(N_SLAVE_PORT * AXI_NUMBYTES) - 1:0] slave_wstrb_i;
input wire [N_SLAVE_PORT - 1:0] slave_wlast_i;
input wire [(N_SLAVE_PORT * AXI_USER_W) - 1:0] slave_wuser_i;
input wire [N_SLAVE_PORT - 1:0] slave_wvalid_i;
output wire [N_SLAVE_PORT - 1:0] slave_wready_o;
output wire [(N_SLAVE_PORT * AXI_ID_IN) - 1:0] slave_bid_o;
output wire [(N_SLAVE_PORT * 2) - 1:0] slave_bresp_o;
output wire [N_SLAVE_PORT - 1:0] slave_bvalid_o;
output wire [(N_SLAVE_PORT * AXI_USER_W) - 1:0] slave_buser_o;
input wire [N_SLAVE_PORT - 1:0] slave_bready_i;
input wire [(N_SLAVE_PORT * AXI_ID_IN) - 1:0] slave_arid_i;
input wire [(N_SLAVE_PORT * AXI_ADDRESS_W) - 1:0] slave_araddr_i;
input wire [(N_SLAVE_PORT * 8) - 1:0] slave_arlen_i;
input wire [(N_SLAVE_PORT * 3) - 1:0] slave_arsize_i;
input wire [(N_SLAVE_PORT * 2) - 1:0] slave_arburst_i;
input wire [N_SLAVE_PORT - 1:0] slave_arlock_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_arcache_i;
input wire [(N_SLAVE_PORT * 3) - 1:0] slave_arprot_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_arregion_i;
input wire [(N_SLAVE_PORT * AXI_USER_W) - 1:0] slave_aruser_i;
input wire [(N_SLAVE_PORT * 4) - 1:0] slave_arqos_i;
input wire [N_SLAVE_PORT - 1:0] slave_arvalid_i;
output wire [N_SLAVE_PORT - 1:0] slave_arready_o;
output wire [(N_SLAVE_PORT * AXI_ID_IN) - 1:0] slave_rid_o;
output wire [(N_SLAVE_PORT * AXI_DATA_W) - 1:0] slave_rdata_o;
output wire [(N_SLAVE_PORT * 2) - 1:0] slave_rresp_o;
output wire [N_SLAVE_PORT - 1:0] slave_rlast_o;
output wire [(N_SLAVE_PORT * AXI_USER_W) - 1:0] slave_ruser_o;
output wire [N_SLAVE_PORT - 1:0] slave_rvalid_o;
input wire [N_SLAVE_PORT - 1:0] slave_rready_i;
output wire [(N_MASTER_PORT * AXI_ID_OUT) - 1:0] master_awid_o;
output wire [(N_MASTER_PORT * AXI_ADDRESS_W) - 1:0] master_awaddr_o;
output wire [(N_MASTER_PORT * 8) - 1:0] master_awlen_o;
output wire [(N_MASTER_PORT * 3) - 1:0] master_awsize_o;
output wire [(N_MASTER_PORT * 2) - 1:0] master_awburst_o;
output wire [N_MASTER_PORT - 1:0] master_awlock_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_awcache_o;
output wire [(N_MASTER_PORT * 3) - 1:0] master_awprot_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_awregion_o;
output wire [(N_MASTER_PORT * AXI_USER_W) - 1:0] master_awuser_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_awqos_o;
output wire [N_MASTER_PORT - 1:0] master_awvalid_o;
input wire [N_MASTER_PORT - 1:0] master_awready_i;
output wire [(N_MASTER_PORT * AXI_DATA_W) - 1:0] master_wdata_o;
output wire [(N_MASTER_PORT * AXI_NUMBYTES) - 1:0] master_wstrb_o;
output wire [N_MASTER_PORT - 1:0] master_wlast_o;
output wire [(N_MASTER_PORT * AXI_USER_W) - 1:0] master_wuser_o;
output wire [N_MASTER_PORT - 1:0] master_wvalid_o;
input wire [N_MASTER_PORT - 1:0] master_wready_i;
input wire [(N_MASTER_PORT * AXI_ID_OUT) - 1:0] master_bid_i;
input wire [(N_MASTER_PORT * 2) - 1:0] master_bresp_i;
input wire [(N_MASTER_PORT * AXI_USER_W) - 1:0] master_buser_i;
input wire [N_MASTER_PORT - 1:0] master_bvalid_i;
output wire [N_MASTER_PORT - 1:0] master_bready_o;
output wire [(N_MASTER_PORT * AXI_ID_OUT) - 1:0] master_arid_o;
output wire [(N_MASTER_PORT * AXI_ADDRESS_W) - 1:0] master_araddr_o;
output wire [(N_MASTER_PORT * 8) - 1:0] master_arlen_o;
output wire [(N_MASTER_PORT * 3) - 1:0] master_arsize_o;
output wire [(N_MASTER_PORT * 2) - 1:0] master_arburst_o;
output wire [N_MASTER_PORT - 1:0] master_arlock_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_arcache_o;
output wire [(N_MASTER_PORT * 3) - 1:0] master_arprot_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_arregion_o;
output wire [(N_MASTER_PORT * AXI_USER_W) - 1:0] master_aruser_o;
output wire [(N_MASTER_PORT * 4) - 1:0] master_arqos_o;
output wire [N_MASTER_PORT - 1:0] master_arvalid_o;
input wire [N_MASTER_PORT - 1:0] master_arready_i;
input wire [(N_MASTER_PORT * AXI_ID_OUT) - 1:0] master_rid_i;
input wire [(N_MASTER_PORT * AXI_DATA_W) - 1:0] master_rdata_i;
input wire [(N_MASTER_PORT * 2) - 1:0] master_rresp_i;
input wire [N_MASTER_PORT - 1:0] master_rlast_i;
input wire [(N_MASTER_PORT * AXI_USER_W) - 1:0] master_ruser_i;
input wire [N_MASTER_PORT - 1:0] master_rvalid_i;
output wire [N_MASTER_PORT - 1:0] master_rready_o;
input wire [((N_REGION * N_MASTER_PORT) * 32) - 1:0] cfg_START_ADDR_i;
input wire [((N_REGION * N_MASTER_PORT) * 32) - 1:0] cfg_END_ADDR_i;
input wire [(N_REGION * N_MASTER_PORT) - 1:0] cfg_valid_rule_i;
input wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] cfg_connectivity_map_i;
genvar i;
genvar j;
genvar k;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] arvalid_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] arready_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] arvalid_int_reverse;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] arready_int_reverse;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] awvalid_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] awready_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] awvalid_int_reverse;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] awready_int_reverse;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] wvalid_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] wready_int;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] wvalid_int_reverse;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] wready_int_reverse;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] bvalid_int;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] bready_int;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] bvalid_int_reverse;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] bready_int_reverse;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] rvalid_int;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] rready_int;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] rvalid_int_reverse;
wire [(N_MASTER_PORT * N_SLAVE_PORT) - 1:0] rready_int_reverse;
wire [((N_REGION * N_MASTER_PORT) * 32) - 1:0] START_ADDR;
wire [((N_REGION * N_MASTER_PORT) * 32) - 1:0] END_ADDR;
wire [(N_REGION * N_MASTER_PORT) - 1:0] valid_rule;
wire [(N_SLAVE_PORT * N_MASTER_PORT) - 1:0] connectivity_map;
generate
for (i = 0; i < N_MASTER_PORT; i = i + 1) begin : _REVERSING_VALID_READY_MASTER
for (j = 0; j < N_SLAVE_PORT; j = j + 1) begin : _REVERSING_VALID_READY_SLAVE
assign arvalid_int_reverse[(i * N_SLAVE_PORT) + j] = arvalid_int[(j * N_MASTER_PORT) + i];
assign awvalid_int_reverse[(i * N_SLAVE_PORT) + j] = awvalid_int[(j * N_MASTER_PORT) + i];
assign wvalid_int_reverse[(i * N_SLAVE_PORT) + j] = wvalid_int[(j * N_MASTER_PORT) + i];
assign bvalid_int_reverse[(j * N_MASTER_PORT) + i] = bvalid_int[(i * N_SLAVE_PORT) + j];
assign rvalid_int_reverse[(j * N_MASTER_PORT) + i] = rvalid_int[(i * N_SLAVE_PORT) + j];
assign arready_int_reverse[(j * N_MASTER_PORT) + i] = arready_int[(i * N_SLAVE_PORT) + j];
assign awready_int_reverse[(j * N_MASTER_PORT) + i] = awready_int[(i * N_SLAVE_PORT) + j];
assign wready_int_reverse[(j * N_MASTER_PORT) + i] = wready_int[(i * N_SLAVE_PORT) + j];
assign bready_int_reverse[(i * N_SLAVE_PORT) + j] = bready_int[(j * N_MASTER_PORT) + i];
assign rready_int_reverse[(i * N_SLAVE_PORT) + j] = rready_int[(j * N_MASTER_PORT) + i];
end
end
for (i = 0; i < N_MASTER_PORT; i = i + 1) begin : _REQ_BLOCK_GEN
axi_request_block #(
.AXI_ADDRESS_W(AXI_ADDRESS_W),
.AXI_DATA_W(AXI_DATA_W),
.AXI_USER_W(AXI_USER_W),
.N_INIT_PORT(N_MASTER_PORT),
.N_TARG_PORT(N_SLAVE_PORT),
.FIFO_DW_DEPTH(FIFO_DEPTH_DW),
.AXI_ID_IN(AXI_ID_IN)
) REQ_BLOCK(
.clk(clk),
.rst_n(rst_n),
.test_en_i(test_en_i),
.awid_i(slave_awid_i),
.awaddr_i(slave_awaddr_i),
.awlen_i(slave_awlen_i),
.awsize_i(slave_awsize_i),
.awburst_i(slave_awburst_i),
.awlock_i(slave_awlock_i),
.awcache_i(slave_awcache_i),
.awprot_i(slave_awprot_i),
.awregion_i(slave_awregion_i),
.awuser_i(slave_awuser_i),
.awqos_i(slave_awqos_i),
.awvalid_i(awvalid_int_reverse[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.awready_o(awready_int[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.wdata_i(slave_wdata_i),
.wstrb_i(slave_wstrb_i),
.wlast_i(slave_wlast_i),
.wuser_i(slave_wuser_i),
.wvalid_i(wvalid_int_reverse[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.wready_o(wready_int[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.arid_i(slave_arid_i),
.araddr_i(slave_araddr_i),
.arlen_i(slave_arlen_i),
.arsize_i(slave_arsize_i),
.arburst_i(slave_arburst_i),
.arlock_i(slave_arlock_i),
.arcache_i(slave_arcache_i),
.arprot_i(slave_arprot_i),
.arregion_i(slave_arregion_i),
.aruser_i(slave_aruser_i),
.arqos_i(slave_arqos_i),
.arvalid_i(arvalid_int_reverse[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.arready_o(arready_int[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.bid_i(master_bid_i[i * AXI_ID_OUT+:AXI_ID_OUT]),
.bvalid_i(master_bvalid_i[i]),
.bready_o(master_bready_o[i]),
.bvalid_o(bvalid_int[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.bready_i(bready_int_reverse[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.rid_i(master_rid_i[i * AXI_ID_OUT+:AXI_ID_OUT]),
.rvalid_i(master_rvalid_i[i]),
.rready_o(master_rready_o[i]),
.rvalid_o(rvalid_int[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.rready_i(rready_int_reverse[i * N_SLAVE_PORT+:N_SLAVE_PORT]),
.awid_o(master_awid_o[i * AXI_ID_OUT+:AXI_ID_OUT]),
.awaddr_o(master_awaddr_o[i * AXI_ADDRESS_W+:AXI_ADDRESS_W]),
.awlen_o(master_awlen_o[i * 8+:8]),
.awsize_o(master_awsize_o[i * 3+:3]),
.awburst_o(master_awburst_o[i * 2+:2]),
.awlock_o(master_awlock_o[i]),
.awcache_o(master_awcache_o[i * 4+:4]),
.awprot_o(master_awprot_o[i * 3+:3]),
.awregion_o(master_awregion_o[i * 4+:4]),
.awuser_o(master_awuser_o[i * AXI_USER_W+:AXI_USER_W]),
.awqos_o(master_awqos_o[i * 4+:4]),
.awvalid_o(master_awvalid_o[i]),
.awready_i(master_awready_i[i]),
.wdata_o(master_wdata_o[i * AXI_DATA_W+:AXI_DATA_W]),
.wstrb_o(master_wstrb_o[i * AXI_NUMBYTES+:AXI_NUMBYTES]),
.wlast_o(master_wlast_o[i]),
.wuser_o(master_wuser_o[i * AXI_USER_W+:AXI_USER_W]),
.wvalid_o(master_wvalid_o[i]),
.wready_i(master_wready_i[i]),
.arid_o(master_arid_o[i * AXI_ID_OUT+:AXI_ID_OUT]),
.araddr_o(master_araddr_o[i * AXI_ADDRESS_W+:AXI_ADDRESS_W]),
.arlen_o(master_arlen_o[i * 8+:8]),
.arsize_o(master_arsize_o[i * 3+:3]),
.arburst_o(master_arburst_o[i * 2+:2]),
.arlock_o(master_arlock_o[i]),
.arcache_o(master_arcache_o[i * 4+:4]),
.arprot_o(master_arprot_o[i * 3+:3]),
.arregion_o(master_arregion_o[i * 4+:4]),
.aruser_o(master_aruser_o[i * AXI_USER_W+:AXI_USER_W]),
.arqos_o(master_arqos_o[i * 4+:4]),
.arvalid_o(master_arvalid_o[i]),
.arready_i(master_arready_i[i])
);
end
for (i = 0; i < N_SLAVE_PORT; i = i + 1) begin : _RESP_BLOCK_GEN
axi_response_block #(
.AXI_ADDRESS_W(AXI_ADDRESS_W),
.AXI_DATA_W(AXI_DATA_W),
.AXI_USER_W(AXI_USER_W),
.N_INIT_PORT(N_MASTER_PORT),
.N_TARG_PORT(N_SLAVE_PORT),
.FIFO_DEPTH_DW(FIFO_DEPTH_DW),
.AXI_ID_IN(AXI_ID_IN),
.N_REGION(N_REGION)
) RESP_BLOCK(
.clk(clk),
.rst_n(rst_n),
.test_en_i(test_en_i),
.rid_i(master_rid_i),
.rdata_i(master_rdata_i),
.rresp_i(master_rresp_i),
.rlast_i(master_rlast_i),
.ruser_i(master_ruser_i),
.rvalid_i(rvalid_int_reverse[i * N_MASTER_PORT+:N_MASTER_PORT]),
.rready_o(rready_int[i * N_MASTER_PORT+:N_MASTER_PORT]),
.bid_i(master_bid_i),
.bresp_i(master_bresp_i),
.buser_i(master_buser_i),
.bvalid_i(bvalid_int_reverse[i * N_MASTER_PORT+:N_MASTER_PORT]),
.bready_o(bready_int[i * N_MASTER_PORT+:N_MASTER_PORT]),
.rid_o(slave_rid_o[i * AXI_ID_IN+:AXI_ID_IN]),
.rdata_o(slave_rdata_o[i * AXI_DATA_W+:AXI_DATA_W]),
.rresp_o(slave_rresp_o[i * 2+:2]),
.rlast_o(slave_rlast_o[i]),
.ruser_o(slave_ruser_o[i * AXI_USER_W+:AXI_USER_W]),
.rvalid_o(slave_rvalid_o[i]),
.rready_i(slave_rready_i[i]),
.bid_o(slave_bid_o[i * AXI_ID_IN+:AXI_ID_IN]),
.bresp_o(slave_bresp_o[i * 2+:2]),
.buser_o(slave_buser_o[i * AXI_USER_W+:AXI_USER_W]),
.bvalid_o(slave_bvalid_o[i]),
.bready_i(slave_bready_i[i]),
.arvalid_i(slave_arvalid_i[i]),
.araddr_i(slave_araddr_i[i * AXI_ADDRESS_W+:AXI_ADDRESS_W]),
.arready_o(slave_arready_o[i]),
.arlen_i(slave_arlen_i[i * 8+:8]),
.aruser_i(slave_aruser_i[i * AXI_USER_W+:AXI_USER_W]),
.arid_i(slave_arid_i[i * AXI_ID_IN+:AXI_ID_IN]),
.arvalid_o(arvalid_int[i * N_MASTER_PORT+:N_MASTER_PORT]),
.arready_i(arready_int_reverse[i * N_MASTER_PORT+:N_MASTER_PORT]),
.awvalid_i(slave_awvalid_i[i]),
.awaddr_i(slave_awaddr_i[i * AXI_ADDRESS_W+:AXI_ADDRESS_W]),
.awready_o(slave_awready_o[i]),
.awuser_i(slave_awuser_i[i * AXI_USER_W+:AXI_USER_W]),
.awid_i(slave_awid_i[i * AXI_ID_IN+:AXI_ID_IN]),
.awvalid_o(awvalid_int[i * N_MASTER_PORT+:N_MASTER_PORT]),
.awready_i(awready_int_reverse[i * N_MASTER_PORT+:N_MASTER_PORT]),
.wvalid_i(slave_wvalid_i[i]),
.wlast_i(slave_wlast_i[i]),
.wready_o(slave_wready_o[i]),
.wvalid_o(wvalid_int[i * N_MASTER_PORT+:N_MASTER_PORT]),
.wready_i(wready_int_reverse[i * N_MASTER_PORT+:N_MASTER_PORT]),
.START_ADDR_i(START_ADDR),
.END_ADDR_i(END_ADDR),
.enable_region_i(valid_rule),
.connectivity_map_i(connectivity_map[i * N_MASTER_PORT+:N_MASTER_PORT])
);
end
endgenerate
assign START_ADDR = cfg_START_ADDR_i;
assign END_ADDR = cfg_END_ADDR_i;
assign connectivity_map = cfg_connectivity_map_i;
generate
for (i = 0; i < N_REGION; i = i + 1) begin : _VALID_RULE_REGION
for (j = 0; j < N_MASTER_PORT; j = j + 1) begin : _VALID_RULE_MASTER
assign valid_rule[(i * N_MASTER_PORT) + j] = cfg_valid_rule_i[(i * N_MASTER_PORT) + j];
end
end
endgenerate
endmodule