AXI/AXI-Lite Interfaces
Interface Naming
s_ prefix for subordinate (slave) interfaces - module receives
transactions
m_ prefix for manager (master) interfaces - module initiates
transactions
axi_ for full AXI, axil_ for AXI-Lite
Signal Naming Pattern
{s|m}_{axi|axil}_{channel}{signal}
Examples:
s_axi_awvalid - subordinate AXI write address valid
m_axil_rready - manager AXI-Lite read ready
AXI Channels
Write Channels
- AW - Write Address (awvalid, awready, awaddr, awid, awlen, awsize,
awburst)
- W - Write Data (wvalid, wready, wdata, wstrb, wlast)
- B - Write Response (bvalid, bready, bid, bresp)
Read Channels
- AR - Read Address (arvalid, arready, araddr, arid, arlen, arsize, arburst)
- R - Read Data (rvalid, rready, rdata, rid, rresp, rlast)
AXI-Lite (Simplified)
AXI-Lite removes burst support:
- No
awlen, awsize, awburst, arlen, arsize, arburst
- No
awid, arid, bid, rid
- No
wlast, rlast
- Single beat transactions only
Common Parameters
parameter AXI_ADDR_WIDTH = 32,
parameter AXI_DATA_WIDTH = 32,
parameter AXI_STRB_WIDTH = AXI_DATA_WIDTH / 8,
parameter AXI_ID_WIDTH = 4
Port Declaration Example
AXI Subordinate Interface
// Write address channel
input logic s_axi_awvalid,
input logic [AXI_ADDR_WIDTH-1:0] s_axi_awaddr,
input logic [ AXI_ID_WIDTH-1:0] s_axi_awid,
input logic [ 7:0] s_axi_awlen,
input logic [ 2:0] s_axi_awsize,
input logic [ 1:0] s_axi_awburst,
output logic s_axi_awready,
// Write data channel
input logic s_axi_wvalid,
input logic [AXI_DATA_WIDTH-1:0] s_axi_wdata,
input logic [AXI_STRB_WIDTH-1:0] s_axi_wstrb,
input logic s_axi_wlast,
output logic s_axi_wready,
// Write response channel
output logic s_axi_bvalid,
output logic [ AXI_ID_WIDTH-1:0] s_axi_bid,
output logic [ 1:0] s_axi_bresp,
input logic s_axi_bready,
// Read address channel
input logic s_axi_arvalid,
input logic [AXI_ADDR_WIDTH-1:0] s_axi_araddr,
input logic [ AXI_ID_WIDTH-1:0] s_axi_arid,
input logic [ 7:0] s_axi_arlen,
input logic [ 2:0] s_axi_arsize,
input logic [ 1:0] s_axi_arburst,
output logic s_axi_arready,
// Read data channel
output logic s_axi_rvalid,
output logic [AXI_DATA_WIDTH-1:0] s_axi_rdata,
output logic [ AXI_ID_WIDTH-1:0] s_axi_rid,
output logic [ 1:0] s_axi_rresp,
output logic s_axi_rlast,
input logic s_axi_rready
Channel Ordering
Always group and order channels: AW, W, B, AR, R
Response Codes
localparam RESP_OKAY = 2'b00;
localparam RESP_EXOKAY = 2'b01;
localparam RESP_SLVERR = 2'b10;
localparam RESP_DECERR = 2'b11;
Available Modules
Arbitration
svc_axi_arbiter.sv - Full AXI arbiter (N managers → 1 subordinate)
svc_axi_arbiter_rd.sv - Read channel arbiter
svc_axi_arbiter_wr.sv - Write channel arbiter
Routing
svc_axil_router.sv - AXI-Lite router (1 manager → N subordinates)
svc_axil_router_rd.sv - Read channel router
svc_axil_router_wr.sv - Write channel router
Protocol Conversion
svc_axi_axil_adapter.sv - AXI to AXI-Lite adapter
svc_axi_burst_adapter.sv - Burst adapter
Memory Controllers
svc_axi_mem.sv - AXI memory controller
svc_axil_sram_if.sv - AXI-Lite SRAM interface
svc_axil_regfile.sv - AXI-Lite register file
Utilities
svc_axi_null.sv - AXI sink (responds to all transactions)
svc_axi_tgen.sv - Traffic generator
svc_axi_stats.sv - Bus statistics collector
Architecture Pattern
Most modules follow split read/write architecture with separate _rd and _wr
submodules handling each direction independently.
Reference
See rtl/axi/README.md for full module listing. See
rtl/axi/svc_axi_arbiter.sv for a complete interface example.
1---2name: implementing-axi3description: Provides SVC-specific AXI/AXI-Lite naming conventions, signal ordering, and available modules. Triggers when implementing AXI or AXI-Lite interfaces.4---5
6# AXI/AXI-Lite Interfaces
7
8## Interface Naming
9
10- **`s_`** prefix for subordinate (slave) interfaces - module receives
11 transactions
12- **`m_`** prefix for manager (master) interfaces - module initiates
13 transactions
14- **`axi_`** for full AXI, **`axil_`** for AXI-Lite
15
16## Signal Naming Pattern
17
18```
19{s|m}_{axi|axil}_{channel}{signal}
20```
21
22Examples:
23
24- `s_axi_awvalid` - subordinate AXI write address valid
25- `m_axil_rready` - manager AXI-Lite read ready
26
27## AXI Channels
28
29### Write Channels
30
31- **AW** - Write Address (awvalid, awready, awaddr, awid, awlen, awsize,
32 awburst)
33- **W** - Write Data (wvalid, wready, wdata, wstrb, wlast)
34- **B** - Write Response (bvalid, bready, bid, bresp)
35
36### Read Channels
37
38- **AR** - Read Address (arvalid, arready, araddr, arid, arlen, arsize, arburst)
39- **R** - Read Data (rvalid, rready, rdata, rid, rresp, rlast)
40
41## AXI-Lite (Simplified)
42
43AXI-Lite removes burst support:
44
45- No `awlen`, `awsize`, `awburst`, `arlen`, `arsize`, `arburst`
46- No `awid`, `arid`, `bid`, `rid`
47- No `wlast`, `rlast`
48- Single beat transactions only
49
50## Common Parameters
51
52```systemverilog
53parameter AXI_ADDR_WIDTH = 32,
54parameter AXI_DATA_WIDTH = 32,
55parameter AXI_STRB_WIDTH = AXI_DATA_WIDTH / 8,
56parameter AXI_ID_WIDTH = 4
57```
58
59## Port Declaration Example
60
61### AXI Subordinate Interface
62
63```systemverilog
64// Write address channel
65input logic s_axi_awvalid,
66input logic [AXI_ADDR_WIDTH-1:0] s_axi_awaddr,
67input logic [ AXI_ID_WIDTH-1:0] s_axi_awid,
68input logic [ 7:0] s_axi_awlen,
69input logic [ 2:0] s_axi_awsize,
70input logic [ 1:0] s_axi_awburst,
71output logic s_axi_awready,
72
73// Write data channel
74input logic s_axi_wvalid,
75input logic [AXI_DATA_WIDTH-1:0] s_axi_wdata,
76input logic [AXI_STRB_WIDTH-1:0] s_axi_wstrb,
77input logic s_axi_wlast,
78output logic s_axi_wready,
79
80// Write response channel
81output logic s_axi_bvalid,
82output logic [ AXI_ID_WIDTH-1:0] s_axi_bid,
83output logic [ 1:0] s_axi_bresp,
84input logic s_axi_bready,
85
86// Read address channel
87input logic s_axi_arvalid,
88input logic [AXI_ADDR_WIDTH-1:0] s_axi_araddr,
89input logic [ AXI_ID_WIDTH-1:0] s_axi_arid,
90input logic [ 7:0] s_axi_arlen,
91input logic [ 2:0] s_axi_arsize,
92input logic [ 1:0] s_axi_arburst,
93output logic s_axi_arready,
94
95// Read data channel
96output logic s_axi_rvalid,
97output logic [AXI_DATA_WIDTH-1:0] s_axi_rdata,
98output logic [ AXI_ID_WIDTH-1:0] s_axi_rid,
99output logic [ 1:0] s_axi_rresp,
100output logic s_axi_rlast,
101input logic s_axi_rready
102```
103
104## Channel Ordering
105
106Always group and order channels: **AW, W, B, AR, R**
107
108## Response Codes
109
110```systemverilog
111localparam RESP_OKAY = 2'b00;
112localparam RESP_EXOKAY = 2'b01;
113localparam RESP_SLVERR = 2'b10;
114localparam RESP_DECERR = 2'b11;
115```
116
117## Available Modules
118
119### Arbitration
120
121- `svc_axi_arbiter.sv` - Full AXI arbiter (N managers → 1 subordinate)
122- `svc_axi_arbiter_rd.sv` - Read channel arbiter
123- `svc_axi_arbiter_wr.sv` - Write channel arbiter
124
125### Routing
126
127- `svc_axil_router.sv` - AXI-Lite router (1 manager → N subordinates)
128- `svc_axil_router_rd.sv` - Read channel router
129- `svc_axil_router_wr.sv` - Write channel router
130
131### Protocol Conversion
132
133- `svc_axi_axil_adapter.sv` - AXI to AXI-Lite adapter
134- `svc_axi_burst_adapter.sv` - Burst adapter
135
136### Memory Controllers
137
138- `svc_axi_mem.sv` - AXI memory controller
139- `svc_axil_sram_if.sv` - AXI-Lite SRAM interface
140- `svc_axil_regfile.sv` - AXI-Lite register file
141
142### Utilities
143
144- `svc_axi_null.sv` - AXI sink (responds to all transactions)
145- `svc_axi_tgen.sv` - Traffic generator
146- `svc_axi_stats.sv` - Bus statistics collector
147
148## Architecture Pattern
149
150Most modules follow split read/write architecture with separate `_rd` and `_wr`
151submodules handling each direction independently.
152
153## Reference
154
155See `rtl/axi/README.md` for full module listing. See
156`rtl/axi/svc_axi_arbiter.sv` for a complete interface example.