mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-09 17:08:38 -08:00
axi: Add SV interface for AXI
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
257
rtl/axi/taxi_axi_if.sv
Normal file
257
rtl/axi/taxi_axi_if.sv
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2025 FPGA Ninja, LLC
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
- Alex Forencich
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface taxi_axi_if #(
|
||||||
|
// Width of data bus in bits
|
||||||
|
parameter DATA_W = 32,
|
||||||
|
// Width of address bus in bits
|
||||||
|
parameter ADDR_W = 32,
|
||||||
|
// Width of wstrb (width of data bus in words)
|
||||||
|
parameter STRB_W = (DATA_W/8),
|
||||||
|
// Width of ID signal
|
||||||
|
parameter ID_W = 8,
|
||||||
|
// Use awuser signal
|
||||||
|
parameter logic AWUSER_EN = 1'b0,
|
||||||
|
// Width of awuser signal
|
||||||
|
parameter AWUSER_W = 1,
|
||||||
|
// Use wuser signal
|
||||||
|
parameter logic WUSER_EN = 1'b0,
|
||||||
|
// Width of wuser signal
|
||||||
|
parameter WUSER_W = 1,
|
||||||
|
// Use buser signal
|
||||||
|
parameter logic BUSER_EN = 1'b0,
|
||||||
|
// Width of buser signal
|
||||||
|
parameter BUSER_W = 1,
|
||||||
|
// Use aruser signal
|
||||||
|
parameter logic ARUSER_EN = 1'b0,
|
||||||
|
// Width of aruser signal
|
||||||
|
parameter ARUSER_W = 1,
|
||||||
|
// Use ruser signal
|
||||||
|
parameter logic RUSER_EN = 1'b0,
|
||||||
|
// Width of ruser signal
|
||||||
|
parameter RUSER_W = 1
|
||||||
|
)
|
||||||
|
();
|
||||||
|
// AW
|
||||||
|
logic [ID_W-1:0] awid;
|
||||||
|
logic [ADDR_W-1:0] awaddr;
|
||||||
|
logic [7:0] awlen;
|
||||||
|
logic [2:0] awsize;
|
||||||
|
logic [1:0] awburst;
|
||||||
|
logic awlock;
|
||||||
|
logic [3:0] awcache;
|
||||||
|
logic [2:0] awprot;
|
||||||
|
logic [3:0] awqos;
|
||||||
|
logic [3:0] awregion;
|
||||||
|
logic [AWUSER_W-1:0] awuser;
|
||||||
|
logic awvalid;
|
||||||
|
logic awready;
|
||||||
|
// W
|
||||||
|
logic [DATA_W-1:0] wdata;
|
||||||
|
logic [STRB_W-1:0] wstrb;
|
||||||
|
logic wlast;
|
||||||
|
logic [WUSER_W-1:0] wuser;
|
||||||
|
logic wvalid;
|
||||||
|
logic wready;
|
||||||
|
// B
|
||||||
|
logic [ID_W-1:0] bid;
|
||||||
|
logic [1:0] bresp;
|
||||||
|
logic [BUSER_W-1:0] buser;
|
||||||
|
logic bvalid;
|
||||||
|
logic bready;
|
||||||
|
// AR
|
||||||
|
logic [ID_W-1:0] arid;
|
||||||
|
logic [ADDR_W-1:0] araddr;
|
||||||
|
logic [7:0] arlen;
|
||||||
|
logic [2:0] arsize;
|
||||||
|
logic [1:0] arburst;
|
||||||
|
logic arlock;
|
||||||
|
logic [3:0] arcache;
|
||||||
|
logic [2:0] arprot;
|
||||||
|
logic [3:0] arqos;
|
||||||
|
logic [3:0] arregion;
|
||||||
|
logic [ARUSER_W-1:0] aruser;
|
||||||
|
logic arvalid;
|
||||||
|
logic arready;
|
||||||
|
// R
|
||||||
|
logic [ID_W-1:0] rid;
|
||||||
|
logic [DATA_W-1:0] rdata;
|
||||||
|
logic [1:0] rresp;
|
||||||
|
logic rlast;
|
||||||
|
logic [RUSER_W-1:0] ruser;
|
||||||
|
logic rvalid;
|
||||||
|
logic rready;
|
||||||
|
|
||||||
|
modport wr_mst (
|
||||||
|
// AW
|
||||||
|
output awid,
|
||||||
|
output awaddr,
|
||||||
|
output awlen,
|
||||||
|
output awsize,
|
||||||
|
output awburst,
|
||||||
|
output awlock,
|
||||||
|
output awcache,
|
||||||
|
output awprot,
|
||||||
|
output awqos,
|
||||||
|
output awregion,
|
||||||
|
output awuser,
|
||||||
|
output awvalid,
|
||||||
|
input awready,
|
||||||
|
// W
|
||||||
|
output wdata,
|
||||||
|
output wstrb,
|
||||||
|
output wlast,
|
||||||
|
output wuser,
|
||||||
|
output wvalid,
|
||||||
|
input wready,
|
||||||
|
// B
|
||||||
|
input bid,
|
||||||
|
input bresp,
|
||||||
|
input buser,
|
||||||
|
input bvalid,
|
||||||
|
output bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_mst (
|
||||||
|
// AR
|
||||||
|
output arid,
|
||||||
|
output araddr,
|
||||||
|
output arlen,
|
||||||
|
output arsize,
|
||||||
|
output arburst,
|
||||||
|
output arlock,
|
||||||
|
output arcache,
|
||||||
|
output arprot,
|
||||||
|
output arqos,
|
||||||
|
output arregion,
|
||||||
|
output aruser,
|
||||||
|
output arvalid,
|
||||||
|
input arready,
|
||||||
|
// R
|
||||||
|
input rid,
|
||||||
|
input rdata,
|
||||||
|
input rresp,
|
||||||
|
input rlast,
|
||||||
|
input ruser,
|
||||||
|
input rvalid,
|
||||||
|
output rready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport wr_slv (
|
||||||
|
// AW
|
||||||
|
input awid,
|
||||||
|
input awaddr,
|
||||||
|
input awlen,
|
||||||
|
input awsize,
|
||||||
|
input awburst,
|
||||||
|
input awlock,
|
||||||
|
input awcache,
|
||||||
|
input awprot,
|
||||||
|
input awqos,
|
||||||
|
input awregion,
|
||||||
|
input awuser,
|
||||||
|
input awvalid,
|
||||||
|
output awready,
|
||||||
|
// W
|
||||||
|
input wdata,
|
||||||
|
input wstrb,
|
||||||
|
input wlast,
|
||||||
|
input wuser,
|
||||||
|
input wvalid,
|
||||||
|
output wready,
|
||||||
|
// B
|
||||||
|
output bid,
|
||||||
|
output bresp,
|
||||||
|
output buser,
|
||||||
|
output bvalid,
|
||||||
|
input bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_slv (
|
||||||
|
// AR
|
||||||
|
input arid,
|
||||||
|
input araddr,
|
||||||
|
input arlen,
|
||||||
|
input arsize,
|
||||||
|
input arburst,
|
||||||
|
input arlock,
|
||||||
|
input arcache,
|
||||||
|
input arprot,
|
||||||
|
input arqos,
|
||||||
|
input arregion,
|
||||||
|
input aruser,
|
||||||
|
input arvalid,
|
||||||
|
output arready,
|
||||||
|
// R
|
||||||
|
output rid,
|
||||||
|
output rdata,
|
||||||
|
output rresp,
|
||||||
|
output rlast,
|
||||||
|
output ruser,
|
||||||
|
output rvalid,
|
||||||
|
input rready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport wr_mon (
|
||||||
|
// AW
|
||||||
|
input awid,
|
||||||
|
input awaddr,
|
||||||
|
input awlen,
|
||||||
|
input awsize,
|
||||||
|
input awburst,
|
||||||
|
input awlock,
|
||||||
|
input awcache,
|
||||||
|
input awprot,
|
||||||
|
input awqos,
|
||||||
|
input awregion,
|
||||||
|
input awuser,
|
||||||
|
input awvalid,
|
||||||
|
input awready,
|
||||||
|
// W
|
||||||
|
input wdata,
|
||||||
|
input wstrb,
|
||||||
|
input wlast,
|
||||||
|
input wuser,
|
||||||
|
input wvalid,
|
||||||
|
input wready,
|
||||||
|
// B
|
||||||
|
input bid,
|
||||||
|
input bresp,
|
||||||
|
input buser,
|
||||||
|
input bvalid,
|
||||||
|
input bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_mon (
|
||||||
|
// AR
|
||||||
|
input arid,
|
||||||
|
input araddr,
|
||||||
|
input arlen,
|
||||||
|
input arsize,
|
||||||
|
input arburst,
|
||||||
|
input arlock,
|
||||||
|
input arcache,
|
||||||
|
input arprot,
|
||||||
|
input arqos,
|
||||||
|
input arregion,
|
||||||
|
input aruser,
|
||||||
|
input arvalid,
|
||||||
|
input arready,
|
||||||
|
// R
|
||||||
|
input rid,
|
||||||
|
input rdata,
|
||||||
|
input rresp,
|
||||||
|
input rlast,
|
||||||
|
input ruser,
|
||||||
|
input rvalid,
|
||||||
|
input rready
|
||||||
|
);
|
||||||
|
|
||||||
|
endinterface
|
||||||
Reference in New Issue
Block a user