* Bare skeleton implementation of everything * Testbench builds with Verilator * Test runs
415 lines
20 KiB
Systemverilog
415 lines
20 KiB
Systemverilog
// 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
|