Interfaces and Types
Interface Reference
This page is the reference for idma_req_t, options_t, and idma_rsp_t. Use it when writing drivers or connecting custom frontends. For integration, prefer the convenience macros from typedef.svh.
Transfer Request (idma_req_t)
The request carries addresses, transfer length, and options that control protocol and backend behavior.
`IDMA_TYPEDEF_REQ_T(idma_req_t, tf_len_t, axi_addr_t, options_t)// Expands to:typedef struct packed { tf_len_t length; // Transfer length in bytes axi_addr_t src_addr; // Source byte address axi_addr_t dst_addr; // Destination byte address user_t user; // User-defined sideband data options_t opt; // Transfer options} idma_req_t;Transfer Options (options_t)
Transfer options select protocols and carry sideband signals. Each request embeds one options_t.
`IDMA_TYPEDEF_OPTIONS_T(options_t, axi_id_t)// Expands to:typedef struct packed { idma_pkg::protocol_e src_protocol; // Source bus protocol idma_pkg::protocol_e dst_protocol; // Destination bus protocol axi_id_t axi_id; // AXI transaction ID idma_pkg::axi_options_t src; // Source AXI options idma_pkg::axi_options_t dst; // Destination AXI options idma_pkg::backend_options_t beo; // Backend engine options logic last; // Last transfer flag (for midend)} options_t;Transfer Response (idma_rsp_t)
The response indicates completion and error status for a transfer.
`IDMA_TYPEDEF_RSP_T(idma_rsp_t, err_payload_t)// Expands to:typedef struct packed { logic last; // Last response for this ND transfer logic error; // Error occurred err_payload_t pld; // Error details (cause, type, address)} idma_rsp_t;Error Payload (err_payload_t)
The error payload identifies the faulting burst and its origin.
`IDMA_TYPEDEF_ERR_PAYLOAD_T(err_payload_t, axi_addr_t)// Expands to:typedef struct packed { axi_pkg::resp_t cause; // AXI response code idma_pkg::err_type_t err_type; // Error source (BUS_READ, BUS_WRITE, BACKEND, ND_MIDEND) axi_addr_t burst_addr; // Address of the faulting burst} err_payload_t;Handshake Semantics
All request and response interfaces use ready/valid handshaking. A transfer is accepted when req_valid_i and req_ready_o are both high in the same cycle. A response is accepted when rsp_valid_o and rsp_ready_i are both high.