• Stars
    star
    941
  • Rank 48,574 (Top 1.0 %)
  • Language SystemVerilog
  • License
    Other
  • Created almost 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CV32E40P is an in-order 4-stage RISC-V RV32IMFCXpulp CPU based on RI5CY from PULP-Platform

Build Status

OpenHW Group CORE-V CV32E40P RISC-V IP

CV32E40P is a small and efficient, 32-bit, in-order RISC-V core with a 4-stage pipeline that implements the RV32IM[F|Zfinx]C instruction set architecture, and the PULP custom extensions for achieving higher code density, performance, and energy efficiency [1], [2]. It started its life as a fork of the OR10N CPU core that is based on the OpenRISC ISA. Then, under the name of RI5CY, it became a RISC-V core (2016), and it has been maintained by the PULP platform team until February 2020, when it has been contributed to OpenHW Group.

Documentation

The CV32E40P user manual can be found in the docs folder and it is captured in reStructuredText, rendered to html using Sphinx. These documents are viewable using readthedocs and can be viewed here.

Verification

The verification environment for the CV32E40P is not in this Repository. There is a small, simple testbench here which is useful for experimentation only and should not be used to validate any changes to the RTL prior to pushing to the master branch of this repo.

The verification environment for this core as well as other cores in the OpenHW Group CORE-V family is at the core-v-verif repository on GitHub.

The Makefiles supported in the core-v-verif project automatically clone the appropriate version of the cv32e40p RTL sources.

Changelog

A changelog is generated automatically in the documentation from the individual pull requests. In order to enable automatic changelog generation within the CV32E40P documentation, the committer is required to label each pull request that touches any file in 'rtl' (or any of its subdirectories) with Component:RTL and label each pull request that touches any file in 'docs' (or any of its subdirectories) with Component:Doc. Pull requests that are not labeled or labeled with ignore-for-release are ignored for the changelog generation.

Only the person who actually performs the merge can add these labels (you need committer rights). The changelog flow only works if at most 1 label is applied and therefore pull requests that touches both RTL and documentation files in the same pull request are not allowed.

Constraints

Example synthesis constraints for the CV32E40P are provided.

Contributing

We highly appreciate community contributions. We are currently using the lowRISC contribution guide. To ease our work of reviewing your contributions, please:

  • Create your own fork to commit your changes and then open a Pull Request to the dev branch.
  • Split large contributions into smaller commits addressing individual changes or bug fixes. Do not mix unrelated changes into the same commit!
  • Do not mix updates within the 'rtl' directory with updates within the 'docs' directory ino the same pull request.
  • Write meaningful commit messages. For more information, please check out the the Ibex contribution guide.
  • If asked to modify your changes, do fixup your commits and rebase your branch to maintain a clean history.
  • If the PR gets accepted and merged into the the dev branch, an action is triggered automatically to check whether the changes are logically equivalent to the frozen RTL on a given set of parameters. If the changes are logically equivalent, the dev branch is automatically merged into the master branch. Otherwise, we need to investigate manually. If a bug is found, thus the changes are not logically equivalent, we follow the procedure documented here.

For more details on how this is implemented, have a look at this page.

When contributing SystemVerilog source code, please try to be consistent and adhere to the lowRISC Verilog coding style guide.

To get started, please check out the "Good First Issue" list.

The RTL code has been formatted with "Verible" v0.0-1149-g7eae750. Run ./util/format-verible to format all the files.

Issues and Troubleshooting

If you find any problems or issues with CV32E40P or the documentation, please check out the issue tracker and create a new issue if your problem is not yet tracked.

References

  1. Gautschi, Michael, et al. "Near-Threshold RISC-V Core With DSP Extensions for Scalable IoT Endpoint Devices." in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 25, no. 10, pp. 2700-2713, Oct. 2017

  2. Schiavone, Pasquale Davide, et al. "Slow and steady wins the race? A comparison of ultra-low-power RISC-V cores for Internet-of-Things applications." 27th International Symposium on Power and Timing Modeling, Optimization and Simulation (PATMOS 2017)

More Repositories

1

cva6

The CORE-V CVA6 is an Application class 6-stage RISC-V CPU capable of booting Linux
Assembly
2,230
star
2

core-v-verif

Functional verification project for the CORE-V family of RISC-V cores.
Assembly
430
star
3

cvfpu

Parametric floating-point unit with support for standard RISC-V formats and operations as well as transprecision formats.
SystemVerilog
426
star
4

force-riscv

Instruction Set Generator initially contributed by Futurewei
C++
259
star
5

cvw

CORE-V Wally is a configurable RISC-V Processor associated with RISC-V System-on-Chip Design textbook. Contains a 5-stage pipeline, support for A, B, C, D, F, M and Q extensions, and optional caches, BP, FPU, VM/MMU, AHB, RAMs, and peripherals.
SystemVerilog
251
star
6

cv32e40x

4 stage, in-order, compute RISC-V core based on the CV32E40P
SystemVerilog
210
star
7

core-v-cores

CORE-V Family of RISC-V Cores
202
star
8

programs

Documentation for the OpenHW Group's set of CORE-V RISC-V cores
HTML
187
star
9

core-v-mcu

This is the CORE-V MCU project, hosting CORE-V's embedded-class cores.
SystemVerilog
165
star
10

cv32e40s

4 stage, in-order, secure RISC-V core based on the CV32E40P
SystemVerilog
128
star
11

cva6-sdk

CVA6 SDK containing RISC-V tools and Buildroot
Makefile
59
star
12

core-v-xif

RISC-V eXtension interface that provides a generalized framework suitable to implement custom coprocessors and ISA extensions
SystemVerilog
59
star
13

cva5

The CORE-V CVA5 is an Application class 5-stage RISC-V CPU specifically targetting FPGA implementations.
SystemVerilog
59
star
14

cv-hpdcache

RTL sources of the High-Performance L1 Dcache (HPDcache) for OpenHW CV cores
SystemVerilog
51
star
15

cv32e41p

4 stage, in-order, secure RISC-V core based on the CV32E40P with Zfinx and Zce ISA extentions
SystemVerilog
26
star
16

corev-gcc

C++
22
star
17

core-v-mcu-uvm

CORE-V MCU UVM Environment and Test Bench
SystemVerilog
17
star
18

openhwgroup.org

OpenHW Group is a not-for-profit, global organization driven by its members and individual contributors where hardware and software designers collaborate in the development of open-source cores, related IP, tools and software. OpenHW provides an infrastructure for hosting high quality open-source HW developments in line with industry best practices.
HTML
16
star
19

core-v-sw

Main Repo for the OpenHW Group Software Task Group
15
star
20

riscv_vm

Instructions to import Ubuntu guest Virtual Machine for RISC-V development for the VEGA board
Shell
14
star
21

core-v-sdk

Java
14
star
22

core-v-mcu-devkit

This is the CORE-V MCU DevKit project, hosting the open-source artifacts for the CORE-V MCU Development Kit.
HTML
13
star
23

corev-llvm-project

12
star
24

tristan-isolde-unified-access-page

Unified Access Page for the TRISTAN project
HTML
11
star
25

riscv-ovpsim-corev

11
star
26

cv32e40x-dv

CV32E40X Design-Verification environment
Assembly
11
star
27

corev-binutils-gdb

C
9
star
28

core-v-mcu-cli-test

Eclipse/FreeRTOS/core-v-mcu example program
C
9
star
29

core-v-ide-cdt

Java
9
star
30

cva6-platform

CVA6-platform is a multicore CVA6 with CV-MESH software and regression platform
9
star
31

advanced-riscv-verification-methodologies

Advanced Verification Methodologies for RISC-V and related IP
SystemVerilog
7
star
32

cv-hpdcache-verif

Verification environment for the OpenHW Group's CORE-V High Performance Data Cache controller.
SystemVerilog
5
star
33

obi

Repository that maintain the OpenBus Interface spec
4
star
34

core-v-freertos

C
4
star
35

cv-mesh

3
star
36

u-boot

Unofficial development fork of U-Boot
C
2
star
37

cvw-arch-verif

The purpose of the repo is to support CORE-V Wally architectural verification
SystemVerilog
2
star
38

core-v-freertos-kernel

C
1
star
39

downloads.openhwgroup.org

downloads.openhwgroup.org
SCSS
1
star
40

osdforum.org

The Open Source Developer Forum is a workshop that brings open source software and hardware (chips, boards and systems) developers together to collaborate and learn.
HTML
1
star