stnolting/neorv32

🖥️ A small, customizable and extensible MCU-class 32-bit RISC-V soft-core CPU and microcontroller-like SoC written in platform-independent VHDL.

VHDL

2,292

10,857 commits

updated Oct 11, 2026

See the code

README

The NEORV32 RISC-V Processor

datasheet (pdf) datasheet (html) userguide (pdf) userguide (html) doxygen license

The NEORV32 processor is a customizable microcontroller-like system on chip (SoC) built around the NEORV32 RISC-V CPU that is written in platform-independent VHDL. The processor is intended as an auxiliary controller in larger SoC designs or as tiny and customized microcontroller. The project is intended to work out of the box and targets digital design / RISC-V beginners as well as experienced users.

neorv32 block diagram

Overview

  • all-in-one package: CPU + SoC + Software Framework + Test Infrastructure

  • fully self-contained - no external dependencies

  • completely described in behavioral, platform-independent VHDL - no primitives, macros, attributes, etc.

  • technology friendly; e.g. all internal memories can be mapped to FPGA or ASIC primitives

  • extensive CPU & SoC configuration options for adapting to application requirements

  • aims to be as small as possible while being as RISC-V-compliant as possible

  • optimized for high clock frequencies to ease integration and timing closure

  • from zero to printf("hello world"); - completely open-source and documented

  • easy to use – intended to work out of the box

  • ♻️ Looking for an all-Verilog version? Have a look at the auto-conversion setup.

  • 🔍 Continuous integration to check for regressions.

  • ✔️ Passes the official RISC-V Architectural Certification Tests.

  • 📂 Exemplary setups and community projects targeting various FPGA boards and toolchains to get started.

  • 📦 The entire processor is also available as Vivado IP Block.

  • 🪁 Upstream Zephyr and FreeRTOS operating system support.

  • 🐧 Capable of running nommu-Linux.

  • 🏗️ LiteX SoC builder integration.

  • ⚙️ MicroPython port, Ada support, and Rust integration via Embassy framework.

  • 🖥️ Pre-configured Eclipse project.

  • 🏷️ The project's change log is available in CHANGELOG.md.

  • 🚀 Check out the quick links below and the User Guide to get started.

  • 📚 For detailed information see the online documentation.

Project Status

release commits-since-latest-release

The processor passes the official RISC-V Architectural Certification Tests (ACT). It can successfully run any software including CoreMark and FreeRTOS and can be synthesized for any target technology - tested on AMD, Intel, Lattice, Microchip, Gowin and Cologne Chip FPGAs. The processor has also been taped out several times as an ASIC.

Features

The project provides a full-featured microcontroller-like SoC built around the NEORV32 CPU. By using generics the design is highly configurable and allows a flexible customization to tailor the setup according to your needs. Note that all of the following SoC modules are entirely optional.

CPU Core(s)

Memories

  • tightly-coupled data and instruction memories (DMEM & IMEM) and caches (iCACHE & dCACHE)
  • serial memory controller (SMC) for transparent access to up to 2x PSRAM/flash chips (supporting XIP)
  • pre-installed bootloader (BOOTROM) with serial user interface; allows booting application code via UART, I²C or SPI flash and from SD card

Timers and Counters

  • RISC-V-compatible core-local interruptor (CLINT)
  • 32-bit general purpose timer (GPTMR) with up to 16 individual timer slices
  • watchdog timer (WDT)

Input / Output

  • standard serial interfaces: 2x UART, SPI (SPI host), SDI (SPI device), TWI (I²C host), TWD (I²C device), ONEWIRE (1-wire host)
  • up to 32 general purpose IOs (GPIO, interrupt-capable) and up to 32 individual PWM channels
  • smart LED interface (NEOLED) to directly control NeoPixel(TM) LEDs

SoC Connectivity

  • 32-bit external bus interface - Wishbone-compatible (XBUS); bridge for AXI4-compatible interfaces
  • stream link interface with independent RX and TX channels - AXI4-Stream-compatible (SLINK)

Advanced

  • true-random number generator (TRNG) based on the neoTRNG
  • custom functions subsystem (CFS) for custom tightly-coupled co-processors, accelerators or interfaces
  • direct memory access controller (DMA) for CPU-independent data transfers and conversions
  • RVFI-compatible trace port for advanced debugging, profiling or verification

Debugging

  • on-chip debugger (OCD) accessible via standard JTAG interface
  • compatible to the "RISC-V Debug Specification Version 1.0"
  • compatible with OpenOCD, GDB and Segger Embedded Studio
  • RISC-V trigger module for hardware-assisted break- and watchpoints
  • optional JTAG authentication module to implement custom security mechanisms
  • execution trace buffer (TRACEBUF)

Size and Performance

The NEORV32 processor is optimized for minimal size. However, the actual size (silicon area or FPGA resources) depends on the specific configuration. For example, an RTOS-capable setup based on a rv32imc_Zicsr_Zicntr CPU configuration requires about 2300 LUTs and 1000 FFs and can run at up to 130 MHz (implementation results for an Altera Cyclone IV E EP4CE22F17C6 FPGA). This configuration provides a CoreMark score of 95 (0.95 CoreMarks/MHz). The corresponding dual-core version achieves a CoreMark score of 190 (1.9 CoreMarks/MHz).

More information regarding the CPU performance can be found in the Data Sheet: Performance.

Getting Started

This overview provides some quick links to the most important sections of the online Data Sheet and the online User Guide.

🔍 NEORV32 Project - An Introduction

🖥️ NEORV32 Processor - The SoC

🧮 NEORV32 CPU - The Core

💾 Software Framework - The Software Ecosystem

🚀 User Guide - Getting Started

This is an open-source project that is free of charge and provided under a permissive license. See the legal section for more information.

Contributing

Contributions are very welcome! If you’d like to improve something, fix a bug, or add a feature, feel free to open an issue or submit a pull request. See how to contribute. A big thank you goes out to the community and all contributors who help improve this project:

asic
cpu
fpga
microcontroller
processor
risc-v
soc
soft-core
verilog
vhdl

stnolting/neorv32

🖥️ A small, customizable and extensible MCU-class 32-bit RISC-V soft-core CPU and microcontroller-like SoC written in platform-independent VHDL.

VHDL

2,292

10,857 commits

updated Oct 11, 2026

See the code

README

The NEORV32 RISC-V Processor

datasheet (pdf) datasheet (html) userguide (pdf) userguide (html) doxygen license

The NEORV32 processor is a customizable microcontroller-like system on chip (SoC) built around the NEORV32 RISC-V CPU that is written in platform-independent VHDL. The processor is intended as an auxiliary controller in larger SoC designs or as tiny and customized microcontroller. The project is intended to work out of the box and targets digital design / RISC-V beginners as well as experienced users.

neorv32 block diagram

Overview

  • all-in-one package: CPU + SoC + Software Framework + Test Infrastructure

  • fully self-contained - no external dependencies

  • completely described in behavioral, platform-independent VHDL - no primitives, macros, attributes, etc.

  • technology friendly; e.g. all internal memories can be mapped to FPGA or ASIC primitives

  • extensive CPU & SoC configuration options for adapting to application requirements

  • aims to be as small as possible while being as RISC-V-compliant as possible

  • optimized for high clock frequencies to ease integration and timing closure

  • from zero to printf("hello world"); - completely open-source and documented

  • easy to use – intended to work out of the box

  • ♻️ Looking for an all-Verilog version? Have a look at the auto-conversion setup.

  • 🔍 Continuous integration to check for regressions.

  • ✔️ Passes the official RISC-V Architectural Certification Tests.

  • 📂 Exemplary setups and community projects targeting various FPGA boards and toolchains to get started.

  • 📦 The entire processor is also available as Vivado IP Block.

  • 🪁 Upstream Zephyr and FreeRTOS operating system support.

  • 🐧 Capable of running nommu-Linux.

  • 🏗️ LiteX SoC builder integration.

  • ⚙️ MicroPython port, Ada support, and Rust integration via Embassy framework.

  • 🖥️ Pre-configured Eclipse project.

  • 🏷️ The project's change log is available in CHANGELOG.md.

  • 🚀 Check out the quick links below and the User Guide to get started.

  • 📚 For detailed information see the online documentation.

Project Status

release commits-since-latest-release

The processor passes the official RISC-V Architectural Certification Tests (ACT). It can successfully run any software including CoreMark and FreeRTOS and can be synthesized for any target technology - tested on AMD, Intel, Lattice, Microchip, Gowin and Cologne Chip FPGAs. The processor has also been taped out several times as an ASIC.

Features

The project provides a full-featured microcontroller-like SoC built around the NEORV32 CPU. By using generics the design is highly configurable and allows a flexible customization to tailor the setup according to your needs. Note that all of the following SoC modules are entirely optional.

CPU Core(s)

Memories

  • tightly-coupled data and instruction memories (DMEM & IMEM) and caches (iCACHE & dCACHE)
  • serial memory controller (SMC) for transparent access to up to 2x PSRAM/flash chips (supporting XIP)
  • pre-installed bootloader (BOOTROM) with serial user interface; allows booting application code via UART, I²C or SPI flash and from SD card

Timers and Counters

  • RISC-V-compatible core-local interruptor (CLINT)
  • 32-bit general purpose timer (GPTMR) with up to 16 individual timer slices
  • watchdog timer (WDT)

Input / Output

  • standard serial interfaces: 2x UART, SPI (SPI host), SDI (SPI device), TWI (I²C host), TWD (I²C device), ONEWIRE (1-wire host)
  • up to 32 general purpose IOs (GPIO, interrupt-capable) and up to 32 individual PWM channels
  • smart LED interface (NEOLED) to directly control NeoPixel(TM) LEDs

SoC Connectivity

  • 32-bit external bus interface - Wishbone-compatible (XBUS); bridge for AXI4-compatible interfaces
  • stream link interface with independent RX and TX channels - AXI4-Stream-compatible (SLINK)

Advanced

  • true-random number generator (TRNG) based on the neoTRNG
  • custom functions subsystem (CFS) for custom tightly-coupled co-processors, accelerators or interfaces
  • direct memory access controller (DMA) for CPU-independent data transfers and conversions
  • RVFI-compatible trace port for advanced debugging, profiling or verification

Debugging

  • on-chip debugger (OCD) accessible via standard JTAG interface
  • compatible to the "RISC-V Debug Specification Version 1.0"
  • compatible with OpenOCD, GDB and Segger Embedded Studio
  • RISC-V trigger module for hardware-assisted break- and watchpoints
  • optional JTAG authentication module to implement custom security mechanisms
  • execution trace buffer (TRACEBUF)

Size and Performance

The NEORV32 processor is optimized for minimal size. However, the actual size (silicon area or FPGA resources) depends on the specific configuration. For example, an RTOS-capable setup based on a rv32imc_Zicsr_Zicntr CPU configuration requires about 2300 LUTs and 1000 FFs and can run at up to 130 MHz (implementation results for an Altera Cyclone IV E EP4CE22F17C6 FPGA). This configuration provides a CoreMark score of 95 (0.95 CoreMarks/MHz). The corresponding dual-core version achieves a CoreMark score of 190 (1.9 CoreMarks/MHz).

More information regarding the CPU performance can be found in the Data Sheet: Performance.

Getting Started

This overview provides some quick links to the most important sections of the online Data Sheet and the online User Guide.

🔍 NEORV32 Project - An Introduction

🖥️ NEORV32 Processor - The SoC

🧮 NEORV32 CPU - The Core

💾 Software Framework - The Software Ecosystem

🚀 User Guide - Getting Started

This is an open-source project that is free of charge and provided under a permissive license. See the legal section for more information.

Contributing

Contributions are very welcome! If you’d like to improve something, fix a bug, or add a feature, feel free to open an issue or submit a pull request. See how to contribute. A big thank you goes out to the community and all contributors who help improve this project:

asic
cpu
fpga
microcontroller
processor
risc-v
soc
soft-core
verilog
vhdl

Significant stargazers

Daniel Mendler

1,558 followers · starred Nov 2021

Aaron Hill

553 followers · starred Aug 2021

Dániel Buga

140 followers · starred Dec 2025

Adam Greig

651 followers · starred Mar 2021