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 Linux support for CVA5, including PLIC and CLINT and major bug fixes #2211

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

mohammadshahidzade
Copy link

This pull request introduces key changes to enable Linux support on the CVA5 core, including the addition of PLIC and CLINT, which required modifications to isr.c. It also resolves the original interrupt issue and includes initial changes necessary for running an operating system on multicore CVA5.

Key Updates:

  • Full support for the 20240411 RISC-V privileged architecture (previously, only a draft spec from ~2017-2019 was supported).
  • New separate TLBs for instructions and data.
  • Sv32 virtual memory support.
  • Significant bug fixes for interrupt and exception handling. This resolves issue Adding paths for vivado. #19 (Interrupts can lead to MEPC inconsistent with register state).
  • RISC-V atomic extension (AMO) support, resolving issue Allow using gcc for or1k. #21 (State of AMO support).
  • Simulation support for the latest Verilator version.
  • Multicore support with cache snooping, validated on configurations with 1, 2, and 4 cores.
  • Optimized PLIC and CLINT implementation, required for full multicore Linux support.
  • Validated on FPGA boards, including VCU118 and Digilent Nexys.
  • Performance: Achieves up to 250 MHz on the VCU118 (single-core).
  • Software compatibility tested with Linux 5.18.0 and OpenSBI v0.8-2-ga9ce3ad.

These changes are based on PR #29 from openhwgroup/cva5. Let me know if any refinements are needed!

@mohammadshahidzade
Copy link
Author

Hi,
I also updated the python repo in this pull request litex-hub/pythondata-cpu-cva5#1

…(it's more efficient ot not use plic in the baremetal case)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant