The CORE-V CVA6 is a highly configurable, 6-stage RISC-V core for both application and embedded applications. Application class configurations are capable of booting Linux.
3,097
stars
6,544
commits
Assembly
primary language
Sep 8, 2026
updated
CVA6 is a 6-stage, single-issue, in-order CPU which implements the 64-bit RISC-V instruction set. It fully implements I, M, A and C extensions as specified in Volume I: User-Level ISA V 2.3 as well as the draft privilege extension 1.10. It implements three privilege levels M, S, U to fully support a Unix-like operating system. Furthermore, it is compliant to the draft external debug spec 0.13.
It has a configurable size, separate TLBs, a hardware PTW and branch-prediction (branch target buffer and branch history table). The primary design goal was on reducing critical path length.
The CVA6 core is part of a vivid ecosystem. In this document, we gather pointers to this ecosystem (building blocks, designs, partners...).
A performance model of CVA6 is available in the perf-model/ folder of this repository.
It can be used to investigate performance-related micro-architecture changes.
The following instructions will allow you to compile and run a Verilator model of the CVA6 APU (which instantiates the CVA6 core) within the CVA6 APU testbench (corev_apu/tb).
Throughout all build and simulations scripts executions, you can use the environment variable NUM_JOBS to set the number of concurrent jobs launched by make:
NUM_JOBS will default to 1, resulting in a sequential execution
of make jobs;NUM_JOBS to an explicit value, it is recommended not to exceed 2/3 of
the total number of virtual cores available on your system.git clone https://github.com/openhwgroup/cva6.git
cd cva6
git submodule update --init --recursive
:warning: It is strongly recommended to use the toolchain built with the provided scripts.
Install cmake, version 3.14 or higher.
Set the RISCV environment variable.
export RISCV=/path/to/toolchain/installation/directory
help2man and device-tree-compiler packages.For Debian-based Linux distributions, run :
sudo apt-get install help2man device-tree-compiler
pip3 install -r verif/sim/dv/requirements.txt
# DV_SIMULATORS is detailed in the next section
export DV_SIMULATORS=veri-testharness,spike
bash verif/regress/smoke-tests.sh
The directory structure separates the CVA6 RISC-V CPU core from the CORE-V-APU FPGA Emulation Platform.
Files, directories and submodules under cva6 are for the core only and should not have any dependencies on the APU.
Files, directories and submodules under corev_apu are for the FPGA Emulation platform.
The CVA6 core can be compiled stand-alone, and obviously the APU is dependent on the core.
The top-level directories of this repo:
local for common files that are hosted in this repo and submodules that are hosted in other repos.core testbench and uvmt_cva6 UVM verification environment.We highly appreciate community contributions. To ease the work of reviewing contributions, please review CONTRIBUTING.
Contributions to the documentation (docs/ and tutorials/ directories) are very welcome as well.
If you find any problems or issues with CVA6 or the documentation, please check out the issue tracker
and create a new issue if your problem is not yet tracked.
The CVA6 Kanban Board loosely tracks planned improvements.
If you use CVA6 in your academic work you can cite us:
@article{zaruba2019cost,
author={F. {Zaruba} and L. {Benini}},
journal={IEEE Transactions on Very Large Scale Integration (VLSI) Systems},
title={The Cost of Application-Class Processing: Energy and Performance Analysis of a Linux-Ready 1.7-GHz 64-Bit RISC-V Core in 22-nm FDSOI Technology},
year={2019},
volume={27},
number={11},
pages={2629-2640},
doi={10.1109/TVLSI.2019.2926114},
ISSN={1557-9999},
month={Nov},
}
Check out the acknowledgements.
(top 30 of 208)
Assembly
54.9%
SystemVerilog
26.2%
Tcl
7.6%
C
3.7%
Python
2.8%
Shell
1.3%
Makefile
1.0%
The CORE-V CVA6 is a highly configurable, 6-stage RISC-V core for both application and embedded applications. Application class configurations are capable of booting Linux.
3,097
stars
6,544
commits
Assembly
primary language
Sep 8, 2026
updated
CVA6 is a 6-stage, single-issue, in-order CPU which implements the 64-bit RISC-V instruction set. It fully implements I, M, A and C extensions as specified in Volume I: User-Level ISA V 2.3 as well as the draft privilege extension 1.10. It implements three privilege levels M, S, U to fully support a Unix-like operating system. Furthermore, it is compliant to the draft external debug spec 0.13.
It has a configurable size, separate TLBs, a hardware PTW and branch-prediction (branch target buffer and branch history table). The primary design goal was on reducing critical path length.
The CVA6 core is part of a vivid ecosystem. In this document, we gather pointers to this ecosystem (building blocks, designs, partners...).
A performance model of CVA6 is available in the perf-model/ folder of this repository.
It can be used to investigate performance-related micro-architecture changes.
The following instructions will allow you to compile and run a Verilator model of the CVA6 APU (which instantiates the CVA6 core) within the CVA6 APU testbench (corev_apu/tb).
Throughout all build and simulations scripts executions, you can use the environment variable NUM_JOBS to set the number of concurrent jobs launched by make:
NUM_JOBS will default to 1, resulting in a sequential execution
of make jobs;NUM_JOBS to an explicit value, it is recommended not to exceed 2/3 of
the total number of virtual cores available on your system.git clone https://github.com/openhwgroup/cva6.git
cd cva6
git submodule update --init --recursive
:warning: It is strongly recommended to use the toolchain built with the provided scripts.
Install cmake, version 3.14 or higher.
Set the RISCV environment variable.
export RISCV=/path/to/toolchain/installation/directory
help2man and device-tree-compiler packages.For Debian-based Linux distributions, run :
sudo apt-get install help2man device-tree-compiler
pip3 install -r verif/sim/dv/requirements.txt
# DV_SIMULATORS is detailed in the next section
export DV_SIMULATORS=veri-testharness,spike
bash verif/regress/smoke-tests.sh
The directory structure separates the CVA6 RISC-V CPU core from the CORE-V-APU FPGA Emulation Platform.
Files, directories and submodules under cva6 are for the core only and should not have any dependencies on the APU.
Files, directories and submodules under corev_apu are for the FPGA Emulation platform.
The CVA6 core can be compiled stand-alone, and obviously the APU is dependent on the core.
The top-level directories of this repo:
local for common files that are hosted in this repo and submodules that are hosted in other repos.core testbench and uvmt_cva6 UVM verification environment.We highly appreciate community contributions. To ease the work of reviewing contributions, please review CONTRIBUTING.
Contributions to the documentation (docs/ and tutorials/ directories) are very welcome as well.
If you find any problems or issues with CVA6 or the documentation, please check out the issue tracker
and create a new issue if your problem is not yet tracked.
The CVA6 Kanban Board loosely tracks planned improvements.
If you use CVA6 in your academic work you can cite us:
@article{zaruba2019cost,
author={F. {Zaruba} and L. {Benini}},
journal={IEEE Transactions on Very Large Scale Integration (VLSI) Systems},
title={The Cost of Application-Class Processing: Energy and Performance Analysis of a Linux-Ready 1.7-GHz 64-Bit RISC-V Core in 22-nm FDSOI Technology},
year={2019},
volume={27},
number={11},
pages={2629-2640},
doi={10.1109/TVLSI.2019.2926114},
ISSN={1557-9999},
month={Nov},
}
Check out the acknowledgements.
(top 30 of 208)
Assembly
54.9%
SystemVerilog
26.2%
Tcl
7.6%
C
3.7%
Python
2.8%
Shell
1.3%
Makefile
1.0%