airisc_core_complex

Fraunhofer IMS processor core. RISC-V ISA (RV32IM) with additional peripherals for embedded AI applications and smart sensors.

https://github.com/fraunhofer-ims/airisc_core_complex

Science Score: 36.0%

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

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

Keywords

ai asic asil embedded-systems fpga functional-safety risc-v riscv safety security smart-sensors verilog
Last synced: 6 months ago · JSON representation

Repository

Fraunhofer IMS processor core. RISC-V ISA (RV32IM) with additional peripherals for embedded AI applications and smart sensors.

Basic Info
  • Host: GitHub
  • Owner: Fraunhofer-IMS
  • License: other
  • Language: Verilog
  • Default Branch: main
  • Homepage: https://www.airisc.de
  • Size: 79 MB
Statistics
  • Stars: 94
  • Watchers: 10
  • Forks: 19
  • Open Issues: 1
  • Releases: 3
Topics
ai asic asil embedded-systems fpga functional-safety risc-v riscv safety security smart-sensors verilog
Created about 4 years ago · Last pushed 8 months ago
Metadata Files
Readme License Code of conduct Citation

README.md

AIRISC

AIRISC - The RISC-V Processor for Embedded AI

Fraunhofer_IMS GitHub Pages airisc-sim_check DOI

The Fraunhofer IMS AIRISC is a RISC-V-powered ASIC- and FPGA-proven processor core optimized for embedded AI applications. It comes with a set of common peripherals together with a wide variety of optional extensions to build a customizable yet powerful system on chip (SoC).

Overview

RISC-V

MARCHID

The AIRISC Core Complex is based on a 32-bit RISC-V CPU compatible to the RISC-V unprivileged and privileged specifications also supporting the RISC-V External Debug specification. The CPU implements a Harvard architecture with a four-level pipeline and separate AHB-Lite interfaces for instruction fetch and data access. The core's RV32I_Zicsr base ISA can be further extended via a unified co-processor interface (PCPI). The default setup already includes a co-processor for integer multiplication and division operations implementing the RISC-V M ISA extension.

In addition to the CPU core itself, the AIRISC Core Complex includes common peripherals to build a complete SoC. These include a RISC-V-compatible system timer (MTIME), a serial UART interface with optional FIFO buffers, a SPI controller also with configurable FIFO buffers and acting either as host device or as peripheral, general-purpose IO ports (GPIO) and a RISC-V-compatible on-chip debugger that provides a JTAG interface to debug the core online and in-system.

The provided SoC is ready for an implementation on various FPGA boards (Digilent Nexys Video, Digilent Arty A7 and Digilent Cmod A7) and can be easily ported to other boards, platforms and technologies as the core itself is written in vendor-agnostic plain Verilog.

:bulb: For more information check out the AIRISC fact sheet (PDF) or have a look at the online documentation.

AIRISC_CORE_COMPLEX

Development

The project is developed primarily in a closed-source organization-internal repository to take advantage of sophisticated continuous integration stages that require licensed EDA tools. New releases with novel features and overall improvements will be uploaded frequently to this repository under the permissive Solderpad license. All releases include a pre-compiled FPGA bitstream as well as a pre-compiled "hello world!" application program to get started immediately.

:loudspeaker: Feedback from the community is always highly appreciated! Feel free to open a new issue or get in contact directly if you have questions, requests, ideas or any kind of problems with the provided project.

Additional Modules and Extensions

Files for ASIC synthesis, additional and advanced peripherals as well as area/energy/performance-optimized core configurations can be obtained from Fraunhofer IMS under a less permissive license. See the Contact section for more information how to get in touch. Some of the additional features are listed below:

  • RISC-V C extension - 16-bit compressed instructions for improved code density
  • RISC-V F extension - IEEE754 single-precision floating-point unit
  • Fraunhofer IMS AI extensions based on SIMD processor module (RISC-V P extension) and co-processors for computing activation functions
  • QSPI interface; also providing Execute-In-Place (XIP)
  • On-chip Physical Unclonable Function ("PUF") for advanced security functions
  • AXI-compatible bus interface to interface with off-the-shelve IP components
  • A safety version of the AIRISC prepared for ISO 26262 ASIL-D certification extended with multiple additional safety features
  • A security version of the AIRISC equipped with hardware features for encryption and decryption, secure boot and update mechanisms
  • more to come! :rocket:

AIfES Integration

AIfES

The Fraunhofer AIfES machine learning library integrates seamlessly into the AIRISC processor, which allows fast and easy development of on-the-edge AI applications such as inference of neuronal networks. In additions to the software-only AIfES libraries, Fraunhofer IMS also provides additional ISA extensions and dedicated co-processors to improve throughput resulting in optimized performance at a minimal energy budget. Hence, the combination of the AIfES libraries and the dedicated hardware accelerators (some examples are shown in section Additional Modules and Extensions) make the AIRISC a well-suited platform for embedded AI applications.

Quickstart

This section provides instructions to get you started:

  • Synthesize the core complex for a specific FPGA board.
  • Run the pre-compiled example application program using openOCD and GDB.
  • Run a simulation using the default testbench, which checks the ISA for RISC-V-compatibility as well as the general core functionality.

:bulb: See the project's Quickstart Guide for step-by-step instructions on how to program the FPGA board and how to run a GDB session executing the provided example application program.

Synthesis

Requirements for (re-)building the hardware and programming the (pre-build) bitstream:

The fpga folder provides pre-configured TCL scripts to automatically generate a Xilinx Vivado project and to program the bitstream to the FPGA. See the project's online documentation for more information on how to setup a AIRISC Xilinx Vivado project from scratch.

:bulb: Prebuilt bitstreams for the supported boards can be found in fpga/sdcard.

Exemplary Synthesis Results

  • FPGA: Xilinx Artix-7 xc7a200tsbg484-1
  • Board: Digilent Nexys Video
  • Results generated on Dec. 19th, 2022

| Name | Slice LUTs | Slice Registers | DSPs | |:-----|-----------:|----------------:|-----:| | FPGATop | 8476 | 4236 | 4 | | > clkgen (clkwiz0) | 0 | 0 | 0 | | > DUT (airi5ctopasic) | 6650 | 4167 | 4 | | >> airi5c (airi5ccore) | 4351 | 2612 | 4 | | >>> debugmodule (airi5cdebugmodule) | 168 | 214 | 0 | | >>> debugrom (airi5cdebugrom) | 20 | 75 | 0 | | >>> muldiv (airi5cmuldiv) | 581 | 337 | 4 | | >>> pipeline (airi5cpipeline) | 2963 | 1984 | 0 | | >>>> csr (airi5ccsrfile) | 394 | 425 | 0 | | >>>> ctrl (airi5cctrl) | 114 | 24 | 0 | | >>>> decoder (airi5cdecode) | 52 | 65 | 0 | | >>>> EXpipelineregs (airi5cEXpregs) | 1049 | 107 | 0 | | >>>> fetcher (airi5cfetch) | 283 | 119 | 0 | | >>>> immgen (airi5cimmgen) | 3 | 0 | 0 | | >>>> regfile (airi5cregfile) | 834 | 1024 | 0 | | >>>> srcamux (airi5csrcamux) | 64 | 0 | 0 | | >>>> thedmemlatch (airi5cdmemlatch) | 16 | 32 | 0 | | >>>> WBpipelineregs (airi5cWBpregs) | 155 | 188 | 0 | | >> dtm (airi5cdtm) | 86 | 178 | 0 | | >> gpio0 (airi5cgpio) | 43 | 33 | 0 | | >> icap1 (airi5cicap) | 0 | 2 | 0 | | >> peripheralmux (airi5cperiphmux) | 110 | 24 | 0 | | >> spi0 (airi5cspi) | 267 | 336 | 0 | | >> systemtimer (airi5ctimer) | 131 | 163 | 0 | | >> uart0 (airi5cuart) | 1664 | 819 | 0 | | > SRAM (blkmemgen_0) | 1819 | 44 | 0 |

CoreMark Benchmark

Coremark result @32 MHz on the NexysVideo FPGA Dev Board with local BlockRAM as instruction memory:

2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 7794 Total time (secs): 15 Iterations/Sec : 80 Iterations : 1200 Compiler version : GCC10.1.0 Compiler flags : -o3 Memory location : STACK seedcrc : 0xe9f5 [0]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [0]crcfinal : 0x988c Correct operation validated. See README.md for run and reporting rules.

Application

Requirements for running the hello world example program:

Requirements for (re-)building the software example (optional):

:bulb: A pre-compiled version (*.elf; including debug symbols) of the example/demo program can be found in bsp/example.

Simulation / CI

The .ci ("continuous integration") folder is used to check the core's functionality when modifying project sources. A GitHub workflow is configured to run a simulation of the default testbench using the free and open-source Icarus Verilog simulator.

Requirements for running the (CI) simulation:

You can run the simulation by yourself using the provided script:

bash airisc_core_complex/.ci$ sh iverilog_sim.sh

Contact

Fraunhofer Institute for Microelectronic Circuits and Systems, Duisburg, Germany

External Dependencies

Owner

  • Name: Fraunhofer-IMS
  • Login: Fraunhofer-IMS
  • Kind: organization

GitHub Events

Total
  • Watch event: 18
  • Push event: 1
  • Fork event: 2
Last Year
  • Watch event: 18
  • Push event: 1
  • Fork event: 2

Dependencies

.github/workflows/main.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/sw_build.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite