Leitfaden So wählen Sie den passenden RISC-V-Softcore

Von Sebastian Block* 7 min Lesedauer

Anbieter zum Thema

RISC-V liegt als Open-Source-Architektur bei der Entwicklung von Embedded-Systemen im Trend. Doch worauf kommt es an, wenn man einen RISC-V-Kern implementieren möchte? Für zwei IoT-Demonstratoren in Sicherheitsprojekten wurden unterschiedliche Softcores evaluiert – mit Fokus auf ISA-Extensions, RTOS-Support und Erweiterbarkeit.

Worauf kommt es bei der Wahl eines geeigneten RISC-V-Softcores an? Im folgenden Beitrag wurden fünf verschiedene IP-Cores näher in Augenschein genommen.(Bild:  frei lizenziert /  Pixabay)
Worauf kommt es bei der Wahl eines geeigneten RISC-V-Softcores an? Im folgenden Beitrag wurden fünf verschiedene IP-Cores näher in Augenschein genommen.
(Bild: frei lizenziert / Pixabay)

Für die Forschungsprojekte Apriori und Saspit wurde von uns jeweils ein auf einem RISC-V Softcore basierender Demonstrator entwickelt. Dazu mussten wir den jeweils passenden RISC-V-Softcore auswählen. Apriori (2021 - 2024) war ein französisch-deutsches Forschungsprojekt mit dem Ziel, hardwarebasierten Schutz von privaten Daten in IoT-Geräten zu gewährleisten. Saspit (2023 - 2026) ist ein deutsches Forschungsprojekt, in dem eine offene IoT-Sensorplattform entwickelt wird mit durchgängiger Sicherheitsgarantie für die Korrektheit, Integrität und Vertraulichkeit der Daten. Sie soll als Grundlage für eine einheitliche Sicherheitsarchitektur in Smart Homes dienen.

Ein kurzer Überblick zu RISC-V

RISC-V ist ein offener Standard für eine Befehlssatzarchitektur, die sich auf das Reduced Instruction Set Computer (RISC) stützt. Als offener Standard, welcher der BSD-Lizenz unterliegt, unterliegt RISC-V keinen Patenten und kann frei verwendet werden, um RISC-V Mikroprozessoren zu entwerfen, herzustellen und weiterzuentwickeln. Im Gegensatz zu RISC-V ist ARM nicht Open Source und unterliegt Lizenzkosten.

RISC-V verfolgt bei der Instruction-Set-Architecture (ISA) einen modularen Ansatz, der über Extensions gesteuert wird. Von RISC-V Prozessor zu RISC-V Prozessor können damit die unterstützten Instruktionen unterschiedlich aussehen. Eine Aufzählung der verschiedenen Privileged und Unprivileged Extensions ist in dieser Tabelle aufgeführt (PDF). Die Tabelle zeigt die Privileged, Unprivileged, Interrupt und Debug Extensions von RISC-V, mit Beschreibung und gegebenenfalls mit erweiterten Informationen.

Privileged Instructions können nur in höher privilegierten Modi ausgeführt werden. Sie dienen als Schutzschicht zwischen den verschiedenen Komponenten des Software Stacks:

Level Name Abbreviation
0 User/Application U
1 Supervisor S
2 Reserved
3 Machine M

Die Tabelle zeigt die verschiedenen Level der RISC-V Privilegen. Diese Umfassen User, Supervisor und Machine.

Dem Code, der im M-Modus ausgeführt wird, wird immer vertraut, da es sich hierbei um Low-Level Zugriffe handelt. Der M-Modus kann auch genutzt werden, um eine sichere Ausführungsumgebung auf RISC-V zu managen. U- und S-Modus sind für konventionelle Applikationen und Betriebssysteme vorgesehen. Beispiele für privilegierte Operationen sind:

  • Memory Protection
  • Access Control
  • Interrupt and Exception Handling
  • Wechseln zwischen den privilegierten Leveln

Unprivileged Instructions sind hingegen überall verfügbar. Sie behandeln Themen wie z.B.

  • Bit Manipulation
  • Vektoroperationen
  • Kryptografische Operationen

um nur drei aus einer weitaus größeren Anzahl von Einsatzbereichen zu nennen.

Auswahl des RISC-V-Softcores

Die Bestimmung eines geeigneten Softcores wird anhand von Auswahlkriterien vorgenommen. Die wesentlichen Punkte sind:

  • Unterstützte ISA-Extensions
  • RTOS Support
  • On-Chip Interfaces
  • Timer, Watchdog und Interrupts
  • Debug Support
  • Möglichkeiten der Erweiterung
  • Dokumentation
  • Aufrechterhaltung
  • Releases
  • OpenSource
  • HDL

Informationen zu den entsprechenden Punkten wurden aus Webseiten und Dokumentationen in folgenden Tabelle zusammengestellt. Diese listet die wesentlichen Kriterien für die Softcores Namens VexRiscV, VexiiRiscV, NEORV32 und Ibex/OpenTitan auf. OpenTitan und Ibex werden gemeinsam genannt, da der Ibex Core Teil des OpenTitan ist.

Kriterium VexRiscV VexiiRiscV NEORV32 Ibex /OpenTitan
ISA Extensions RV32I[M][A][F[D]][C] RV32/64 I[M][A][F][D][C][S][U][B] RV32 [I/E]   [M] [A] [C] [B] [U] [X] [Zaamo] [Zalrsc] [Zcb] [Zba][Zbb] [Zbkb] [Zbkc]   [Zbkx] [Zbs] [Zicsr] [Zicntr] [Zicond] [Zihpm] [Zifencei] [Zfinx] [Zkn]   [Zknd] [Zkne] [Zknh] [Zkt] [Zks] [Zksed][Zksh] [Zmmul] [Zxcfu] [Smpmp]   [Sdext] [Sdtrig] RV32I/E[M]C[B]   [Zicsr]
Privilege   Modes Machine, Supervisor and User   Mode Machine, Supervisor and User Mode Machine and User Mode Machine and User Mode
RTOS   Support FreeRTOS port, Zephyr port for   LiteX VexRiscV Linux FreeRTOS,   Zephyr OpenTitan: FreeRTOS, Zephyr
Timer,   Watchdog & Interrupts one 16 bits prescaler, two 16   bits timers (Murax SoC) - 64-bit machine   timer, 32-bit general purpose timer, watchdog timer Ibex Demo System: Timer
     OpenTitan: Timer, Watchdogs & Interrupts
On-Chip   Interfaces AXI4, Avalon, wishbone AXI4, Wishbone, Tilelink Wishbone b4   compatible, wrappers für AXI4-Lite & Avalon-MM, AXI4-Stream OpenTitan: TileLink - Uncached   Lightweight
I/O SoC dependent SoC dependent UART, SPI, SDI,   TWI/I2C, ONEWIRE, GPIO & PWM Ibex Demo System: UART, SPI,   GPIO, PWM
     OpenTitan: UART, SPI, SDI, I2C, GPIO, PWM
Debug GDB >> openOCD >>   JTAG GDB >> openOCD >>   JTAG OCD via JTAG,   OpenOCD, GDB, Segger Embedded Studio, Trigger Module for hardware-assisted   breakpoints Ibex Demo System &   OpenTitan:
     GDB >> openOCD >> JTAG
Sleep   Mode Support - - Yes Yes
Extensibility   for Hardware Accelerators Via Plugins Via Plugins Yes (three   flavors) OpenTitan: Via TL-UL Bus
Project   maintenance/up-to-dateness Yes Yes Yes Yes
Project   Community Effort (Number of currently open / closed Pull Requests 108/240 11/35 1/566 1361/5879
Documentation Ok Ok Very good Ibex Core: Good
     OpenTitan: Ok
Release   Process Only version tags 1.0.0 &   1.0.1 from 2018
     No Releases
No Releases Almost monthly   releases.
     Last Release in July 2025
Ibex Demo System: last release   in January 2024
     OpenTitan: last release in Octobre 2024
License MIT MIT BSD 3-Clause   "New" or "Revised" Ibex Core & OpenTitan Apache   2.0
Open-Source Yes Yes Yes Yes
Hardware   description language SpinalHDL SpinalHDL VHDL SystemVerilog

Die von uns untersuchten Softcores verfügen in der Regel über RTOS-Support. Die größten Unterschiede findet man in der Anzahl der unterstützten ISA Extensions. Auffallend sind hierbei die Extensions wie z.B. „S“ und „U“, die offiziell nicht existieren. Es sind die Einträge des Machine ISA (MISA) Registers, das die unterstützten ISAs anzeigt. Hier gibt es Unterschiede zu den ISA Extensions:

Bit Character Description
0 A Atomic extension
1 B B extension
2 C Compressed extension
3 D Double-precision floating-point extension
4 E RV32E/64E base ISA
5 F Single-precision floating-point extension
6 G Reserved
7 H Hypervisor extension
8 I RV32I/64I base ISA
9 J Reserved
10 K Reserved
11 L Reserved
12 M Integer Multiply/Divide extension
13 N Tentatively reserved for User-Level Interrupts extension
14 O Reserved
15 P Tentatively reserved for Packed-SIMD extension
16 Q Quad-precision floating-point extension
17 R Reserved
18 S Supervisor mode implemented
19 T Reserved
20 U User mode implemented
21 V Vector extension
22 W Reserved
23 X Non-standard extensions present
24 Y Reserved
25 Z Reserved

Das Register besteht aus 26 Einträgen, die alphabetisch nummeriert sind. „S“ beschreibt die Verfügbarkeit des Supervisor Modus und „U“ die vorhandene Unterstützung des User Modus.

VexRiscV – Der Softcore VexRiscV [5] zeichnet sich dadurch aus, dass er offiziell Linux und das RTOS Zephyr unterstützt. Zusätzlich ist er durch das Plugin-System vergleichsweise einfach konfigurier- und erweiterbar.

VexiiRiscVVexiiRiscV ist der Nachfolger des VexRiscV. Er unterstützt ebenfalls das Betriebssystem Linux und greift auf dasselbe Plugin-System zurück, befindet sich aktuell (August 2025) jedoch noch in der Entwicklung.

NEORV32NEORV32 unterstützt von den untersuchten Softcores die meisten RISC-V Extensions und als einziger Softcore neben nicht privilegierten auch privilegierte RISC-V Extensions. Dadurch ist auf der Security Seite bereits eine solide Grundlage gegeben, die auch durch eigene Extensions erweitert werden kann. Die Extensions können durch Konfiguration aktiviert oder deaktiviert werden, wodurch die Anpassungsfähigkeit des Cores gegeben ist. Auch über Standard-Interfaces wie Wishbone und AXI kann der Softcore mit verhältnismäßig geringem erweitert werden. Die RTOS Zephyr und FreeRTOS werden ebenfalls unterstützt.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Ibex – Der Ibex ist ein kleiner RISC-V Core, der keine Unterstützung für Floating Point Operationen unterstützt. Er kann für FPGAs oder ASICs optimiert konfiguriert werden. Ursprünglich war er unter dem Namen Zero-Riscy bekannt.

OpenTitanOpenTitan ist als Sicherheitschip konzipiert. Als RISC-V Basis dient Ibex, der um Sicherheitsmodule, Busse und andere Peripherien erweitert ist. Er unterstützt die RTOS TockOS und FreeRTOS.

Anwendungsbeispiel

In einem unserer Entwicklungsprojekte wurde als Softcore NEORV32 verwendet. Ausschlaggebend waren die gute Dokumentation, die breite Unterstützung von ISA Extensions und der RTOS Support. Ebenfalls nicht zu vernachlässigen war die Hardware Description Language (HDL) VHDL und die aktive Weiterentwicklung, zu sehen an den monatlichen Releases. In dem anderen Projekt wurde der OpenTitan ausgewählt. Zu dem damaligen Zeitpunkt (1. Quartal 2021) war der Neorv32 noch in seiner Anfangsphase und noch nicht so ausgereift wie heute. Der OpenTitan war damals in der Entwicklung viel weiter und als Sicherheitschip konzipiert, was ein riesiger Pluspunkt für unsere Projektziele war. Zudem hatten bereits Projektpartner Erfahrung mit ihm gesammelt, wodurch ein vereinfachter Einstieg gegeben war.

 (sg)

Bildergalerie

* Sebastian Block ist seit 2022 Software-Entwickler bei der Ingenics Digital GmbH in Gräfelfing bei München mit Fokus auf eingebettete Systeme und FPGAs

(ID:50551884)