-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
commit #0b7fef44f removes SBT, requires mill #3483
Comments
Also, if I install and configure
then
I get an error:
This did not use to happen a few months ago when I (accidentally :) ) tested the dev branch and figured out how to use mill... |
I am facing the same issue as @gsomlo. I have also tried using different versions of mill (e.g. "DEFAULT_MILL_VERSION=0.11.2 make" in rocket-chip/emulator), while still observing the same error no matter which version I used. commit 50adbdb |
Me as well. I have reverted to commit [eee99e8] and things seem to be going more smoothly, so far. Nevermind, I seem to be having issues across the board. I'm unable to build rocketchip. |
Unfortunately, the standalone rocket-chip build support has been deprecated and removed, due to lack of developer resources to maintain that feature. To build and test SoCs with rocket-chip, users should seek out SoC frameworks. Two options include :
|
On Mon, Sep 18, 2023 at 10:34:54PM -0700, Jerry Zhao wrote:
Unfortunately, the standalone rocket-chip build support has been
deprecated and removed, due to lack of developer resources
While I find that extremely disappointing, I fully understand about
limited resources available for maintenance.
My own ToDo list has been known to grow faster than I can address
tasks currently on it. In fact, based on this decision, one such
high-priority item: "learn enough Chisel to understand (and maybe
eventually contribute to) Rocket" can now be safely scratched off
that list, freeing up valuable time for other things I'm supposed
to be working on... :D
|
Given the upstream chipsallliance/rocket-chip decision to remove support for independent builds (i.e., `make verilog`, see github.com/chipsalliance/rocket-chip/issues/3483#issuecomment-1724857339), check out the last commit before the breaking merge (#4f197707e). Similarly, check out the version of the L2 cache current at around the same time (#51d400b) to avoid further upstream drift. NOTE: Unless upstream reconsiders, this is likely the *LAST* version of the Rocket Chip to be supported for inclusion in LiteX! Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
Hi Jerry and thanks for the info. Could you elaborate a little bit about what exactly is removed? If i understand correctly, "removal of standalone build support" is actually more like the build configs from sbt haven't been moved to mill? I'm currently ramping up on scala/chisel with some mill on the side, so unless there are some standalone-build breaking changes in the chisel code itself, I might try and port the standalone build from sbt to mill. |
The SBT build files, and the Makefile flow which relied on that, no longer works. It is still entirely possible to emit verilog from this repo using mill, unfortunately the README hasn't caught up with these changes. @sequencer can you or someone on your end update the README?
To be clear, the part that is broken is the standalone makefile-to-verilog flow. This would be worth bringing up to date. |
@gsomlo @n-kremeris , I see that you guys are looking at updating rocket-chip support within Litex. We are focusing efforts towards making rocket-chip usable as a library, rather than a standalone repository. Maintaining whatever is necessary to make rocket-chip-Litex integration easy is work I, along with the other active maintainers, would be willing to do. |
@jerryz123 Thanks much for the clarification! Short of using SBT, I would be perfectly OK going with a However, the steps shown there don't seem to be working at the moment either (I'm getting [1]: the steps shown in #3483 (comment) did work on the Thanks again, |
Try I will try to find some time to restore the |
@jerryz123 -- looks like #3489 is the solution. Any idea when it might land in |
I opened the backport PR. It should get merged in as soon as the tests run. Some developers want the dev branch to aggressively pursue newer Chisel versions, which could break backwards-compatibility for many projects which cannot bump Chisel versions so aggressively. Thus, we've adopted a backport flow, where PRs are made against dev, then backported to master. |
Sorry for the late reply. I'll update the readme later this week. I'm currently out of the office. |
#3494 updates the Makefile + README. More importantly, the backport PRs seem to get stuck in CI somewhere... which is blocking commits to master |
We've updated the README + makefile in master so that a simple |
I jumped the gun, I'm getting confused with all these PRs. #3494 will go in imminently, and once that goes in, the backport will fix up master. This should happen within a few hours of this post. |
so, I tried (against commit e377336, current tip of
and got (after a fair amount of work happened):
I then tried one of my customized LiteX configurations:
and got (in fairly short order):
I'm guessing there's still something missing before one could successfully do a Thanks again for looking into it! |
@gsomlo |
To generate the litex custom config, at least 3 changes must be made from the Rocket side of things:
This seems to correctly build the rocketchip with the desired Litex config. I haven't yet looked at what changes must be done to update.sh/pythondata-cpu-rocket |
On Tue, Oct 03, 2023 at 03:50:21AM -0700, Norbert Kremeris wrote:
@gsomlo
You can download firtool from here
Oh, great! First mill, OK. Now some other rando download -- this is
quickly headed for NPM-like levels of dependency hell... :(
|
😂 That's not just any rando dependency. 😂 That's a much more (~4x conservatively) performant FIRRTL compiler that produces better, more readable Verilog output. 😉 Note that on the Chisel side, we are intending to make this download automatically handled like a normal Java dependency. @jackkoenig has an experimental approach that will download this for you from Maven. It's slightly more complicated than normal as it's a binary dependency and not a Java dependency and this has taken some time to sort out. |
In order to resolve the dependency issues(and avoid NPM dependency hell as well), In rocket-chip, I choose these solutions:
I understand installing nix, and run a daemon for it is not quite straightforward for hardware design users, I aware that, and I'll also try to find some alternative solutions to new users(e.g. provide a docker container and release it) I hope users understand, we reduces burdens(SBT, legacy Chisel version support, a stable API and a version based backport-flow) since
After all, we are still making progress, we may have some breaking change, or even introduce issues that makes some user not happy(like this) in the future, but please understand, our goal for now is improving the development efficiency to make the rocket-chip continue and alive at least. So for most dependencies/build questions, my only suggestion is: |
@sequencer Is it possible to have mill parse a string for the Config as it was done before? Having to mirror the configs into the build.sc is not ideal |
It's not simple, since, mill find configuration statically, there are two solutions:
|
On Tue, Oct 03, 2023 at 02:57:05PM -0700, Jiuyang Liu wrote:
In order to resolve the dependency issues(and avoid NPM dependency hell as
well), In rocket-chip, I choose these solutions:
@sequencer, @jerryz123: First off, thank you for your hard work
maintaining this project. Last thing I want is to add "negative energy"
from the peanut gallery, and sorry if anything I said reads that way... :)
As a "downstream consumer" of RocketChip, I (personally) value the
ability to trust the output of a build process by keeping a handle
on all (most?) of the "moving parts". A large part of that is ability
to understand, track, and control the "main" project's dependencies.
It makes sense for a project such as Rocket to depend on a few other
projects that are also "fast-evolving" in their own right (e.g.,
Chisel, mill, etc.).
But in order to maintain any sort of confidence in the output of a
build of the project, as we descend down the tree of dependencies, things
should hopefully settle down into "slow-and-stable", i.e. things that
might be reasonably packaged for a distro (debian/ubuntu/fedora/etc.)
and updated once every few months, if not even less frequently.
If the "fast-evolving" nature of the dependency chain is preserved too
many layers deep, then we have an "everything everywhere all at once"
situation that only one or two developers can reasonably keep a handle
on, and anyone else might get lucky to receive a dockerfile of a snapshot
of one of the developers' environments, so as to be able to ritually
"cargo-cult" a rebuild, but without any chance of any control or
understanding of what's going on.
I understand the latter scenario is sometimes inevitable, and that's
OK, I'm happy to wait for it to stabilize once again. I wish I were
enough of a Chisel/Scala ninja to offer some assistance, but that's
not (yet) the case... :(
Best of luck with your degrees, that should be priority #1! :D
Cheers,
--Gabriel
|
Do we have a way to restore the verilator emulator binary build flow too? |
I don't think so, you can maintain it on your own, but not in the rocketchip upstream repo. You can see github action, emulator works fine, It works even on an aarch64 machine, I don't think there is any reason to restore it. |
Hi and thanks for the reply! Please could you explain a little bit more? I looked at the github actions tab, but I'm not sure where to find references to the emulator |
try |
Type of issue: bug report
Impact: unknown
If the current behavior is a bug, please provide the steps to reproduce the problem:
make ... -C rocket-chip/vsim verilog CONFIG=<model>
fails (is no longer self-contained)What is the current behavior?
What is the expected behavior?
make
command successfully builds inside self-containedrocket-chip
+ submodules repo tree.Please tell us about your environment:
What is the use case for changing the behavior?
I'm not sure if disabling SBT in favor of
mill
was deliberate or accidental (I'm aware the commit was lurking around in thedev
branch for a while now :) ). However, if it's deliberate, it'd be nice ifmill
were included as a submodule or somehow otherwise made a "transparent" part of the build process within therocket-chip
repo...The text was updated successfully, but these errors were encountered: