Skip to content

hw: Add multicast support #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft

hw: Add multicast support #32

wants to merge 10 commits into from

Conversation

Lore0599
Copy link
Contributor

@Lore0599 Lore0599 commented May 14, 2025

Collective Communication: Multicast

This PR introduces multicast capabilities to the Picobello SoC. The feature is not yet tested, but backward compatibility with the unicast version is ensured for the mini_picobello configuration and for this reason could be already merged for preliminary backend trials.

🆕 ADDED:

  • BENDER:
  • CFG:
    • mcast_snitch_cluster.hjson: A temporary multicast-specific configuration file for Snitch Cluster.
      🔜 This file will be removed and merged with the generic configuration once multicast is extended to the full system (7x4 mesh).
  • HARDWARE:
    • picobello_pkg: Added helper functions to update the SAM with multicast-specific information and introduced debug-friendly printing functions to visualize the SAM.
    • picobello_top: Cluster tiles now support multicast while non-cluster tiles (cheshire and memory tile) do not support the feature.
      ⚠️ All routers in the NoC must support multicast to properly route multicast mess

📋 TODO:

  • FlooGen
    • Extend Floogen to automatically generate the correct header for multicast
    • Extend Floogen to include or not multicast feature
    • Support XY offset to use multicast also when clusters are not mapped to power of 2 XY coordinates

⚠️ LIMITATIONS:

  • The full picobello configuration (7x4 mesh) cannot support multicast yet because clusters are not mapped to proper XY coordinate to meet multicast requirements. Further extension at the system level will be necessary.

@Lore0599 Lore0599 requested review from colluca and fischeti May 14, 2025 09:07
@Lore0599 Lore0599 force-pushed the lleone/multicast branch from cdb7a01 to 5310b87 Compare May 14, 2025 09:17
@Lore0599 Lore0599 force-pushed the lleone/multicast branch from 4dcb88d to 74d21ed Compare May 14, 2025 09:45
Comment on lines 196 to 197
$write(" mask_y: {offset: %0d, len: %0d} },",
sam_multicast[i].idx.mask_y.offset,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[verible-verilog-format] reported by reviewdog 🐶

Suggested change
$write(" mask_y: {offset: %0d, len: %0d} },",
sam_multicast[i].idx.mask_y.offset,
$write(" mask_y: {offset: %0d, len: %0d} },", sam_multicast[i].idx.mask_y.offset,

@Lore0599 Lore0599 force-pushed the lleone/multicast branch from 74d21ed to 8ec022a Compare May 14, 2025 09:52
Comment on lines +196 to +197
$write(" mask_y: {offset: %0d, len: %0d} },",
SamMcast[i].idx.mask_y.offset,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[verible-verilog-format] reported by reviewdog 🐶

Suggested change
$write(" mask_y: {offset: %0d, len: %0d} },",
SamMcast[i].idx.mask_y.offset,
$write(" mask_y: {offset: %0d, len: %0d} },", SamMcast[i].idx.mask_y.offset,

typedef logic [aw_bt'(AxiCfgN.AddrWidth)-1:0] user_mask_t;

typedef struct packed {
user_mask_t mcast_mask;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[verible-verilog-format] reported by reviewdog 🐶

Suggested change
user_mask_t mcast_mask;
user_mask_t mcast_mask;

@Lore0599 Lore0599 force-pushed the lleone/multicast branch from 233f542 to 41167ad Compare May 15, 2025 10:05
@Lore0599 Lore0599 force-pushed the lleone/multicast branch from 41167ad to 7220afe Compare May 16, 2025 14:32
@Lore0599 Lore0599 force-pushed the lleone/multicast branch from 53ff190 to 63545f0 Compare May 19, 2025 18:03
@Lore0599 Lore0599 changed the title Lleone/multicast hw; Add multicast support May 20, 2025
@Lore0599 Lore0599 changed the title hw; Add multicast support hw: Add multicast support May 20, 2025
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.

1 participant