Entity: axi_interconnect

Diagram

S_COUNT M_COUNT DATA_WIDTH ADDR_WIDTH STRB_WIDTH ID_WIDTH AWUSER_ENABLE AWUSER_WIDTH WUSER_ENABLE WUSER_WIDTH BUSER_ENABLE BUSER_WIDTH ARUSER_ENABLE ARUSER_WIDTH RUSER_ENABLE RUSER_WIDTH FORWARD_ID M_REGIONS M_BASE_ADDR M_ADDR_WIDTH M_CONNECT_READ M_CONNECT_WRITE M_SECURE CL_S_COUNT CL_M_COUNT AUSER_WIDTH M_BASE_ADDR_INT wire clk wire rst wire [S_COUNT*ID_WIDTH-1:0] s_axi_awid wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_awaddr wire [S_COUNT*8-1:0] s_axi_awlen wire [S_COUNT*3-1:0] s_axi_awsize wire [S_COUNT*2-1:0] s_axi_awburst wire [S_COUNT-1:0] s_axi_awlock wire [S_COUNT*4-1:0] s_axi_awcache wire [S_COUNT*3-1:0] s_axi_awprot wire [S_COUNT*4-1:0] s_axi_awqos wire [S_COUNT*AWUSER_WIDTH-1:0] s_axi_awuser wire [S_COUNT-1:0] s_axi_awvalid wire [S_COUNT*DATA_WIDTH-1:0] s_axi_wdata wire [S_COUNT*STRB_WIDTH-1:0] s_axi_wstrb wire [S_COUNT-1:0] s_axi_wlast wire [S_COUNT*WUSER_WIDTH-1:0] s_axi_wuser wire [S_COUNT-1:0] s_axi_wvalid wire [S_COUNT-1:0] s_axi_bready wire [S_COUNT*ID_WIDTH-1:0] s_axi_arid wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_araddr wire [S_COUNT*8-1:0] s_axi_arlen wire [S_COUNT*3-1:0] s_axi_arsize wire [S_COUNT*2-1:0] s_axi_arburst wire [S_COUNT-1:0] s_axi_arlock wire [S_COUNT*4-1:0] s_axi_arcache wire [S_COUNT*3-1:0] s_axi_arprot wire [S_COUNT*4-1:0] s_axi_arqos wire [S_COUNT*ARUSER_WIDTH-1:0] s_axi_aruser wire [S_COUNT-1:0] s_axi_arvalid wire [S_COUNT-1:0] s_axi_rready wire [M_COUNT-1:0] m_axi_awready wire [M_COUNT-1:0] m_axi_wready wire [M_COUNT*ID_WIDTH-1:0] m_axi_bid wire [M_COUNT*2-1:0] m_axi_bresp wire [M_COUNT*BUSER_WIDTH-1:0] m_axi_buser wire [M_COUNT-1:0] m_axi_bvalid wire [M_COUNT-1:0] m_axi_arready wire [M_COUNT*ID_WIDTH-1:0] m_axi_rid wire [M_COUNT*DATA_WIDTH-1:0] m_axi_rdata wire [M_COUNT*2-1:0] m_axi_rresp wire [M_COUNT-1:0] m_axi_rlast wire [M_COUNT*RUSER_WIDTH-1:0] m_axi_ruser wire [M_COUNT-1:0] m_axi_rvalid wire [S_COUNT-1:0] s_axi_awready wire [S_COUNT-1:0] s_axi_wready wire [S_COUNT*ID_WIDTH-1:0] s_axi_bid wire [S_COUNT*2-1:0] s_axi_bresp wire [S_COUNT*BUSER_WIDTH-1:0] s_axi_buser wire [S_COUNT-1:0] s_axi_bvalid wire [S_COUNT-1:0] s_axi_arready wire [S_COUNT*ID_WIDTH-1:0] s_axi_rid wire [S_COUNT*DATA_WIDTH-1:0] s_axi_rdata wire [S_COUNT*2-1:0] s_axi_rresp wire [S_COUNT-1:0] s_axi_rlast wire [S_COUNT*RUSER_WIDTH-1:0] s_axi_ruser wire [S_COUNT-1:0] s_axi_rvalid wire [M_COUNT*ID_WIDTH-1:0] m_axi_awid wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_awaddr wire [M_COUNT*8-1:0] m_axi_awlen wire [M_COUNT*3-1:0] m_axi_awsize wire [M_COUNT*2-1:0] m_axi_awburst wire [M_COUNT-1:0] m_axi_awlock wire [M_COUNT*4-1:0] m_axi_awcache wire [M_COUNT*3-1:0] m_axi_awprot wire [M_COUNT*4-1:0] m_axi_awqos wire [M_COUNT*4-1:0] m_axi_awregion wire [M_COUNT*AWUSER_WIDTH-1:0] m_axi_awuser wire [M_COUNT-1:0] m_axi_awvalid wire [M_COUNT*DATA_WIDTH-1:0] m_axi_wdata wire [M_COUNT*STRB_WIDTH-1:0] m_axi_wstrb wire [M_COUNT-1:0] m_axi_wlast wire [M_COUNT*WUSER_WIDTH-1:0] m_axi_wuser wire [M_COUNT-1:0] m_axi_wvalid wire [M_COUNT-1:0] m_axi_bready wire [M_COUNT*ID_WIDTH-1:0] m_axi_arid wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_araddr wire [M_COUNT*8-1:0] m_axi_arlen wire [M_COUNT*3-1:0] m_axi_arsize wire [M_COUNT*2-1:0] m_axi_arburst wire [M_COUNT-1:0] m_axi_arlock wire [M_COUNT*4-1:0] m_axi_arcache wire [M_COUNT*3-1:0] m_axi_arprot wire [M_COUNT*4-1:0] m_axi_arqos wire [M_COUNT*4-1:0] m_axi_arregion wire [M_COUNT*ARUSER_WIDTH-1:0] m_axi_aruser wire [M_COUNT-1:0] m_axi_arvalid wire [M_COUNT-1:0] m_axi_rready

Description

Language: Verilog 2001

Generics

Generic name Type Value Description
S_COUNT 4 Number of AXI inputs (slave interfaces)
M_COUNT 4 Number of AXI outputs (master interfaces)
DATA_WIDTH 32 Width of data bus in bits
ADDR_WIDTH 32 Width of address bus in bits
STRB_WIDTH undefined Width of wstrb (width of data bus in words)
ID_WIDTH 8 Width of ID signal
AWUSER_ENABLE 0 Propagate awuser signal
AWUSER_WIDTH 1 Width of awuser signal
WUSER_ENABLE 0 Propagate wuser signal
WUSER_WIDTH 1 Width of wuser signal
BUSER_ENABLE 0 Propagate buser signal
BUSER_WIDTH 1 Width of buser signal
ARUSER_ENABLE 0 Propagate aruser signal
ARUSER_WIDTH 1 Width of aruser signal
RUSER_ENABLE 0 Propagate ruser signal
RUSER_WIDTH 1 Width of ruser signal
FORWARD_ID 0 Propagate ID field
M_REGIONS 1 Number of regions per master interface
M_BASE_ADDR 0 Master interface base addresses M_COUNT concatenated fields of M_REGIONS concatenated fields of ADDR_WIDTH bits set to zero for default addressing based on M_ADDR_WIDTH
M_ADDR_WIDTH undefined Master interface address widths M_COUNT concatenated fields of M_REGIONS concatenated fields of 32 bits
M_CONNECT_READ undefined Read connections between interfaces M_COUNT concatenated fields of S_COUNT bits
M_CONNECT_WRITE undefined Write connections between interfaces M_COUNT concatenated fields of S_COUNT bits
M_SECURE undefined Secure master (fail operations based on awprot/arprot) M_COUNT bits
CL_S_COUNT $clog2(S_COUNT)
CL_M_COUNT $clog2(M_COUNT)
AUSER_WIDTH AWUSER_WIDTH > ARUSER_WIDTH ? AWUSER_WIDTH : ARUSER_WIDTH
M_BASE_ADDR_INT M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0)

Ports

Port name Direction Type Description
clk input wire
rst input wire
s_axi_awid input wire [S_COUNT*ID_WIDTH-1:0] * AXI slave interfaces */
s_axi_awaddr input wire [S_COUNT*ADDR_WIDTH-1:0]
s_axi_awlen input wire [S_COUNT*8-1:0]
s_axi_awsize input wire [S_COUNT*3-1:0]
s_axi_awburst input wire [S_COUNT*2-1:0]
s_axi_awlock input wire [S_COUNT-1:0]
s_axi_awcache input wire [S_COUNT*4-1:0]
s_axi_awprot input wire [S_COUNT*3-1:0]
s_axi_awqos input wire [S_COUNT*4-1:0]
s_axi_awuser input wire [S_COUNT*AWUSER_WIDTH-1:0]
s_axi_awvalid input wire [S_COUNT-1:0]
s_axi_awready output wire [S_COUNT-1:0]
s_axi_wdata input wire [S_COUNT*DATA_WIDTH-1:0]
s_axi_wstrb input wire [S_COUNT*STRB_WIDTH-1:0]
s_axi_wlast input wire [S_COUNT-1:0]
s_axi_wuser input wire [S_COUNT*WUSER_WIDTH-1:0]
s_axi_wvalid input wire [S_COUNT-1:0]
s_axi_wready output wire [S_COUNT-1:0]
s_axi_bid output wire [S_COUNT*ID_WIDTH-1:0]
s_axi_bresp output wire [S_COUNT*2-1:0]
s_axi_buser output wire [S_COUNT*BUSER_WIDTH-1:0]
s_axi_bvalid output wire [S_COUNT-1:0]
s_axi_bready input wire [S_COUNT-1:0]
s_axi_arid input wire [S_COUNT*ID_WIDTH-1:0]
s_axi_araddr input wire [S_COUNT*ADDR_WIDTH-1:0]
s_axi_arlen input wire [S_COUNT*8-1:0]
s_axi_arsize input wire [S_COUNT*3-1:0]
s_axi_arburst input wire [S_COUNT*2-1:0]
s_axi_arlock input wire [S_COUNT-1:0]
s_axi_arcache input wire [S_COUNT*4-1:0]
s_axi_arprot input wire [S_COUNT*3-1:0]
s_axi_arqos input wire [S_COUNT*4-1:0]
s_axi_aruser input wire [S_COUNT*ARUSER_WIDTH-1:0]
s_axi_arvalid input wire [S_COUNT-1:0]
s_axi_arready output wire [S_COUNT-1:0]
s_axi_rid output wire [S_COUNT*ID_WIDTH-1:0]
s_axi_rdata output wire [S_COUNT*DATA_WIDTH-1:0]
s_axi_rresp output wire [S_COUNT*2-1:0]
s_axi_rlast output wire [S_COUNT-1:0]
s_axi_ruser output wire [S_COUNT*RUSER_WIDTH-1:0]
s_axi_rvalid output wire [S_COUNT-1:0]
s_axi_rready input wire [S_COUNT-1:0]
m_axi_awid output wire [M_COUNT*ID_WIDTH-1:0] * AXI master interfaces */
m_axi_awaddr output wire [M_COUNT*ADDR_WIDTH-1:0]
m_axi_awlen output wire [M_COUNT*8-1:0]
m_axi_awsize output wire [M_COUNT*3-1:0]
m_axi_awburst output wire [M_COUNT*2-1:0]
m_axi_awlock output wire [M_COUNT-1:0]
m_axi_awcache output wire [M_COUNT*4-1:0]
m_axi_awprot output wire [M_COUNT*3-1:0]
m_axi_awqos output wire [M_COUNT*4-1:0]
m_axi_awregion output wire [M_COUNT*4-1:0]
m_axi_awuser output wire [M_COUNT*AWUSER_WIDTH-1:0]
m_axi_awvalid output wire [M_COUNT-1:0]
m_axi_awready input wire [M_COUNT-1:0]
m_axi_wdata output wire [M_COUNT*DATA_WIDTH-1:0]
m_axi_wstrb output wire [M_COUNT*STRB_WIDTH-1:0]
m_axi_wlast output wire [M_COUNT-1:0]
m_axi_wuser output wire [M_COUNT*WUSER_WIDTH-1:0]
m_axi_wvalid output wire [M_COUNT-1:0]
m_axi_wready input wire [M_COUNT-1:0]
m_axi_bid input wire [M_COUNT*ID_WIDTH-1:0]
m_axi_bresp input wire [M_COUNT*2-1:0]
m_axi_buser input wire [M_COUNT*BUSER_WIDTH-1:0]
m_axi_bvalid input wire [M_COUNT-1:0]
m_axi_bready output wire [M_COUNT-1:0]
m_axi_arid output wire [M_COUNT*ID_WIDTH-1:0]
m_axi_araddr output wire [M_COUNT*ADDR_WIDTH-1:0]
m_axi_arlen output wire [M_COUNT*8-1:0]
m_axi_arsize output wire [M_COUNT*3-1:0]
m_axi_arburst output wire [M_COUNT*2-1:0]
m_axi_arlock output wire [M_COUNT-1:0]
m_axi_arcache output wire [M_COUNT*4-1:0]
m_axi_arprot output wire [M_COUNT*3-1:0]
m_axi_arqos output wire [M_COUNT*4-1:0]
m_axi_arregion output wire [M_COUNT*4-1:0]
m_axi_aruser output wire [M_COUNT*ARUSER_WIDTH-1:0]
m_axi_arvalid output wire [M_COUNT-1:0]
m_axi_arready input wire [M_COUNT-1:0]
m_axi_rid input wire [M_COUNT*ID_WIDTH-1:0]
m_axi_rdata input wire [M_COUNT*DATA_WIDTH-1:0]
m_axi_rresp input wire [M_COUNT*2-1:0]
m_axi_rlast input wire [M_COUNT-1:0]
m_axi_ruser input wire [M_COUNT*RUSER_WIDTH-1:0]
m_axi_rvalid input wire [M_COUNT-1:0]
m_axi_rready output wire [M_COUNT-1:0]

Signals

Name Type Description
i integer
j integer
state_reg reg [2:0]
state_next reg [2:0]
match reg
m_select_reg reg [CL_M_COUNT-1:0]
m_select_next reg [CL_M_COUNT-1:0]
axi_id_reg reg [ID_WIDTH-1:0]
axi_id_next reg [ID_WIDTH-1:0]
axi_addr_reg reg [ADDR_WIDTH-1:0]
axi_addr_next reg [ADDR_WIDTH-1:0]
axi_addr_valid_reg reg
axi_addr_valid_next reg
axi_len_reg reg [7:0]
axi_len_next reg [7:0]
axi_size_reg reg [2:0]
axi_size_next reg [2:0]
axi_burst_reg reg [1:0]
axi_burst_next reg [1:0]
axi_lock_reg reg
axi_lock_next reg
axi_cache_reg reg [3:0]
axi_cache_next reg [3:0]
axi_prot_reg reg [2:0]
axi_prot_next reg [2:0]
axi_qos_reg reg [3:0]
axi_qos_next reg [3:0]
axi_region_reg reg [3:0]
axi_region_next reg [3:0]
axi_auser_reg reg [AUSER_WIDTH-1:0]
axi_auser_next reg [AUSER_WIDTH-1:0]
axi_bresp_reg reg [1:0]
axi_bresp_next reg [1:0]
axi_buser_reg reg [BUSER_WIDTH-1:0]
axi_buser_next reg [BUSER_WIDTH-1:0]
s_axi_awready_reg reg [S_COUNT-1:0]
s_axi_awready_next reg [S_COUNT-1:0]
s_axi_wready_reg reg [S_COUNT-1:0]
s_axi_wready_next reg [S_COUNT-1:0]
s_axi_bvalid_reg reg [S_COUNT-1:0]
s_axi_bvalid_next reg [S_COUNT-1:0]
s_axi_arready_reg reg [S_COUNT-1:0]
s_axi_arready_next reg [S_COUNT-1:0]
m_axi_awvalid_reg reg [M_COUNT-1:0]
m_axi_awvalid_next reg [M_COUNT-1:0]
m_axi_bready_reg reg [M_COUNT-1:0]
m_axi_bready_next reg [M_COUNT-1:0]
m_axi_arvalid_reg reg [M_COUNT-1:0]
m_axi_arvalid_next reg [M_COUNT-1:0]
m_axi_rready_reg reg [M_COUNT-1:0]
m_axi_rready_next reg [M_COUNT-1:0]
s_axi_rid_int reg [ID_WIDTH-1:0] internal datapath
s_axi_rdata_int reg [DATA_WIDTH-1:0]
s_axi_rresp_int reg [1:0]
s_axi_rlast_int reg
s_axi_ruser_int reg [RUSER_WIDTH-1:0]
s_axi_rvalid_int reg
s_axi_rready_int_reg reg
s_axi_rready_int_early wire
m_axi_wdata_int reg [DATA_WIDTH-1:0]
m_axi_wstrb_int reg [STRB_WIDTH-1:0]
m_axi_wlast_int reg
m_axi_wuser_int reg [WUSER_WIDTH-1:0]
m_axi_wvalid_int reg
m_axi_wready_int_reg reg
m_axi_wready_int_early wire
s_select wire [(CL_S_COUNT > 0 ? CL_S_COUNT-1 : 0):0] slave side mux
current_s_axi_awid wire [ID_WIDTH-1:0]
current_s_axi_awaddr wire [ADDR_WIDTH-1:0]
current_s_axi_awlen wire [7:0]
current_s_axi_awsize wire [2:0]
current_s_axi_awburst wire [1:0]
current_s_axi_awlock wire
current_s_axi_awcache wire [3:0]
current_s_axi_awprot wire [2:0]
current_s_axi_awqos wire [3:0]
current_s_axi_awuser wire [AWUSER_WIDTH-1:0]
current_s_axi_awvalid wire
current_s_axi_awready wire
current_s_axi_wdata wire [DATA_WIDTH-1:0]
current_s_axi_wstrb wire [STRB_WIDTH-1:0]
current_s_axi_wlast wire
current_s_axi_wuser wire [WUSER_WIDTH-1:0]
current_s_axi_wvalid wire
current_s_axi_wready wire
current_s_axi_bid wire [ID_WIDTH-1:0]
current_s_axi_bresp wire [1:0]
current_s_axi_buser wire [BUSER_WIDTH-1:0]
current_s_axi_bvalid wire
current_s_axi_bready wire
current_s_axi_arid wire [ID_WIDTH-1:0]
current_s_axi_araddr wire [ADDR_WIDTH-1:0]
current_s_axi_arlen wire [7:0]
current_s_axi_arsize wire [2:0]
current_s_axi_arburst wire [1:0]
current_s_axi_arlock wire
current_s_axi_arcache wire [3:0]
current_s_axi_arprot wire [2:0]
current_s_axi_arqos wire [3:0]
current_s_axi_aruser wire [ARUSER_WIDTH-1:0]
current_s_axi_arvalid wire
current_s_axi_arready wire
current_s_axi_rid wire [ID_WIDTH-1:0]
current_s_axi_rdata wire [DATA_WIDTH-1:0]
current_s_axi_rresp wire [1:0]
current_s_axi_rlast wire
current_s_axi_ruser wire [RUSER_WIDTH-1:0]
current_s_axi_rvalid wire
current_s_axi_rready wire
current_m_axi_awid wire [ID_WIDTH-1:0] master side mux
current_m_axi_awaddr wire [ADDR_WIDTH-1:0]
current_m_axi_awlen wire [7:0]
current_m_axi_awsize wire [2:0]
current_m_axi_awburst wire [1:0]
current_m_axi_awlock wire
current_m_axi_awcache wire [3:0]
current_m_axi_awprot wire [2:0]
current_m_axi_awqos wire [3:0]
current_m_axi_awregion wire [3:0]
current_m_axi_awuser wire [AWUSER_WIDTH-1:0]
current_m_axi_awvalid wire
current_m_axi_awready wire
current_m_axi_wdata wire [DATA_WIDTH-1:0]
current_m_axi_wstrb wire [STRB_WIDTH-1:0]
current_m_axi_wlast wire
current_m_axi_wuser wire [WUSER_WIDTH-1:0]
current_m_axi_wvalid wire
current_m_axi_wready wire
current_m_axi_bid wire [ID_WIDTH-1:0]
current_m_axi_bresp wire [1:0]
current_m_axi_buser wire [BUSER_WIDTH-1:0]
current_m_axi_bvalid wire
current_m_axi_bready wire
current_m_axi_arid wire [ID_WIDTH-1:0]
current_m_axi_araddr wire [ADDR_WIDTH-1:0]
current_m_axi_arlen wire [7:0]
current_m_axi_arsize wire [2:0]
current_m_axi_arburst wire [1:0]
current_m_axi_arlock wire
current_m_axi_arcache wire [3:0]
current_m_axi_arprot wire [2:0]
current_m_axi_arqos wire [3:0]
current_m_axi_arregion wire [3:0]
current_m_axi_aruser wire [ARUSER_WIDTH-1:0]
current_m_axi_arvalid wire
current_m_axi_arready wire
current_m_axi_rid wire [ID_WIDTH-1:0]
current_m_axi_rdata wire [DATA_WIDTH-1:0]
current_m_axi_rresp wire [1:0]
current_m_axi_rlast wire
current_m_axi_ruser wire [RUSER_WIDTH-1:0]
current_m_axi_rvalid wire
current_m_axi_rready wire
request wire [S_COUNT*2-1:0] arbiter instance
acknowledge wire [S_COUNT*2-1:0]
grant wire [S_COUNT*2-1:0]
grant_valid wire
grant_encoded wire [CL_S_COUNT:0]
read wire
s_axi_rid_reg reg [ID_WIDTH-1:0] output datapath logic (R channel)
s_axi_rdata_reg reg [DATA_WIDTH-1:0]
s_axi_rresp_reg reg [1:0]
s_axi_rlast_reg reg
s_axi_ruser_reg reg [RUSER_WIDTH-1:0]
s_axi_rvalid_reg reg [S_COUNT-1:0]
s_axi_rvalid_next reg [S_COUNT-1:0]
temp_s_axi_rid_reg reg [ID_WIDTH-1:0]
temp_s_axi_rdata_reg reg [DATA_WIDTH-1:0]
temp_s_axi_rresp_reg reg [1:0]
temp_s_axi_rlast_reg reg
temp_s_axi_ruser_reg reg [RUSER_WIDTH-1:0]
temp_s_axi_rvalid_reg reg
temp_s_axi_rvalid_next reg
store_axi_r_int_to_output reg datapath control
store_axi_r_int_to_temp reg
store_axi_r_temp_to_output reg
m_axi_wdata_reg reg [DATA_WIDTH-1:0] output datapath logic (W channel)
m_axi_wstrb_reg reg [STRB_WIDTH-1:0]
m_axi_wlast_reg reg
m_axi_wuser_reg reg [WUSER_WIDTH-1:0]
m_axi_wvalid_reg reg [M_COUNT-1:0]
m_axi_wvalid_next reg [M_COUNT-1:0]
temp_m_axi_wdata_reg reg [DATA_WIDTH-1:0]
temp_m_axi_wstrb_reg reg [STRB_WIDTH-1:0]
temp_m_axi_wlast_reg reg
temp_m_axi_wuser_reg reg [WUSER_WIDTH-1:0]
temp_m_axi_wvalid_reg reg
temp_m_axi_wvalid_next reg
store_axi_w_int_to_output reg datapath control
store_axi_w_int_to_temp reg
store_axi_w_temp_to_output reg

Constants

Name Type Value Description
STATE_IDLE [2:0] 3'd0
STATE_DECODE [2:0] 3'd1
STATE_WRITE [2:0] 3'd2
STATE_WRITE_RESP [2:0] 3'd3
STATE_WRITE_DROP [2:0] 3'd4
STATE_READ [2:0] 3'd5
STATE_READ_DROP [2:0] 3'd6
STATE_WAIT_IDLE [2:0] 3'd7

Functions

Description
default address computation

Processes

Type: always

Type: always

Type: always

Type: always

Type: always

Type: always

Instantiations