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

Add support for heterogenous SoCs (BOOM + Hwacha) #92

Merged
merged 13 commits into from
May 28, 2019

Conversation

abejgonzalez
Copy link
Contributor

@abejgonzalez abejgonzalez commented May 21, 2019

Adds support for heterogeneous configs with both BOOM and Rocket.

  • New subsystems, example system, and test harnesses
  • Mixin to renumber harts based on the cores in the system

Also fixes the BOOM configs that were currently pushed in the repo to work.

  • Forgot to specify Build variable so test harness could generate a system

Depends on the following PR's being merged in first:
#91
riscv-boom/riscv-boom#270

Preferably wait for (nicer prints for boom):
riscv-boom/riscv-boom#269

Todo:

@abejgonzalez
Copy link
Contributor Author

Note: Some parts of this have to change with the BOOM + Rocket Chip version bump. So... keep that in mind.

@abejgonzalez
Copy link
Contributor Author

Preferably merged after riscv-boom/riscv-boom#271 is merged.

@abejgonzalez abejgonzalez requested review from colinschmidt, jerryz123, davidbiancolin and alonamid and removed request for colinschmidt May 25, 2019 00:38
@abejgonzalez
Copy link
Contributor Author

I will work on documentation this weekend so Ill put that in a different PR (since I want the "meaty" PRs to be done for David to continue on his FireSim work without major outstanding PRs)

@alonamid
Copy link
Contributor

BoomAndRocket doesn't really roll off my fingertips... but I guess we're already down too many naming debates right now to contain another one.
Should we have a naming convention for these heterogeneous configs that might make them easier to manage?

@jerryz123
Copy link
Contributor

So now we have boomexample, example, and boomandrocketexample.
Is there any way to roll all these together?

@abejgonzalez
Copy link
Contributor Author

abejgonzalez commented May 25, 2019

@alonamid Agreed. However, this is what I went with for now because it makes thing extremely explicit at the cost of long strings. One option... though in the future... is to name the configs based on the name of the repo, i.e. RebarConfig, MarbleConfig, etc...

@jerryz123 The main difference between the two is that the boomexample and boomrocketexample share the BoomAndRocket... infrastructure while the example subproject uses a Rocket only top and harness. One option to reduce the amount of duplication could be to just use the heterogeneous infrastructure. However, we then don't have an example of using just a Rocket based system (we will only have the tile and harness that support both). It also makes the example project depend on boom even though it really has nothing to do with it.

@jerryz123
Copy link
Contributor

Is there a good reason to keep around a Rocket-only system if the BoomAndRocket system has strictly more functionality?

@abejgonzalez
Copy link
Contributor Author

IMO its wierd to have example which is just used for Rocket based systems only, to use BoomAndRocket based components (esp. when example never uses boom)

@jerryz123
Copy link
Contributor

I guess the point is we could change example to support all possible combinations of Boom/Rocket.

@abejgonzalez
Copy link
Contributor Author

So the more I think about it... the more I think it is fine if example uses the heter-base subsystem in which case we can combine it. The only thing is that you now have to have the end user specify which CONFIG to use and portray that correctly in the documentation. Thoughts anyone?

@alonamid
Copy link
Contributor

I think if we can have a "catch-all" heter-base subsystem in which you have to change only the CONFIG, and it doesn't have an RTL overhead, then that's better

variables.mk Outdated Show resolved Hide resolved
generators/example/src/main/scala/ConfigMixins.scala Outdated Show resolved Hide resolved
Copy link
Contributor

@colinschmidt colinschmidt left a comment

Choose a reason for hiding this comment

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

LGTM assuming you make the small comment updates.

@abejgonzalez
Copy link
Contributor Author

Yea. About to do that.

@abejgonzalez abejgonzalez merged commit 45cacd5 into rebar-dev May 28, 2019
@abejgonzalez abejgonzalez deleted the rebar-dev-heter-multicore branch May 28, 2019 18:24
jerryz123 pushed a commit that referenced this pull request Apr 19, 2024
Update MacroCompiler for Chisel 3.4 / FIRRTL 1.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants