Skip to content

Conversation

@colluca
Copy link
Contributor

@colluca colluca commented Sep 22, 2025

This PR adds multicast support to the AXI XBAR, such that write requests from a master can be multicast to multiple slaves.

To support multicast with low area overhead, we adopt the mask-based encoding proposed in https://arxiv.org/pdf/2502.19215.

In detail, this PR implements the following changes:

  • The axi_mcast_demux_simple implements a superset of the functionality of the axi_demux_simple, including all multicast capabilities, which require a few more signals on the interface, namely mst_is_mcast_o and mst_aw_commit_o. So axi_demux_simple is rewritten as a wrapper around axi_mcast_demux_simple, tying off unused ports and parameters.
  • The same is done for the axi_mcast_mux and axi_mux modules, the axi_mcast_xbar_unmuxed and axi_xbar_unmuxed modules, and the axi_mcast_xbar and axi_xbar modules.
  • The axi_demux_id_counters module is moved to its own file, which is anyways good practice, and it would otherwise not be clear whether it should now belong to axi_demux_simple.sv or axi_mcast_demux_simple.sv.
  • Placing the spill registers downstream of the address decoders requires registering the ax_select signals from the address decoders. To eliminate this overhead (in the case of multicast it would even increase due to additional output signals from the decoders), we move the address decoders downstream of the spill registers in theaxi_mcast_demux_mapped module. The _mapped prefix is to identify a demux whose slaves are memory-mapped, i.e. that uses address decoders to generate the ax_select signals. Since several modules use the demux with a non-address-based ax_select signal generation, the axi_demux module preserves the same interface and functionality as before, and does not wrap the axi_mcast_demux_mapped module, unlike the other unicast and multicast IP pairs.

@colluca colluca marked this pull request as ready for review October 6, 2025 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants