blob: 216c01aaa6d352bd7af68cb18f309ea4db84242b [file] [log] [blame]
//****************************************************************************
//
// 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 axi2sramcrs #(
parameter ARID_WIDTH=4,
parameter AWID_WIDTH=4,
parameter ADDR_WIDTH=32,
parameter US_DATA_WIDTH=64,
parameter DS_DATA_WIDTH=256,
parameter USER_WIDTH=16,
parameter IS_AXI3=1'h1,
parameter AXLEN_WIDTH=(IS_AXI3==1'h1) ? 4 : 8,
parameter RD_ISS=128,
parameter WR_ISS=128,
parameter DS_WSTRB_WIDTH=DS_DATA_WIDTH/8,
parameter US_WSTRB_WIDTH=US_DATA_WIDTH/8)
(
input aclk,
input aresetn,
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 [3:0] awqos_s,
output sram_cvalid,
input sram_cready,
output sram_cwrite,
output [31:0] sram_caddr,
output [7:0] sram_cid,
output [255:0] sram_wdata,
output [31:0] sram_wmask
);
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;
//Interface between upsizer and axi2axilite
wire [AWID_WIDTH-1:0] awid_m;
wire [ADDR_WIDTH-1:0] awaddr_m;
wire [AXLEN_WIDTH-1:0] awlen_m;
wire [2:0] awsize_m;
wire [1:0] awburst_m;
wire [1:0] awlock_m;
wire [3:0] awcache_m;
wire [2:0] awprot_m;
wire awvalid_m;
wire awready_m;
wire [USER_WIDTH-1:0] awuser_m;
wire [3:0] awregion_m;
wire [DS_DATA_WIDTH-1:0] wdata_m;
wire [DS_WSTRB_WIDTH-1:0] wstrb_m;
wire wlast_m;
wire wvalid_m;
wire wready_m;
wire [AWID_WIDTH-1:0] wid_m;
wire [USER_WIDTH-1:0] wuser_m;
wire [AWID_WIDTH-1:0] bid_m;
wire [1:0] bresp_m;
wire bvalid_m;
wire bready_m;
wire [USER_WIDTH-1:0] buser_m;
wire [ARID_WIDTH-1:0] arid_m;
wire [ADDR_WIDTH-1:0] araddr_m;
wire [AXLEN_WIDTH-1:0] arlen_m;
wire [2:0] arsize_m;
wire [1:0] arburst_m;
wire [1:0] arlock_m;
wire [3:0] arcache_m;
wire [2:0] arprot_m;
wire arvalid_m;
wire arready_m;
wire [USER_WIDTH-1:0] aruser_m;
wire [3:0] arregion_m;
wire [ARID_WIDTH-1:0] rid_m;
wire [DS_DATA_WIDTH-1:0] rdata_m;
wire [1:0] rresp_m;
wire rlast_m;
wire rvalid_m;
wire rready_m;
wire [USER_WIDTH-1:0] ruser_m;
wire [3:0] awqos_m;
wire [3:0] arqos_m;
//Interface between axi2axilite and axilite2sram
wire awvalid_lite_m;
wire awready_lite_m;
wire [ADDR_WIDTH-1:0] awaddr_lite_m;
wire [2:0] awprot_lite_m;
wire [USER_WIDTH-1:0] awuser_lite_m;
wire wvalid_lite_m;
wire wready_lite_m;
wire [255:0] wdata_lite_m;
wire [31:0] wstrb_lite_m;
wire bvalid_lite_m;
wire bready_lite_m;
wire [1:0] bresp_lite_m;
axi_upsizer u_upsizer(/*AUTOINST*/
// Outputs
.awid_m (awid_m[AWID_WIDTH-1:0]),
.awaddr_m (awaddr_m[ADDR_WIDTH-1:0]),
.awlen_m (awlen_m[AXLEN_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]),
.arlen_m (arlen_m[AXLEN_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),
.awqos_m (awqos_m[3:0]),
.arqos_m (arqos_m[3:0]),
.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 (),
.rid_s (),
.rdata_s (),
.rresp_s (),
.rlast_s (),
.rvalid_s (),
.ruser_s (),
// Inputs
.aclk (aclk),
.aresetn (aresetn),
.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]),
.awid_s (awid_s[AWID_WIDTH-1:0]),
.awaddr_s (awaddr_s[ADDR_WIDTH-1:0]),
.awlen_s (awlen_s[AXLEN_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 (4'b0),
.araddr_s (32'b0),
.arlen_s (4'b0),
.arsize_s (3'b0),
.arburst_s (2'b0),
.arlock_s (2'b0),
.arcache_s (4'b0),
.arprot_s (3'b0),
.arvalid_s (1'b0),
.aruser_s (16'b0),
.arregion_s (4'b0),
.rready_s (1'b0),
.awqos_s (awqos_m[3:0]),
.arqos_s (4'b0));
axi2axilite u_axi2axilite(/*AUTOINST*/
// Outputs
.awready_s (awready_m),
.wready_s (wready_m),
.bid_s (bid_m[AWID_WIDTH-1:0]),
.bresp_s (bresp_m[1:0]),
.bvalid_s (bvalid_m),
.buser_s (buser_m[USER_WIDTH-1:0]),
.arready_s (arready_m),
.rid_s (rid_m[ARID_WIDTH-1:0]),
.rdata_s (rdata_m[31:0]),
.rresp_s (rresp_m[1:0]),
.rlast_s (rlast_m),
.rvalid_s (rvalid_m),
.ruser_s (ruser_m[USER_WIDTH-1:0]),
.awvalid_m (awvalid_lite_m),
.awaddr_m (awaddr_lite_m[ADDR_WIDTH-1:0]),
.awprot_m (awprot_lite_m[2:0]),
.awuser_m (awuser_lite_m[USER_WIDTH-1:0]),
.wvalid_m (wvalid_lite_m),
.wdata_m (wdata_lite_m[255:0]),
.wstrb_m (wstrb_lite_m[31:0]),
.bready_m (bready_lite_m),
.arvalid_m (),//Floating
.araddr_m (),//Floating
.arprot_m (),//Floating
.aruser_m (),//Floating
.rready_m (),//Floating
// Inputs
.aclk (aclk),
.aresetn (aresetn),
.awid_s (awid_m[AWID_WIDTH-1:0]),
.awaddr_s (awaddr_m[ADDR_WIDTH-1:0]),
.awlen_s ({4'b0,awlen_m[3:0]}),
.awsize_s (awsize_m[2:0]),
.awburst_s (awburst_m[1:0]),
.awlock_s (awlock_m[1:0]),
.awcache_s (awcache_m[3:0]),
.awprot_s (awprot_m[2:0]),
.awvalid_s (awvalid_m),
.awuser_s (awuser_m[USER_WIDTH-1:0]),
.awregion_s (awregion_m[3:0]),
.wid_s (wid_m[AWID_WIDTH-1:0]),
.wdata_s (wdata_m[255:0]),
.wstrb_s (wstrb_m[31:0]),
.wlast_s (wlast_m),
.wvalid_s (wvalid_m),
.wuser_s (wuser_m[USER_WIDTH-1:0]),
.bready_s (bready_m),
.arid_s (arid_m[ARID_WIDTH-1:0]),
.araddr_s (araddr_m[ADDR_WIDTH-1:0]),
.arlen_s ({4'b0,arlen_m[3:0]}),
.arsize_s (arsize_m[2:0]),
.arburst_s (arburst_m[1:0]),
.arlock_s (arlock_m[1:0]),
.arcache_s (arcache_m[3:0]),
.arprot_s (arprot_m[2:0]),
.arvalid_s (arvalid_m),
.aruser_s (aruser_m[USER_WIDTH-1:0]),
.arregion_s (arregion_m[3:0]),
.rready_s (rready_m),
.awqos_s (awqos_m[3:0]),
.arqos_s (arqos_m[3:0]),
.awready_m (awready_lite_m),
.wready_m (wready_lite_m),
.bvalid_m (bvalid_lite_m),
.bresp_m (bresp_lite_m[1:0]),
.arready_m (1'b0),//Tie
.rvalid_m (1'b0),//Tie
.rdata_m (32'b0),//Tie
.rresp_m (2'b0));//Tie
axilite2sram u_axilite2sram(/*AUTOINST*/
// Outputs
.awready_s (awready_lite_m),
.wready_s (wready_lite_m),
.bvalid_s (bvalid_lite_m),
.bresp_s (bresp_lite_m[1:0]),
.sram_cvalid (sram_cvalid),
.sram_cwrite (sram_cwrite),
.sram_caddr (sram_caddr[31:0]),
.sram_cid (sram_cid[7:0]),
.sram_wdata (sram_wdata[255:0]),
.sram_wmask (sram_wmask[31:0]),
// Inputs
.aclk (aclk),
.aresetn (aresetn),
.awvalid_s (awvalid_lite_m),
.awaddr_s (awaddr_lite_m[ADDR_WIDTH-1:0]),
.awprot_s (awprot_lite_m[2:0]),
.awuser_s (awuser_lite_m[USER_WIDTH-1:0]),
.wvalid_s (wvalid_lite_m),
.wdata_s (wdata_lite_m[255:0]),
.wstrb_s (wstrb_lite_m[31:0]),
.bready_s (bready_lite_m),
.sram_cready (sram_cready));
endmodule