Initial commit
* Bare skeleton implementation of everything * Testbench builds with Verilator * Test runs
This commit is contained in:
414
common/axi.intf.sv
Normal file
414
common/axi.intf.sv
Normal file
@@ -0,0 +1,414 @@
|
||||
// Generated AXI Interface
|
||||
// This file is automatically generated by scripts/gen_axi_intf.pl
|
||||
// Do not edit this file directly.
|
||||
//
|
||||
// Interface Name: AXI Signal List
|
||||
interface axi_intf #(
|
||||
parameter ADDR_WIDTH = 1,
|
||||
parameter ARSNOOP_WIDTH = 1,
|
||||
parameter AWCMO_WIDTH = 1,
|
||||
parameter AWSNOOP_WIDTH = 1,
|
||||
parameter BRESP_WIDTH = 1,
|
||||
parameter CEIL_DATA_WIDTH_DIV_128 = 1,
|
||||
parameter CEIL_DATA_WIDTH_DIV_128_TMS_4 = 1,
|
||||
parameter CEIL_DATA_WIDTH_DIV_64 = 1,
|
||||
parameter DATA_WIDTH = 1,
|
||||
parameter DATA_WIDTH_DIV_8 = 1,
|
||||
parameter ID_R_WIDTH = 1,
|
||||
parameter ID_W_WIDTH = 1,
|
||||
parameter LOOP_R_WIDTH = 1,
|
||||
parameter LOOP_W_WIDTH = 1,
|
||||
parameter MECID_WIDTH = 1,
|
||||
parameter MPAM_WIDTH = 1,
|
||||
parameter RCHUNKNUM_WIDTH = 1,
|
||||
parameter RCHUNKSTRB_WIDTH = 1,
|
||||
parameter RRESP_WIDTH = 1,
|
||||
parameter SECSID_WIDTH = 1,
|
||||
parameter SID_WIDTH = 1,
|
||||
parameter SSID_WIDTH = 1,
|
||||
parameter SUBSYSID_WIDTH = 1,
|
||||
parameter SUM_USER_DATA_WIDTH_USER_RESP_WIDTH = 1,
|
||||
parameter USER_DATA_WIDTH = 1,
|
||||
parameter USER_REQ_WIDTH = 1,
|
||||
parameter USER_RESP_WIDTH = 1
|
||||
)
|
||||
|
||||
(
|
||||
input ACLK,
|
||||
input ARESETn
|
||||
);
|
||||
|
||||
// A2.4.1 Clock and reset signals
|
||||
// External signal: ACLK; // External Global clock signal [External]
|
||||
// External signal: ARESETn; // External Global reset signal [External]
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
logic AWVALID; // Valid indicator [Manager]
|
||||
logic AWREADY; // Ready indicator [Subordinate]
|
||||
logic [ID_W_WIDTH-1:0] AWID; // Transaction identifier for the write channels [Manager]
|
||||
logic [ADDR_WIDTH-1:0] AWADDR; // Transaction address [Manager]
|
||||
logic [3:0] AWREGION; // Region identifier [Manager]
|
||||
logic [7:0] AWLEN; // Transaction length [Manager]
|
||||
logic [2:0] AWSIZE; // Transaction size [Manager]
|
||||
logic [1:0] AWBURST; // Burst attribute [Manager]
|
||||
logic AWLOCK; // Exclusive access indicator [Manager]
|
||||
logic [3:0] AWCACHE; // Memory attributes [Manager]
|
||||
logic [2:0] AWPROT; // Access attributes [Manager]
|
||||
logic AWNSE; // Non-secure extension bit for RME [Manager]
|
||||
logic [3:0] AWQOS; // QoS identifier [Manager]
|
||||
logic [USER_REQ_WIDTH-1:0] AWUSER; // User-defined extension to a request [Manager]
|
||||
logic [1:0] AWDOMAIN; // Shareability domain of a request [Manager]
|
||||
logic [AWSNOOP_WIDTH-1:0] AWSNOOP; // Write request opcode [Manager]
|
||||
logic [10:0] AWSTASHNID; // Stash Node ID [Manager]
|
||||
logic AWSTASHNIDEN; // Stash Node ID enable [Manager]
|
||||
logic [4:0] AWSTASHLPID; // Stash Logical Processor ID [Manager]
|
||||
logic AWSTASHLPIDEN; // Stash Logical Processor ID enable [Manager]
|
||||
logic AWTRACE; // Trace signal [Manager]
|
||||
logic [LOOP_W_WIDTH-1:0] AWLOOP; // Loopback signals on the write channels [Manager]
|
||||
logic AWMMUVALID; // MMU signal qualifier [Manager]
|
||||
logic [SECSID_WIDTH-1:0] AWMMUSECSID; // Secure Stream ID [Manager]
|
||||
logic [SID_WIDTH-1:0] AWMMUSID; // StreamID [Manager]
|
||||
logic AWMMUSSIDV; // SubstreamID valid [Manager]
|
||||
logic [SSID_WIDTH-1:0] AWMMUSSID; // SubstreamID [Manager]
|
||||
logic AWMMUATST; // Address translated indicator [Manager]
|
||||
logic [1:0] AWMMUFLOW; // SMMU flow type [Manager]
|
||||
logic [3:0] AWPBHA; // Page-based Hardware Attributes [Manager]
|
||||
logic [3:0] AWNSAID; // Non-secure Access ID [Manager]
|
||||
logic [SUBSYSID_WIDTH-1:0] AWSUBSYSID; // Subsystem ID [Manager]
|
||||
logic [5:0] AWATOP; // Atomic transaction opcode [Manager]
|
||||
logic [MPAM_WIDTH-1:0] AWMPAM; // MPAM information with a request [Manager]
|
||||
logic AWIDUNQ; // Unique ID indicator [Manager]
|
||||
logic [AWCMO_WIDTH-1:0] AWCMO; // CMO type [Manager]
|
||||
logic [1:0] AWTAGOP; // Memory Tag operation for write requests [Manager]
|
||||
logic [MECID_WIDTH-1:0] AWMECID; // Memory Encryption Context identifier [Manager]
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
logic WVALID; // Valid indicator [Manager]
|
||||
logic WREADY; // Ready indicator [Subordinate]
|
||||
logic [DATA_WIDTH-1:0] WDATA; // Write data [Manager]
|
||||
logic [DATA_WIDTH_DIV_8-1:0] WSTRB; // Write data strobes [Manager]
|
||||
logic [CEIL_DATA_WIDTH_DIV_128_TMS_4-1:0] WTAG; // Memory Tag [Manager]
|
||||
logic [CEIL_DATA_WIDTH_DIV_128-1:0] WTAGUPDATE; // Memory Tag update [Manager]
|
||||
logic WLAST; // Last write data [Manager]
|
||||
logic [USER_DATA_WIDTH-1:0] WUSER; // User-defined extension to write data [Manager]
|
||||
logic [CEIL_DATA_WIDTH_DIV_64-1:0] WPOISON; // Poison indicator [Manager]
|
||||
logic WTRACE; // Trace signal [Manager]
|
||||
|
||||
// A2.1.3 Write response channel
|
||||
logic BVALID; // Valid indicator [Subordinate]
|
||||
logic BREADY; // Ready indicator [Manager]
|
||||
logic [ID_W_WIDTH-1:0] BID; // Transaction identifier for the write channels [Subordinate]
|
||||
logic BIDUNQ; // Unique ID indicator [Subordinate]
|
||||
logic [BRESP_WIDTH-1:0] BRESP; // Write response code [Subordinate]
|
||||
logic BCOMP; // Completion response indicator [Subordinate]
|
||||
logic BPERSIST; // Persist response [Subordinate]
|
||||
logic [1:0] BTAGMATCH; // Memory Tag Match response [Subordinate]
|
||||
logic [USER_RESP_WIDTH-1:0] BUSER; // User-defined extension to a write response [Subordinate]
|
||||
logic BTRACE; // Trace signal [Subordinate]
|
||||
logic [LOOP_W_WIDTH-1:0] BLOOP; // Loopback signals on the write channels [Subordinate]
|
||||
logic [1:0] BBUSY; // Busy indicator [Subordinate]
|
||||
|
||||
// A2.2.1 Read request channel
|
||||
logic ARVALID; // Valid indicator [Manager]
|
||||
logic ARREADY; // Ready indicator [Subordinate]
|
||||
logic [ID_R_WIDTH-1:0] ARID; // Transaction identifier for the read channels [Manager]
|
||||
logic [ADDR_WIDTH-1:0] ARADDR; // Transaction address [Manager]
|
||||
logic [3:0] ARREGION; // Region identifier [Manager]
|
||||
logic [7:0] ARLEN; // Transaction length [Manager]
|
||||
logic [2:0] ARSIZE; // Transaction size [Manager]
|
||||
logic [1:0] ARBURST; // Burst attribute [Manager]
|
||||
logic ARLOCK; // Exclusive access indicator [Manager]
|
||||
logic [3:0] ARCACHE; // Memory attributes [Manager]
|
||||
logic [2:0] ARPROT; // Access attributes [Manager]
|
||||
logic ARNSE; // Non-secure extension bit for RME [Manager]
|
||||
logic [3:0] ARQOS; // QoS identifier [Manager]
|
||||
logic [USER_REQ_WIDTH-1:0] ARUSER; // User-defined extension to a request [Manager]
|
||||
logic [1:0] ARDOMAIN; // Shareability domain of a request [Manager]
|
||||
logic [ARSNOOP_WIDTH-1:0] ARSNOOP; // Read request opcode [Manager]
|
||||
logic ARTRACE; // Trace signal [Manager]
|
||||
logic [LOOP_R_WIDTH-1:0] ARLOOP; // Loopback signals on the read channels [Manager]
|
||||
logic ARMMUVALID; // MMU signal qualifier [Manager]
|
||||
logic [SECSID_WIDTH-1:0] ARMMUSECSID; // Secure Stream ID [Manager]
|
||||
logic [SID_WIDTH-1:0] ARMMUSID; // StreamID [Manager]
|
||||
logic ARMMUSSIDV; // SubstreamID valid [Manager]
|
||||
logic [SSID_WIDTH-1:0] ARMMUSSID; // SubstreamID [Manager]
|
||||
logic ARMMUATST; // Address translated indicator [Manager]
|
||||
logic [1:0] ARMMUFLOW; // SMMU flow type [Manager]
|
||||
logic [3:0] ARPBHA; // Page-based Hardware Attributes [Manager]
|
||||
logic [3:0] ARNSAID; // Non-secure Access ID [Manager]
|
||||
logic [SUBSYSID_WIDTH-1:0] ARSUBSYSID; // Subsystem ID [Manager]
|
||||
logic ARCHUNKEN; // Read data chunking enable [Manager]
|
||||
logic ARIDUNQ; // Unique ID indicator [Manager]
|
||||
logic [1:0] ARTAGOP; // Memory Tag operation for read requests [Manager]
|
||||
logic [MECID_WIDTH-1:0] ARMECID; // Memory Encryption Context identifier [Manager]
|
||||
|
||||
// A2.2.2 Read data channel
|
||||
logic RVALID; // Valid indicator [Subordinate]
|
||||
logic RREADY; // Ready indicator [Manager]
|
||||
logic [ID_R_WIDTH-1:0] RID; // Transaction identifier for the read channels [Subordinate]
|
||||
logic RIDUNQ; // Unique ID indicator [Subordinate]
|
||||
logic [DATA_WIDTH-1:0] RDATA; // Read data [Subordinate]
|
||||
logic [CEIL_DATA_WIDTH_DIV_128_TMS_4-1:0] RTAG; // Memory Tag [Subordinate]
|
||||
logic [RRESP_WIDTH-1:0] RRESP; // Read response [Subordinate]
|
||||
logic RLAST; // Last read data [Subordinate]
|
||||
logic [SUM_USER_DATA_WIDTH_USER_RESP_WIDTH-1:0] RUSER; // User-defined extension to read data and response [Subordinate]
|
||||
logic [CEIL_DATA_WIDTH_DIV_64-1:0] RPOISON; // Poison indicator [Subordinate]
|
||||
logic RTRACE; // Trace signal [Subordinate]
|
||||
logic [LOOP_R_WIDTH-1:0] RLOOP; // Loopback signals on the read channels [Subordinate]
|
||||
logic RCHUNKV; // Read data chunking valid [Subordinate]
|
||||
logic [RCHUNKNUM_WIDTH-1:0] RCHUNKNUM; // Read data chunk number [Subordinate]
|
||||
logic [RCHUNKSTRB_WIDTH-1:0] RCHUNKSTRB; // Read data chunk strobe [Subordinate]
|
||||
logic [1:0] RBUSY; // Busy indicator [Subordinate]
|
||||
|
||||
// Modport for Manager role
|
||||
modport MANAGER (
|
||||
|
||||
// A2.4.1 Clock and reset signals
|
||||
input ACLK,
|
||||
input ARESETn,
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
output AWVALID,
|
||||
input AWREADY,
|
||||
output AWID,
|
||||
output AWADDR,
|
||||
output AWREGION,
|
||||
output AWLEN,
|
||||
output AWSIZE,
|
||||
output AWBURST,
|
||||
output AWLOCK,
|
||||
output AWCACHE,
|
||||
output AWPROT,
|
||||
output AWNSE,
|
||||
output AWQOS,
|
||||
output AWUSER,
|
||||
output AWDOMAIN,
|
||||
output AWSNOOP,
|
||||
output AWSTASHNID,
|
||||
output AWSTASHNIDEN,
|
||||
output AWSTASHLPID,
|
||||
output AWSTASHLPIDEN,
|
||||
output AWTRACE,
|
||||
output AWLOOP,
|
||||
output AWMMUVALID,
|
||||
output AWMMUSECSID,
|
||||
output AWMMUSID,
|
||||
output AWMMUSSIDV,
|
||||
output AWMMUSSID,
|
||||
output AWMMUATST,
|
||||
output AWMMUFLOW,
|
||||
output AWPBHA,
|
||||
output AWNSAID,
|
||||
output AWSUBSYSID,
|
||||
output AWATOP,
|
||||
output AWMPAM,
|
||||
output AWIDUNQ,
|
||||
output AWCMO,
|
||||
output AWTAGOP,
|
||||
output AWMECID,
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
output WVALID,
|
||||
input WREADY,
|
||||
output WDATA,
|
||||
output WSTRB,
|
||||
output WTAG,
|
||||
output WTAGUPDATE,
|
||||
output WLAST,
|
||||
output WUSER,
|
||||
output WPOISON,
|
||||
output WTRACE,
|
||||
|
||||
// A2.1.3 Write response channel
|
||||
input BVALID,
|
||||
output BREADY,
|
||||
input BID,
|
||||
input BIDUNQ,
|
||||
input BRESP,
|
||||
input BCOMP,
|
||||
input BPERSIST,
|
||||
input BTAGMATCH,
|
||||
input BUSER,
|
||||
input BTRACE,
|
||||
input BLOOP,
|
||||
input BBUSY,
|
||||
|
||||
// A2.2.1 Read request channel
|
||||
output ARVALID,
|
||||
input ARREADY,
|
||||
output ARID,
|
||||
output ARADDR,
|
||||
output ARREGION,
|
||||
output ARLEN,
|
||||
output ARSIZE,
|
||||
output ARBURST,
|
||||
output ARLOCK,
|
||||
output ARCACHE,
|
||||
output ARPROT,
|
||||
output ARNSE,
|
||||
output ARQOS,
|
||||
output ARUSER,
|
||||
output ARDOMAIN,
|
||||
output ARSNOOP,
|
||||
output ARTRACE,
|
||||
output ARLOOP,
|
||||
output ARMMUVALID,
|
||||
output ARMMUSECSID,
|
||||
output ARMMUSID,
|
||||
output ARMMUSSIDV,
|
||||
output ARMMUSSID,
|
||||
output ARMMUATST,
|
||||
output ARMMUFLOW,
|
||||
output ARPBHA,
|
||||
output ARNSAID,
|
||||
output ARSUBSYSID,
|
||||
output ARCHUNKEN,
|
||||
output ARIDUNQ,
|
||||
output ARTAGOP,
|
||||
output ARMECID,
|
||||
|
||||
// A2.2.2 Read data channel
|
||||
input RVALID,
|
||||
output RREADY,
|
||||
input RID,
|
||||
input RIDUNQ,
|
||||
input RDATA,
|
||||
input RTAG,
|
||||
input RRESP,
|
||||
input RLAST,
|
||||
input RUSER,
|
||||
input RPOISON,
|
||||
input RTRACE,
|
||||
input RLOOP,
|
||||
input RCHUNKV,
|
||||
input RCHUNKNUM,
|
||||
input RCHUNKSTRB,
|
||||
input RBUSY
|
||||
);
|
||||
|
||||
// Modport for Subordinate role
|
||||
modport SUBORDINATE (
|
||||
|
||||
// A2.4.1 Clock and reset signals
|
||||
input ACLK,
|
||||
input ARESETn,
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
input AWVALID,
|
||||
output AWREADY,
|
||||
input AWID,
|
||||
input AWADDR,
|
||||
input AWREGION,
|
||||
input AWLEN,
|
||||
input AWSIZE,
|
||||
input AWBURST,
|
||||
input AWLOCK,
|
||||
input AWCACHE,
|
||||
input AWPROT,
|
||||
input AWNSE,
|
||||
input AWQOS,
|
||||
input AWUSER,
|
||||
input AWDOMAIN,
|
||||
input AWSNOOP,
|
||||
input AWSTASHNID,
|
||||
input AWSTASHNIDEN,
|
||||
input AWSTASHLPID,
|
||||
input AWSTASHLPIDEN,
|
||||
input AWTRACE,
|
||||
input AWLOOP,
|
||||
input AWMMUVALID,
|
||||
input AWMMUSECSID,
|
||||
input AWMMUSID,
|
||||
input AWMMUSSIDV,
|
||||
input AWMMUSSID,
|
||||
input AWMMUATST,
|
||||
input AWMMUFLOW,
|
||||
input AWPBHA,
|
||||
input AWNSAID,
|
||||
input AWSUBSYSID,
|
||||
input AWATOP,
|
||||
input AWMPAM,
|
||||
input AWIDUNQ,
|
||||
input AWCMO,
|
||||
input AWTAGOP,
|
||||
input AWMECID,
|
||||
|
||||
// A2.1.1 Write request channel
|
||||
input WVALID,
|
||||
output WREADY,
|
||||
input WDATA,
|
||||
input WSTRB,
|
||||
input WTAG,
|
||||
input WTAGUPDATE,
|
||||
input WLAST,
|
||||
input WUSER,
|
||||
input WPOISON,
|
||||
input WTRACE,
|
||||
|
||||
// A2.1.3 Write response channel
|
||||
output BVALID,
|
||||
input BREADY,
|
||||
output BID,
|
||||
output BIDUNQ,
|
||||
output BRESP,
|
||||
output BCOMP,
|
||||
output BPERSIST,
|
||||
output BTAGMATCH,
|
||||
output BUSER,
|
||||
output BTRACE,
|
||||
output BLOOP,
|
||||
output BBUSY,
|
||||
|
||||
// A2.2.1 Read request channel
|
||||
input ARVALID,
|
||||
output ARREADY,
|
||||
input ARID,
|
||||
input ARADDR,
|
||||
input ARREGION,
|
||||
input ARLEN,
|
||||
input ARSIZE,
|
||||
input ARBURST,
|
||||
input ARLOCK,
|
||||
input ARCACHE,
|
||||
input ARPROT,
|
||||
input ARNSE,
|
||||
input ARQOS,
|
||||
input ARUSER,
|
||||
input ARDOMAIN,
|
||||
input ARSNOOP,
|
||||
input ARTRACE,
|
||||
input ARLOOP,
|
||||
input ARMMUVALID,
|
||||
input ARMMUSECSID,
|
||||
input ARMMUSID,
|
||||
input ARMMUSSIDV,
|
||||
input ARMMUSSID,
|
||||
input ARMMUATST,
|
||||
input ARMMUFLOW,
|
||||
input ARPBHA,
|
||||
input ARNSAID,
|
||||
input ARSUBSYSID,
|
||||
input ARCHUNKEN,
|
||||
input ARIDUNQ,
|
||||
input ARTAGOP,
|
||||
input ARMECID,
|
||||
|
||||
// A2.2.2 Read data channel
|
||||
output RVALID,
|
||||
input RREADY,
|
||||
output RID,
|
||||
output RIDUNQ,
|
||||
output RDATA,
|
||||
output RTAG,
|
||||
output RRESP,
|
||||
output RLAST,
|
||||
output RUSER,
|
||||
output RPOISON,
|
||||
output RTRACE,
|
||||
output RLOOP,
|
||||
output RCHUNKV,
|
||||
output RCHUNKNUM,
|
||||
output RCHUNKSTRB,
|
||||
output RBUSY
|
||||
);
|
||||
endinterface // axi_intf
|
3
common/common_pkg.sv
Normal file
3
common/common_pkg.sv
Normal file
@@ -0,0 +1,3 @@
|
||||
`include "axi.intf.sv"
|
||||
package common_pkg;
|
||||
endpackage
|
Reference in New Issue
Block a user