Typedef descriptor_t
typedef struct packed {
/// Flags for this request. Currently, the following are defined:
/// bit 0 set to trigger an irq on completion, unset to not be notified
/// bits 2:1 burst type for source, fixed: 00, incr: 01, wrap: 10
/// bits 4:3 burst type for destination, fixed: 00, incr: 01, wrap: 10
/// for a description of these modes, check AXI-Pulp documentation
/// bit 5 set to decouple reads and writes in the backend
/// bit 6 set to serialize requests. Not setting might violate AXI spec
/// bit 7 set to deburst (each burst is split into own transfer)
/// for a more thorough description, refer to the iDMA backend documentation
/// bits 11:8 Bitfield for AXI cache attributes for the source
/// bits 15:12 Bitfield for AXI cache attributes for the destination
/// bits of the bitfield (refer to AXI-Pulp for a description):
/// bit 0: cache bufferable
/// bit 1: cache modifiable
/// bit 2: cache read alloc
/// bit 3: cache write alloc
/// bits 23:16 AXI ID used for the transfer
/// bits 31:24 unused/reserved
logic [31:0] flags;
/// length of request in bytes
logic [31:0] length;
/// address of next descriptor, 0xFFFF_FFFF_FFFF_FFFF for last descriptor in chain
addr_t next;
/// source address to copy from
addr_t src_addr;
/// destination address to copy to
addr_t dest_addr;
} descriptor_t;
Descriptor layout