Agent skill
implementing-axi
Provides SVC-specific AXI/AXI-Lite naming conventions, signal ordering, and available modules. Triggers when implementing AXI or AXI-Lite interfaces.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/implementing-axi-pbozeman-svc
SKILL.md
AXI/AXI-Lite Interfaces
Interface Naming
s_prefix for subordinate (slave) interfaces - module receives transactionsm_prefix for manager (master) interfaces - module initiates transactionsaxi_for full AXI,axil_for AXI-Lite
Signal Naming Pattern
{s|m}_{axi|axil}_{channel}{signal}
Examples:
s_axi_awvalid- subordinate AXI write address validm_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
systemverilog
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
systemverilog
// 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
systemverilog
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 arbitersvc_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 routersvc_axil_router_wr.sv- Write channel router
Protocol Conversion
svc_axi_axil_adapter.sv- AXI to AXI-Lite adaptersvc_axi_burst_adapter.sv- Burst adapter
Memory Controllers
svc_axi_mem.sv- AXI memory controllersvc_axil_sram_if.sv- AXI-Lite SRAM interfacesvc_axil_regfile.sv- AXI-Lite register file
Utilities
svc_axi_null.sv- AXI sink (responds to all transactions)svc_axi_tgen.sv- Traffic generatorsvc_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.
Didn't find tool you were looking for?