Skip to content

Add direct path from register to routing crossbar, bypassing FU#274

Merged
tancheng merged 15 commits intotancheng:masterfrom
guosran:fix/reg-routing-bypass
Mar 15, 2026
Merged

Add direct path from register to routing crossbar, bypassing FU#274
tancheng merged 15 commits intotancheng:masterfrom
guosran:fix/reg-routing-bypass

Conversation

@guosran
Copy link
Copy Markdown
Collaborator

@guosran guosran commented Mar 13, 2026

Description

This PR addresses issue #273 and coredac/neura#278. It introduces a direct pathway from the Register Cluster banks to the routing_crossbar, allowing reg -> outport communication to bypass the FU.

Summary of Changes

  • RegisterClusterRTL.py: Interfaced direct send_data_to_routing_crossbar outputs.
  • TileRTL.py & TileWithContextSwitchRTL.py: Connected the newly created register cluster outputs to the subsequent indices of the routing crossbar's input ports.
  • messages.py: Expanded the tile_in_type_nbits parameter to accommodate both the neighboring tile's input ports and the new register bank sources. Included this width parameter in the PyMTL cache name to ensure distinct control signal generation.
  • Test Benches: Updated internal crossbar config sizes across multiple tests.

Use wider TileInType = mk_bits(clog2(num_tile_inports + num_fu_inports + 1))
to match the updated mk_ctrl routing_xbar_outport field width.
@guosran guosran force-pushed the fix/reg-routing-bypass branch from 9c8612c to e242627 Compare March 13, 2026 16:40
guosran added 2 commits March 14, 2026 04:31
- Renamed kAttrReadRegFrom to kAttrReadRegTowards in data_struct_attr.py
- Changed field type from b1 to RegFromType (2-bit) in messages.py
- Updated RegisterBankRTL.py to check read_reg_towards value:
  - 0: towards nothing (no read)
  - 1: towards FU (reg data consumed by operation)
  - 2: towards routing_xbar (reg data routed out to outport)
  - 3: towards both FU and routing_xbar
- Updated RegisterClusterRTL.py to drive send_data_to_routing_crossbar.val
  based on read_reg_towards being 2 or 3
- Updated CtrlMemDynamicRTL.py field references
- Updated all test files to use read_reg_towards with b2 type
- Updated SV test files with new type names and field names

This addresses the reviewer's request to reuse RegFromType for
read_reg_towards to indicate whether FU expects inputs from inports
or register.
…end_data_to_fu to send_data, simplify conditions
@tancheng tancheng merged commit d1de14b into tancheng:master Mar 15, 2026
2 checks passed
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.

[P0] Register towards routing_xbar

3 participants