-
Notifications
You must be signed in to change notification settings - Fork 169
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
Unnecessary Vector/FP Extension Dependency #589
Comments
Yes, this is an issue I've also been dealing with. I think the solution is to make If you see my PR here: #572 the dependency that the riscv core module on the vector extension has to be spelled out - that's one of the big motivators for introducing a simple module system, as it will ensure that these kinds of circular dependencies don't exist and extensions are easily separable from the base ISA. |
Ah yep I've seen the PR but hadn't read in detail so didn't make the link. Should perfectly solve this issue and would be really useful work. Looking forward to the release, thanks! |
Maybe hold off on changing I like the scattered function solution; let's do that. |
I think TestRIG currently relies on reset being the same as initialisation so it can keep reusing the same instance. |
I think TestRIG uses the RVFI-DII interface which calls
It will reset |
Thanks for checking, I couldn't remember the exact implementation details. |
Here's the reset refactor I mentioned: #597 |
When compiling a minimal RISC-V Sail source into Jib (though I expect this is the same when compiling the emulators) I'm finding that
riscv_sys_control.sail
is dependent on the following files:riscv_flen_{F/D}.sail
riscv_vlen.sail
riscv_vreg_type.sail
riscv_vext_regs.sail
In the provided sail-riscv makefile, these are included in the default sources so are always compiled. As I understand, some discussion of a more configurable model (choosing what extensions to enable) has been underway. Of course, not all extensions are segregated, but this means that a relatively large portion of the vector extension is a dependency for compiling the "base" model.
The offending code is defining vector CSRs in
init_sys()
and uses some functions defined in the vector files. This is also the case with the floating point extension (either F or D), though this is less impactful asriscv_flen_D.sail
is very small. I was able to compile without the above dependencies after removing this code.Separating these definitions into a new (or other existing) file would help reduce the dependencies and make it a bit easier to only (or at least mostly) include subsets of extensions.
The text was updated successfully, but these errors were encountered: