Skip to content
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

RoCC Punch Trough Signal #1987

Open
2 tasks done
eric900115 opened this issue Aug 9, 2024 · 6 comments
Open
2 tasks done

RoCC Punch Trough Signal #1987

eric900115 opened this issue Aug 9, 2024 · 6 comments

Comments

@eric900115
Copy link

eric900115 commented Aug 9, 2024

Background Work

Feature Description

Hi all,

I am trying to develop a custom RoCC accelerator in Rocket Tile and would like to connect signals to a master MMIO Accelerator and also to ChipTop. Are there any suggestions on how to punch through the signals from RoCC to both the MMIO Accelerator and ChipTop?

Note that Master MMIO accelerator will connect to Sbus, such as connect init zero module on Sbus. And, RoCC accelerator will attach to Rocket Tile as co-processor.

Thanks

Motivating Example

Punch through the signals from RoCC to both the MMIO Accelerator and ChipTop

@jerryz123
Copy link
Contributor

I think the way to do this is

  1. Create a BundleBridgeSource in your rocc module with the signals that need to be punched to the MMIO accelerator
  2. Create a BundleBridgeSink in your MMIO accelerator with the same signals
  3. In your CanHaveCustomMMIO trait which integrates the MMIO into the system bus, query and filter the list of tiles and rocc-accelerators to find only your custom ones
  4. Connect the BundleBridgeSource to the BundleBridgeSink using diplomacy's :=

I do something similar in rerocc, where the rerocc client (RoCC accelerators) punch signals to the ReRoCC bus (which just lives in the subsystem). This doesn't use BundleBriidgeSource, it uses a custom diplomacy node implementation, but the principle is the same.

See:

@eric900115
Copy link
Author

Thanks, @jerryz123 . I will give it a try and would like to share my implementation here after I'm done.

@franktaTian
Copy link

franktaTian commented Aug 26, 2024

Or, for simple, just "How to punch rocc interface signals to ChipTop" ,
so that one can integrate his co-processor just in verilog?

@franktaTian
Copy link

Hi,
I follow your guide step by step , but cannot find the "BundleBridgeSource". I think the problem is how to "query and filter the list of tiles and rocc-accelerators to find only your custom ones" in CanHaveCustomMMIO.

I think the way to do this is

  1. Create a BundleBridgeSource in your rocc module with the signals that need to be punched to the MMIO accelerator
  2. Create a BundleBridgeSink in your MMIO accelerator with the same signals
  3. In your CanHaveCustomMMIO trait which integrates the MMIO into the system bus, query and filter the list of tiles and rocc-accelerators to find only your custom ones
  4. Connect the BundleBridgeSource to the BundleBridgeSink using diplomacy's :=

I do something similar in rerocc, where the rerocc client (RoCC accelerators) punch signals to the ReRoCC bus (which just lives in the subsystem). This doesn't use BundleBriidgeSource, it uses a custom diplomacy node implementation, but the principle is the same.

See:

@franktaTian
Copy link

Any help?

@franktaTian
Copy link

Thanks, @jerryz123 . I will give it a try and would like to share my implementation here after I'm done.

Do you have any progress?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants