axi_lite_mailbox_unit
Expose NUM_MAILBOXES AXI-Lite mailboxes with inbound and outbound IRQs.
Independent mailboxes share one AXI-Lite slave decode sized by MAILBOX_BASE_ADDR and MAILBOX_SIZE. Each mailbox is an axi_lite_mailbox with two AXI-Lite ports of MAILBOX_SIZE bytes each: mailbox m places its outbound port at MAILBOX_BASE_ADDR + 2 * m * MAILBOX_SIZE and its inbound port one MAILBOX_SIZE above it. The axi_lite_demux decodes only the base-relative address bits from $clog2(MAILBOX_SIZE) upward that select a port. Each mailbox has depth MAILBOX_DEPTH and raises inbound_interrupt_o and outbound_interrupt_o as level-sensitive, active-high interrupts.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
NUM_MAILBOXES | int unsigned | 2 | Number of mailboxes, each with an outbound and an inbound port. |
MAILBOX_DEPTH | int unsigned | 8 | FIFO depth per mailbox. In entries, for each internal message FIFO. |
MAX_TRANS | int unsigned | 32 | AXI-Lite outstanding capacity. Maximum open AXI-Lite transactions per channel in the port demux. |
MAILBOX_BASE_ADDR | int unsigned | 32'h0 | Byte base of mailbox 0. The aperture decode is relative to it. |
MAILBOX_SIZE | bit [31:0] | 32'h800 | Byte span per mailbox port. Register space of one port of an axi_lite_mailbox; a mailbox spans twice this. Must be a power of two. |
ADDR_WIDTH | int unsigned | 32 | AXI-Lite address width. |
DATA_WIDTH | int unsigned | 64 | AXI-Lite data width. |
StrbWidth | int unsigned | DATA_WIDTH / 8 | Write-strobe width. |
MailboxSizeW | int unsigned | $clog2(MAILBOX_SIZE) | Lowest address bit of the port select. |
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | logic | System clock. Clocks all mailbox logic and the AXI-Lite interface; the unit has one clock domain. |
rst_ni | input | logic | Async reset, active-low. Initializes all mailbox state. |
test_en_i | input | logic | DFT test enable, driven to the demux and mailbox test inputs. |
mailbox_axi_req_i | input | axi_req_t | AXI-Lite slave request. |
mailbox_axi_resp_o | output | axi_resp_t | AXI-Lite slave response. |
inbound_interrupt_o | output | logic [NUM_MAILBOXES-1:0] | Per-mailbox interrupt of the inbound port. |
outbound_interrupt_o | output | logic [NUM_MAILBOXES-1:0] | Per-mailbox interrupt of the outbound port. |