core-v-mcu

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

https://github.com/openhwgroup/core-v-mcu

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: ieee.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.4%) to scientific vocabulary

Keywords

microcontroller openhwgroup riscv systemverilog
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
Statistics
  • Stars: 177
  • Watchers: 20
  • Forks: 62
  • Open Issues: 80
  • Releases: 1
Topics
microcontroller openhwgroup riscv systemverilog
Created over 5 years ago · Last pushed 8 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

License Documentation Status

CORE-V MCU

CORE-V MCU originated from PULPissimo [1], [2], and is now a stand-alone project within OpenHW Group independent from PULPIssimo.

In case you would be interested to join the project please feel free to open an issue, or involve yourself in any open issues/discussions. Contributions are always welcome! First time contributors should review the Contributing guide.

Quick Start Guide

The fastest way to get up and running with the CORE-V MCU is with pre-built bit streams for the Digilent Nexys A7 board. Check out the Quick Start Guide.

Getting Started

Install the required Python tools:

pip3 install --user -r python-requirements.txt

Install fusesoc: https://fusesoc.readthedocs.io/en/stable/user/installation.html#ug-installation

Install Verilator v4.100: https://verilator.org/guide/latest/install.html

Install Xilinx Vivado: see the Quick Start Guide.

Building

The build system uses make to capture the required steps. make with no argments will print a list of the current targets: $ make all: generate build scripts, custom build files, doc and sw header files bitstream: generate nexysA7-100T.bit file for emulation model-lib: build a Verilator model library lint: run Verilator lint check docs: generate documentation sw: generate C header files (in ./sw) nexys-emul: generate bitstream for Nexys-A7-100T emulation) genesys-emul: generate bitstream for Genesys2 FPGA board buildsim: build for Questa sim sim: run Questa sim downloadn: Download bitstream to Nexys board downloadg: Download bitstream to Genesys2 board

Building an FPGA Image

To target the Nexys-A7-100T board: $ make nexys-emul

Make sure you have the latest Xilinx board-parts installed. Current image is corevnexys_200122.bit

To target Genesys2 board: $ make genesys-emul Extra note for building on ubuntu - Vivado tools from Xilinx may require a larger swap size that the system default. The swap size can be increased by searching for "increase swapfile in ubuntu" and add your release.

Building documentation

$ make docs The resulting documents are accessed using file ./docs/_build/html/index.html

Documentation of the Debug Unit

At present the details of the debug unit are not incorporated in the main documentation. The top level interface is an IEEE 1149.1 compliant JTAG Test Access port. It implements the reference JTAG Debug Transport Module documented in Section 6.1 of the RISC-V Debug Interface, version 0.13.2.

The RISC-V Debug Interface has many optional features. Those enabled for the CORE-V MCU are documented in the PULP Platform Debug Unit.

Building C header files

$ make sw The resulting header files are located in ./sw

Running Modelsim/Questasim

$ make buildsim sim The 'make buildsim' creates a work library in build/openhwgroup.orgsystemscore-v-mcu_0/sim-modelsim, and then 'make sim' runs the simulation.

The test bench used by the simulation is 'corevmcu_tb.sv'

The resulting header files are located in ./sw

Experimental fuseSoC Support

Run Verilator lint target:

fusesoc --cores-root . run --target=lint --setup --build openhwgroup.org:systems:core-v-mcu

To build Verilator as a library which can be linked into other tools (such as the debug server):

fusesoc --cores-root . run --target=model-lib --setup --build openhwgroup.org:systems:core-v-mcu

The library will be in the obj_dir subdirectory of the work root.

Once can sanity check the top-level using QuestaSim:

fusesoc --cores-root . run --target=sim --setup --build --run openhwgroup.org:systems:core-v-mcu

Contributing: Pre-commit checks

If you are submitting a pull-request, it will be subject to pre-commit checks. The two that most likely cause problems are the Verilator Lint check and the Verible format check.

Verilator model library

The system will run fusesoc --cores-root . run --target=model-lib --setup --build openhwgroup.org:systems:core-v-mcu If your changes introduce any Verilator errors, you either need to fix these, or, if appropriate, add a rule to ignore them to rtl/core-v-mcu/verilator.waiver.

This will create the Verilator library Vcore_v_mcu_wrapper__ALL.a in build/openhwgroup.org_systems_core-v-mcu_0/model-lib-verilator/obj_dir.

Note that when you use this library to build an application you will need to ensure that the directory build/openhwgroup.org_systems_core-v-mcu_0/model-lib-verilator/mem_init is either symbolically linked or copied to the directory where the application will run. The model will load ROM images from this directory.

Note. The model is compiled at optimization level -O3, since performance is of importance with the likely applications, and with -fPIC, so it is suitable for inclusion in shared object libraries.

Verilator lint check

The system will run fusesoc --cores-root . run --target=lint --setup --build openhwgroup.org:systems:core-v-mcu If your changes introduce any more Verilator lint warnings, you either need to fix these, or, if appropriate, add a rule to ignore them to rtl/core-v-mcu/verilator.waiver.

Verible format check

Standard formating is enforced by Verible. The command used is util/format-verible at the top level of the repository, which will correct the format of any file. The check will fail if any file is changed.

Two important things to note.

  1. If you do not have Verible installed (which is likely), then util/format-verible will silently do nothing.

  2. You must install the correct version of Verible, currently v0.0-3410-g398a8505. Chips Alliance has prebuilt versions. The version may change in the future. In the event of the check failing, the details with the failure will tell you which version was used.

References

  1. Schiavone, Pasquale Davide, et al. "Quentin: an ultra-low-power pulpissimo soc in 22nm fdx." 2018 IEEE SOI-3D-Subthreshold Microelectronics Technology Unified Conference (S3S). IEEE, 2018.

  2. Schiavone, Pasquale Davide, et al. "Arnold: An eFPGA-Augmented RISC-V SoC for Flexible and Low-Power IoT End Nodes." IEEE Transactions on Very Large Scale Integration (VLSI) Systems 29.4 (2021): 677-690.

Owner

  • Name: OpenHW Group
  • Login: openhwgroup
  • Kind: organization
  • Email: info@openhwgroup.org
  • Location: Ottawa, Ontario, Canada

Citation (CITATION.cff)

cff-version: 1.2.0
message: "Please cite core-v-mcu as below."
authors:
- family-names: "Schiavone"
  given-names: "Pasquale Davide"
- family-names: "Rossi"
  given-names: "Davide"
- family-names: "Pullini"
  given-names: "Antonio"
- family-names: "Di Mauro"
  given-names: "Alfio"
- family-names: "Conti"
  given-names: "Francesco"
- family-names: "Benini"
  given-names: "Luca"
title: "Quentin: an ultra-low-power pulpissimo soc in 22nm fdx"
doi: 10.1109/S3S.2018.8640145
date-released: 2019-02-14
url: "https://ieeexplore.ieee.org/document/8640145"
preferred-citation:
authors:
- family-names: "Schiavone"
  given-names: "Pasquale Davide"
- family-names: "Rossi"
  given-names: "Davide"
- family-names: "Di Mauro"
  given-names: "Alfio"
- family-names: "Gurkaynak"
  given-names: "Frank"
- family-names: "Saxe"
  given-names: "Timothy"
- family-names: "Wang"
  given-names: "Mao"
- family-names: "Yap"
  given-names: "Ket Chong"
- family-names: "Benini"
  given-names: "Luca"
journal: "IEEE Transactions on Very Large Scale Integration (VLSI) Systems" 
title: "Arnold: An eFPGA-Augmented RISC-V SoC for Flexible and Low-Power IoT End Nodes"
doi: 10.1109/TVLSI.2021.3058162
date-released: 2021-03-04
url: "https://ieeexplore.ieee.org/document/9369856"

GitHub Events

Total
  • Issues event: 7
  • Watch event: 14
  • Issue comment event: 40
  • Push event: 5
  • Pull request review event: 39
  • Pull request review comment event: 39
  • Pull request event: 10
  • Fork event: 13
Last Year
  • Issues event: 7
  • Watch event: 14
  • Issue comment event: 40
  • Push event: 5
  • Pull request review event: 39
  • Pull request review comment event: 39
  • Pull request event: 10
  • Fork event: 13

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 55
  • Total pull requests: 58
  • Average time to close issues: 24 days
  • Average time to close pull requests: 20 days
  • Total issue authors: 28
  • Total pull request authors: 10
  • Average comments per issue: 2.96
  • Average comments per pull request: 1.19
  • Merged pull requests: 35
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 5
  • Pull requests: 8
  • Average time to close issues: about 14 hours
  • Average time to close pull requests: 10 days
  • Issue authors: 4
  • Pull request authors: 3
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.5
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • DBees (17)
  • MikeOpenHWGroup (6)
  • mbaykenar (3)
  • WazaAbdulkadir (3)
  • cst-aditya (2)
  • jeremybennett (2)
  • BaoBao-zhu (1)
  • mertkorkut (1)
  • athurwo (1)
  • chanduputta (1)
  • cst-ayushm (1)
  • davideschiavone (1)
  • kyeoh2 (1)
  • datum-dpoulin (1)
  • kangliyu1 (1)
Pull Request Authors
  • MikeOpenHWGroup (28)
  • cst-jayesht (5)
  • gmartin102 (5)
  • DBees (4)
  • suppamax (3)
  • jeremybennett (2)
  • cst-rameez (2)
  • tutatis7 (2)
  • davideschiavone (2)
Top Labels
Issue Labels
documentation (22) task (19) question (5) bug (4) wontfix (2) lint (1) Gates: V1.0.0 Tape-out (1) help wanted (1) clean up (1) NextRelease (1) Resolved (1) enhancement (1) fpga (1) software (1) good first issue (1)
Pull Request Labels
documentation (6) Do Not Merge (5) bug (1) CI (1)

Dependencies

docs/requirements.txt pypi
  • recommonmark *
  • sphinx *
  • sphinx_markdown_tables *
  • sphinx_rtd_theme *
python-requirements.txt pypi
  • fusesoc *
  • gitpython *
  • hjson *
  • pyyaml *
  • sphinx *
  • yamlfmt *
rtl/vendor/openhwgroup_cv32e40p/docs/requirements.txt pypi
  • recommonmark *
  • sphinx *
  • sphinx-rtd-theme *
  • sphinxcontrib-svg2pdfconverter *
tests/sw-based-tests/requirements.txt pypi
  • recommonmark *
  • sphinx *
  • sphinx_markdown_tables *
  • sphinx_rtd_theme *
.github/workflows/aws.yml actions
  • aws-actions/configure-aws-credentials v1 composite
  • zarubaf/aws-codebuild-run-build master composite
.github/workflows/ci.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/lint.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite