-
Notifications
You must be signed in to change notification settings - Fork 705
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
[TASK] Enable heterogeneous CVA6 instantiations #1233
Comments
Hello @Jbalkind thank you to open this Github issue. Since a while we try to setup a strategy to configure easily CVA6. The stakeholders are (so far) @zarubaf, @cfuguet @Jbalkind @JeanRochCoulon and maybe @MikeOpenHWGroup . To continue your intoduction, I would say that:
I get the problem in mind for a while. If someone can help me to find a solution, I would really pleased to offer him good drink(s) (wine for Mike, maybe beer for Florian) at Barcelona RISCV Summit. (If not, we can drink anyway). |
Fully support that notion. Likely requires quite some changes in how we do the parameterization. Maybe we can discuss a staged plan where we start with the most important parameter(s) (I guess
Having default AXI structs could solve this. Also a synthesis wrapper (which is quite a common technique) for stand-alone PPA synthesis could be used.
I think if we pack everything in a good configuration struct we could denote this as TRL5. Any other parameterization would be "at own risk". FYI @domenicw |
Yes, I agree with the approach mentioned by @zarubaf regarding parametrization.
|
The synthesis wrapper will not garanty that the configuration synthetized is aligned withe the configuration simulated. The RTL should be self-supporting (wrapper should not be needed, except if this wrapper is used to verify cva6, but it is not our case). The strategy is to define AXI in ariane_pkg as done for the ArianeCfg parameter. The default configuration for AXI will be aligned with cv32a60x which corresponds to the step1. Do you approve it ? |
Yes, Ok for me. |
Here is the status about parametrization. To go ahead, I need help.
|
Is there an existing CVA6 task for this?
Task Description
We are interested in having multiple, heterogeneous instances of CVA6 in a single design. At present, the configuration mechanism doesn't support this well. As discussed during the CVA6 meeting, a number of us are interested in figuring out a mechanism that does support this use case.
My read of the situation is that the struct types are the biggest issue. If we passed around ariane_cfg_t with appropriate defaults (set via the configs) then I don't think there would be much trouble for things like XLEN when they are used within modules or even for port widths. The trouble I see is that the sizes of struct fields need to be set more globally in a way that is less compatible with the heterogeneity idea.
I've created this as a task but am looking more to stir up some brainstorming about how to resolve the issue. Hopefully that's appropriate if we actually come up with a solution and can use this task to track it.
Description of Done
The ability to instantiate multiple heterogeneous CVA6 cores without duplication of necessary files.
Associated PRs
No response
The text was updated successfully, but these errors were encountered: