Open sequencer opened 11 months ago
The value in rocket-chip is as much from the quality of the implementations, as it is from the quality of the APIs and dev-experience. We cannot sacrifice the former to improve the latter.
Can you describe more precisely what you want to do? I agree with basically all of the problems you've outlined, but this is still broadly the same directions we've been discussing for a while.
, any other codes as well as RTLs should be private and subject to change
This is not acceptable. Part of the "API" of these generators is the RTL they emit, and that RTL needs to be stable.
Hey yall,
We've started using using this project internally and would like to contribute to the effort to move up to the latest chisel release. What's the best way to start helping with this. We're down to assist in updating/breaking out diplomacy, writing documentation, tests etc. Just don't want to show up out of nowhere and start submitting unhelpful PRs.
Thanks!
Working towards Chisel5/6 is orthogonal from breaking out diplomacy.
I believe the dev
branch of this repo is already tracking chisel5/6, master
will be updated soon as well, ideally by the end-of-the-year.
Work on splitting out diplomacy can begin now, if desired. We can move diplomacy to a standalone repository under chipsalliance.
For documentation, I'd be happy to review anything. Is there a particular area you are interested in documenting.
As for tests, this again depends on what you want to test. Building up better regressions for Rocket has been an ongoing task, but all the bus IP deserve better tests as well. What are you interested in?
awesome, thanks for the info. I'm mostly just looking for input on useful starting points for y'all. Happy to take on anything really, just want to be useful and contribute back.
Also happy to join any other chat systems y'all use to plan/execute on this work, and we plan to start attending the meetings as well.
Most immediately digging deeper into diplomacy/TileLink is well aligned with work we're already doing internally.
Great! I'm glad to hear that.
We have regular meetings Mondays 10AM PST. Chat is through the Chipsalliance Slack, which you should be able to join. We have a public channel there.
perfect! We're in oakland, so that's easy!
Thanks for interesting!
Splitting diplomacy is already happened in #2741, you are free to take over and rebasing, sorry i don't have enough time working on it recently.
FWIW, Diplomacy provides such functionalities, and we should consider how to do the migration, as well as new diplomacy implementation.
resolveStar
function in LazyModule. I'm not so sure about is it still useful, after there is some real world NoC framework in Chisel, see, github.com:ucb-bar/constellation. @jerryz123 can provide more insights to us.instantiate
functions in both LazyModule and Node, it provides functions in how to connect LazyModules and auto-negotiated bundles.The diplomacy provides a bunch of new features for complex SoC designs, but because of the flexibility, it also introduce some problems for verification and physical designs.
The goal in new diplomacy is: be able to decouple Declaration
and Implementation
in two phases for ECO and hierarchical design/verification flow.
As you may see Chisel is providing these new features step by step, in Chisel 6, we provide important new features for Probe(Cross Module Reference), Object Model(Property in Chisel, SystemRDL in old-school world), Public Module(For linking purpose). These are perfect upstreamed features for big SoC designs.
Question comes to: "How to design a new diplomacy framework based on these". I'm not so sure, but I have some idea to share:
LazyModuleImp
, implement it in another phase, even in another Chisel Builder? I'm not so sure about it.Thanks for all the info! I'll dig into that PR later today and get familiar with it.
I believe the dev branch of this repo is already tracking chisel5/6, master will be updated soon as well, ideally by the end-of-the-year.
Could we update to v2.0-RC0 with that? I've internally been doing some tracking of the repo (though mostly only the Bus RTL and APIs) and think rc's overdue for a major release (by semver 2.0 standards).
Don't let perfection be the enemy of the good. That's what stalled last version proposal ( https://github.com/chipsalliance/rocket-chip/issues/3231). IMO, we don't have to wait for this idealistic packaged out version of rc to do a major version release.
Would help with small issues like : https://github.com/chipsalliance/rocket-chip/issues/3545
I'll link #3025 since many talking points are similar to the last time there was a chisel migration change.
I'd be in favor of v1.7 for 3.6 #3354 and v2.0 for chisel 5
That's pretty reasonable to me, i think the limiting factor is mostly around time available to most of the maintainers of this project. I'd be down to to handle helping implement and manage a more regular release schedule starting in 2024 after the holiday break.
also the dev branch is currently updated to the 5.x.x chisel release, i've been using it in my own projects that use chisel as a library.
Type of issue: feature request
Impact: API modification
Development Phase: request
Chisel 6 has supports a lot of new feature that is necessary for better Verilog
emission(
typeName
,group
), better metadata(Property
,OM
) and better verification(LTL
,Probe
). I wanna use these feature for better dev/user experience.However there are too much dependencies for Rocketchip, while no one dares to touch most part of RocketChip. This is the main blockage that stops the envelopment of this project. It has a lot of problems, for example:
Diplomacy
Diplomacy is good, but out-of-date, and couple dozens of features together, diplomacy is basically
Property
,Probe
LazyModuleImp
depends onLazyModule
rather than a concrete parameterLazyModuleImp
RocketCore
RocketCore is a mature uArch but also with problems:
IBuf
;NBDCache
does have some bugs;CSR
has tones of unused and undocumented IO;RoCC
PTW syncing is always broken;RocketCore
to different tiles.trait
withtrait
mixin...Any other bus IPs
No test and may even no usage, and may depend on the entire project because of CDE.
So the basic idea of this is burn it downIMHO, the basic idea of resolving this is, tear it apart and rebuild:
Diplomacy
Rocket
RocketCore
configuration APIIO
,Probe
,Property
Other than these two things should be stable, any other codes as well as RTLs should be private and subject to change without any compatibility concerns, any other projects depending on RocketChip can only rely on such ABI.Any other IPs
This will be a giant work, which I proposed to do years ago, but due to compatibility issue I has been always fail to work on it. But after Chisel 6 releasing, we may need to seriously consider do the migration w/o and back pressure from any other projects.