blob: 8bbaac0b9c95dd225d432c9f4be4975d0297a526 [file]
//****************************************************************************
//
// Copyright 2017-2023 Vivante Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//****************************************************************************
// Auto-generated file on 11/03/2023.
//
//****************************************************************************
module axi_upsizer(
awid_m, awaddr_m, awlen_m, awsize_m, awburst_m, awlock_m,
awcache_m, awprot_m, awvalid_m, awuser_m, awregion_m, wdata_m,
wstrb_m, wlast_m, wvalid_m, wid_m, wuser_m, bready_m, arid_m,
araddr_m, arlen_m, arsize_m, arburst_m, arlock_m, arcache_m,
arprot_m, arvalid_m, aruser_m, arregion_m, rready_m, awqos_m,
arqos_m, awready_s, wready_s, bid_s, bresp_s, bvalid_s, buser_s,
arready_s, rid_s, rdata_s, rresp_s, rlast_s, rvalid_s, ruser_s,
aclk, aresetn, awready_m, wready_m, bid_m, bresp_m, bvalid_m,
buser_m, arready_m, rid_m, rdata_m, rresp_m, rlast_m, rvalid_m,
ruser_m, awid_s, awaddr_s, awlen_s, awsize_s, awburst_s, awlock_s,
awcache_s, awprot_s, awvalid_s, awuser_s, awregion_s, wdata_s,
wstrb_s, wlast_s, wvalid_s, wid_s, wuser_s, bready_s, arid_s,
araddr_s, arlen_s, arsize_s, arburst_s, arlock_s, arcache_s,
arprot_s, arvalid_s, aruser_s, arregion_s, rready_s, awqos_s,
arqos_s
);
parameter ARID_WIDTH=16;
parameter AWID_WIDTH=16;
parameter ADDR_WIDTH=61;
parameter US_DATA_WIDTH=64;
parameter DS_DATA_WIDTH=256;
parameter USER_WIDTH=16;
parameter IS_AXI3=1'h1;
parameter RD_ISS=128;
parameter WR_ISS=128;
parameter DS_WSTRB_WIDTH=DS_DATA_WIDTH/8;
parameter US_WSTRB_WIDTH=US_DATA_WIDTH/8;
localparam AXLEN_WIDTH=(IS_AXI3==1'h1) ? 4 : 8;
localparam DS_AXI3=IS_AXI3;
localparam DS_ADDR_AL_WIDTH=$clog2(DS_WSTRB_WIDTH);
localparam US_ADDR_AL_WIDTH=$clog2(US_WSTRB_WIDTH);
localparam ARFMT_WIDTH=1+1+ARID_WIDTH+DS_ADDR_AL_WIDTH*3+1+3;
localparam AWFMT_WIDTH=AWID_WIDTH+1+4+1+DS_ADDR_AL_WIDTH*2+3+1;
localparam US_AW_WIDTH=4+USER_WIDTH+AWID_WIDTH+ADDR_WIDTH+8+3+2+2+4+4+3+1;
localparam US_AR_WIDTH=4+USER_WIDTH+ARID_WIDTH+ADDR_WIDTH+8+3+2+2+4+4+3+1;
localparam US_R_WIDTH=USER_WIDTH+ARID_WIDTH+US_DATA_WIDTH+2+1;
localparam US_W_WIDTH=USER_WIDTH+AWID_WIDTH+US_DATA_WIDTH+US_WSTRB_WIDTH+1;
localparam US_B_WIDTH=USER_WIDTH+AWID_WIDTH+2;
localparam AW_IDB_WIDTH=US_AW_WIDTH;
localparam AR_IDB_WIDTH=US_AR_WIDTH;
localparam W_IDB_WIDTH=AWID_WIDTH+USER_WIDTH+DS_DATA_WIDTH+DS_WSTRB_WIDTH+1;
localparam R_IDB_WIDTH=USER_WIDTH+ARID_WIDTH+DS_DATA_WIDTH+2+1;
localparam B_IDB_WIDTH=USER_WIDTH+2+AWID_WIDTH;
input aclk;
input aresetn;
output [AWID_WIDTH-1:0] awid_m;
output [ADDR_WIDTH-1:0] awaddr_m;
output [AXLEN_WIDTH-1:0] awlen_m;
output [2:0] awsize_m;
output [1:0] awburst_m;
output [1:0] awlock_m;
output [3:0] awcache_m;
output [2:0] awprot_m;
output awvalid_m;
input awready_m;
output [USER_WIDTH-1:0] awuser_m;
output [3:0] awregion_m;
output [DS_DATA_WIDTH-1:0] wdata_m;
output [DS_WSTRB_WIDTH-1:0] wstrb_m;
output wlast_m;
output wvalid_m;
input wready_m;
output [AWID_WIDTH-1:0] wid_m;
output [USER_WIDTH-1:0] wuser_m;
input [AWID_WIDTH-1:0] bid_m;
input [1:0] bresp_m;
input bvalid_m;
output bready_m;
input [USER_WIDTH-1:0] buser_m;
output [ARID_WIDTH-1:0] arid_m;
output [ADDR_WIDTH-1:0] araddr_m;
output [AXLEN_WIDTH-1:0] arlen_m;
output [2:0] arsize_m;
output [1:0] arburst_m;
output [1:0] arlock_m;
output [3:0] arcache_m;
output [2:0] arprot_m;
output arvalid_m;
input arready_m;
output [USER_WIDTH-1:0] aruser_m;
output [3:0] arregion_m;
input [ARID_WIDTH-1:0] rid_m;
input [DS_DATA_WIDTH-1:0] rdata_m;
input [1:0] rresp_m;
input rlast_m;
input rvalid_m;
output rready_m;
input [USER_WIDTH-1:0] ruser_m;
output [3:0] awqos_m;
output [3:0] arqos_m;
input [AWID_WIDTH-1:0] awid_s;
input [ADDR_WIDTH-1:0] awaddr_s;
input [AXLEN_WIDTH-1:0] awlen_s;
input [2:0] awsize_s;
input [1:0] awburst_s;
input [1:0] awlock_s;
input [3:0] awcache_s;
input [2:0] awprot_s;
input awvalid_s;
output awready_s;
input [USER_WIDTH-1:0] awuser_s;
input [3:0] awregion_s;
input [US_DATA_WIDTH-1:0] wdata_s;
input [US_WSTRB_WIDTH-1:0] wstrb_s;
input wlast_s;
input wvalid_s;
output wready_s;
input [AWID_WIDTH-1:0] wid_s;
input [USER_WIDTH-1:0] wuser_s;
output [AWID_WIDTH-1:0] bid_s;
output [1:0] bresp_s;
output bvalid_s;
input bready_s;
output [USER_WIDTH-1:0] buser_s;
input [ARID_WIDTH-1:0] arid_s;
input [ADDR_WIDTH-1:0] araddr_s;
input [AXLEN_WIDTH-1:0] arlen_s;
input [2:0] arsize_s;
input [1:0] arburst_s;
input [1:0] arlock_s;
input [3:0] arcache_s;
input [2:0] arprot_s;
input arvalid_s;
output arready_s;
input [USER_WIDTH-1:0] aruser_s;
input [3:0] arregion_s;
output [ARID_WIDTH-1:0] rid_s;
output [US_DATA_WIDTH-1:0] rdata_s;
output [1:0] rresp_s;
output rlast_s;
output rvalid_s;
input rready_s;
output [USER_WIDTH-1:0] ruser_s;
input [3:0] awqos_s;
input [3:0] arqos_s;
wire [AR_IDB_WIDTH-1:0] ar_data;
wire ar_ready;
wire ar_valid;
wire [AW_IDB_WIDTH-1:0] aw_data;
wire aw_ready;
wire aw_valid;
wire [B_IDB_WIDTH-1:0] b_data;
wire b_ready;
wire b_valid;
wire [R_IDB_WIDTH-1:0] r_data;
wire r_ready;
wire r_valid;
wire [W_IDB_WIDTH-1:0] w_data;
wire w_ready;
wire w_valid;
wire [7:0] arlen_s_ext;
wire [7:0] awlen_s_ext;
wire [7:0] arlen_m_ext;
wire [7:0] awlen_m_ext;
generate
if(AXLEN_WIDTH==8) begin
assign arlen_s_ext=arlen_s;
assign awlen_s_ext=awlen_s;
assign arlen_m=arlen_m_ext;
assign awlen_m=awlen_m_ext;
end
else begin
assign arlen_s_ext={4'h0,arlen_s};
assign awlen_s_ext={4'h0,awlen_s};
assign arlen_m=arlen_m_ext[3:0];
assign awlen_m=awlen_m_ext[3:0];
end
endgenerate
upsize_slave_domain #(
.ARID_WIDTH (ARID_WIDTH),
.AWID_WIDTH (AWID_WIDTH),
.ADDR_WIDTH (ADDR_WIDTH),
.US_DATA_WIDTH (US_DATA_WIDTH),
.DS_DATA_WIDTH (DS_DATA_WIDTH),
.USER_WIDTH (USER_WIDTH),
.RD_ISS (RD_ISS),
.WR_ISS (WR_ISS),
.DS_AXI3 (DS_AXI3))
u_slave_domain(
.arqv_s (arqos_s),
.awqv_s (awqos_s),
.awlen_s (awlen_s_ext),
.arlen_s (arlen_s_ext),
.awvalid_vect_s(1'h0),
.arvalid_vect_s(1'h0),
.awready_s (awready_s),
.wready_s (wready_s),
.bid_s (bid_s[AWID_WIDTH-1:0]),
.bresp_s (bresp_s[1:0]),
.bvalid_s (bvalid_s),
.buser_s (buser_s[USER_WIDTH-1:0]),
.arready_s (arready_s),
.rid_s (rid_s[ARID_WIDTH-1:0]),
.rdata_s (rdata_s[US_DATA_WIDTH-1:0]),
.rresp_s (rresp_s[1:0]),
.rlast_s (rlast_s),
.rvalid_s (rvalid_s),
.ruser_s (ruser_s[USER_WIDTH-1:0]),
.aw_data (aw_data[AW_IDB_WIDTH-1:0]),
.aw_valid (aw_valid),
.b_ready (b_ready),
.ar_data (ar_data[AR_IDB_WIDTH-1:0]),
.ar_valid (ar_valid),
.r_ready (r_ready),
.w_data (w_data[W_IDB_WIDTH-1:0]),
.w_valid (w_valid),
.awid_s (awid_s[AWID_WIDTH-1:0]),
.awaddr_s (awaddr_s[ADDR_WIDTH-1:0]),
.awsize_s (awsize_s[2:0]),
.awburst_s (awburst_s[1:0]),
.awlock_s (awlock_s[1:0]),
.awcache_s (awcache_s[3:0]),
.awprot_s (awprot_s[2:0]),
.awvalid_s (awvalid_s),
.awuser_s (awuser_s[USER_WIDTH-1:0]),
.awregion_s (awregion_s[3:0]),
.wdata_s (wdata_s[US_DATA_WIDTH-1:0]),
.wstrb_s (wstrb_s[US_WSTRB_WIDTH-1:0]),
.wlast_s (wlast_s),
.wvalid_s (wvalid_s),
.wid_s (wid_s[AWID_WIDTH-1:0]),
.wuser_s (wuser_s[USER_WIDTH-1:0]),
.bready_s (bready_s),
.arid_s (arid_s[ARID_WIDTH-1:0]),
.araddr_s (araddr_s[ADDR_WIDTH-1:0]),
.arsize_s (arsize_s[2:0]),
.arburst_s (arburst_s[1:0]),
.arlock_s (arlock_s[1:0]),
.arcache_s (arcache_s[3:0]),
.arprot_s (arprot_s[2:0]),
.arvalid_s (arvalid_s),
.aruser_s (aruser_s[USER_WIDTH-1:0]),
.arregion_s (arregion_s[3:0]),
.rready_s (rready_s),
.aw_ready (aw_ready),
.b_data (b_data[B_IDB_WIDTH-1:0]),
.b_valid (b_valid),
.ar_ready (ar_ready),
.r_data (r_data[R_IDB_WIDTH-1:0]),
.r_valid (r_valid),
.w_ready (w_ready),
.aclk (aclk),
.aresetn (aresetn));
upsize_master_domain #(
.ARID_WIDTH (ARID_WIDTH),
.AWID_WIDTH (AWID_WIDTH),
.ADDR_WIDTH (ADDR_WIDTH),
.US_DATA_WIDTH (US_DATA_WIDTH),
.DS_DATA_WIDTH (DS_DATA_WIDTH),
.USER_WIDTH (USER_WIDTH),
.RD_ISS (RD_ISS),
.WR_ISS (WR_ISS)) u_master_domain(
.awqv_m (awqos_m),
.arqv_m (arqos_m),
.arlen_m (arlen_m_ext),
.awlen_m (awlen_m_ext),
.awvalid_vect_m (),
.arvalid_vect_m (),
.awid_m (awid_m[AWID_WIDTH-1:0]),
.awaddr_m (awaddr_m[ADDR_WIDTH-1:0]),
.awsize_m (awsize_m[2:0]),
.awburst_m (awburst_m[1:0]),
.awlock_m (awlock_m[1:0]),
.awcache_m (awcache_m[3:0]),
.awprot_m (awprot_m[2:0]),
.awvalid_m (awvalid_m),
.awuser_m (awuser_m[USER_WIDTH-1:0]),
.awregion_m (awregion_m[3:0]),
.wdata_m (wdata_m[DS_DATA_WIDTH-1:0]),
.wstrb_m (wstrb_m[DS_WSTRB_WIDTH-1:0]),
.wlast_m (wlast_m),
.wvalid_m (wvalid_m),
.wid_m (wid_m[AWID_WIDTH-1:0]),
.wuser_m (wuser_m[USER_WIDTH-1:0]),
.bready_m (bready_m),
.arid_m (arid_m[ARID_WIDTH-1:0]),
.araddr_m (araddr_m[ADDR_WIDTH-1:0]),
.arsize_m (arsize_m[2:0]),
.arburst_m (arburst_m[1:0]),
.arlock_m (arlock_m[1:0]),
.arcache_m (arcache_m[3:0]),
.arprot_m (arprot_m[2:0]),
.arvalid_m (arvalid_m),
.aruser_m (aruser_m[USER_WIDTH-1:0]),
.arregion_m (arregion_m[3:0]),
.rready_m (rready_m),
.aw_ready (aw_ready),
.b_data (b_data[B_IDB_WIDTH-1:0]),
.b_valid (b_valid),
.ar_ready (ar_ready),
.r_data (r_data[R_IDB_WIDTH-1:0]),
.r_valid (r_valid),
.w_ready (w_ready),
.awready_m (awready_m),
.wready_m (wready_m),
.bid_m (bid_m[AWID_WIDTH-1:0]),
.bresp_m (bresp_m[1:0]),
.bvalid_m (bvalid_m),
.buser_m (buser_m[USER_WIDTH-1:0]),
.arready_m (arready_m),
.rid_m (rid_m[ARID_WIDTH-1:0]),
.rdata_m (rdata_m[DS_DATA_WIDTH-1:0]),
.rresp_m (rresp_m[1:0]),
.rlast_m (rlast_m),
.rvalid_m (rvalid_m),
.ruser_m (ruser_m[USER_WIDTH-1:0]),
.aw_data (aw_data[AW_IDB_WIDTH-1:0]),
.aw_valid (aw_valid),
.b_ready (b_ready),
.ar_data (ar_data[AR_IDB_WIDTH-1:0]),
.ar_valid (ar_valid),
.r_ready (r_ready),
.w_data (w_data[W_IDB_WIDTH-1:0]),
.w_valid (w_valid),
.aclk (aclk),
.aresetn (aresetn));
endmodule