mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-09 17:08:38 -08:00
axi: Add SV interface for AXI lite
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
175
rtl/axi/taxi_axil_if.sv
Normal file
175
rtl/axi/taxi_axil_if.sv
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2025 FPGA Ninja, LLC
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
- Alex Forencich
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface taxi_axil_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),
|
||||||
|
// 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 [ADDR_W-1:0] awaddr;
|
||||||
|
logic [2:0] awprot;
|
||||||
|
logic [AWUSER_W-1:0] awuser;
|
||||||
|
logic awvalid;
|
||||||
|
logic awready;
|
||||||
|
// W
|
||||||
|
logic [DATA_W-1:0] wdata;
|
||||||
|
logic [STRB_W-1:0] wstrb;
|
||||||
|
logic [WUSER_W-1:0] wuser;
|
||||||
|
logic wvalid;
|
||||||
|
logic wready;
|
||||||
|
// B
|
||||||
|
logic [1:0] bresp;
|
||||||
|
logic [BUSER_W-1:0] buser;
|
||||||
|
logic bvalid;
|
||||||
|
logic bready;
|
||||||
|
// AR
|
||||||
|
logic [ADDR_W-1:0] araddr;
|
||||||
|
logic [2:0] arprot;
|
||||||
|
logic [ARUSER_W-1:0] aruser;
|
||||||
|
logic arvalid;
|
||||||
|
logic arready;
|
||||||
|
// R
|
||||||
|
logic [DATA_W-1:0] rdata;
|
||||||
|
logic [1:0] rresp;
|
||||||
|
logic [RUSER_W-1:0] ruser;
|
||||||
|
logic rvalid;
|
||||||
|
logic rready;
|
||||||
|
|
||||||
|
modport wr_mst (
|
||||||
|
// AW
|
||||||
|
output awaddr,
|
||||||
|
output awprot,
|
||||||
|
output awuser,
|
||||||
|
output awvalid,
|
||||||
|
input awready,
|
||||||
|
// W
|
||||||
|
output wdata,
|
||||||
|
output wstrb,
|
||||||
|
output wuser,
|
||||||
|
output wvalid,
|
||||||
|
input wready,
|
||||||
|
// B
|
||||||
|
input bresp,
|
||||||
|
input buser,
|
||||||
|
input bvalid,
|
||||||
|
output bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_mst (
|
||||||
|
// AR
|
||||||
|
output araddr,
|
||||||
|
output arprot,
|
||||||
|
output aruser,
|
||||||
|
output arvalid,
|
||||||
|
input arready,
|
||||||
|
// R
|
||||||
|
input rdata,
|
||||||
|
input rresp,
|
||||||
|
input ruser,
|
||||||
|
input rvalid,
|
||||||
|
output rready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport wr_slv (
|
||||||
|
// AW
|
||||||
|
input awaddr,
|
||||||
|
input awprot,
|
||||||
|
input awuser,
|
||||||
|
input awvalid,
|
||||||
|
output awready,
|
||||||
|
// W
|
||||||
|
input wdata,
|
||||||
|
input wstrb,
|
||||||
|
input wuser,
|
||||||
|
input wvalid,
|
||||||
|
output wready,
|
||||||
|
// B
|
||||||
|
output bresp,
|
||||||
|
output buser,
|
||||||
|
output bvalid,
|
||||||
|
input bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_slv (
|
||||||
|
// AR
|
||||||
|
input araddr,
|
||||||
|
input arprot,
|
||||||
|
input aruser,
|
||||||
|
input arvalid,
|
||||||
|
output arready,
|
||||||
|
// R
|
||||||
|
output rdata,
|
||||||
|
output rresp,
|
||||||
|
output ruser,
|
||||||
|
output rvalid,
|
||||||
|
input rready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport wr_mon (
|
||||||
|
// AW
|
||||||
|
input awaddr,
|
||||||
|
input awprot,
|
||||||
|
input awuser,
|
||||||
|
input awvalid,
|
||||||
|
input awready,
|
||||||
|
// W
|
||||||
|
input wdata,
|
||||||
|
input wstrb,
|
||||||
|
input wuser,
|
||||||
|
input wvalid,
|
||||||
|
input wready,
|
||||||
|
// B
|
||||||
|
input bresp,
|
||||||
|
input buser,
|
||||||
|
input bvalid,
|
||||||
|
input bready
|
||||||
|
);
|
||||||
|
|
||||||
|
modport rd_mon (
|
||||||
|
// AR
|
||||||
|
input araddr,
|
||||||
|
input arprot,
|
||||||
|
input aruser,
|
||||||
|
input arvalid,
|
||||||
|
input arready,
|
||||||
|
// R
|
||||||
|
input rdata,
|
||||||
|
input rresp,
|
||||||
|
input ruser,
|
||||||
|
input rvalid,
|
||||||
|
input rready
|
||||||
|
);
|
||||||
|
|
||||||
|
endinterface
|
||||||
Reference in New Issue
Block a user