RISC-V IEEE 754 Floating point Support - #450
Open
NLS-04 wants to merge 63 commits into
Open
Conversation
+ changed registerfile interface so that the register count can be set + changed registerfile interface so that the zero register can be hardwired to zero or be regular register + change is backwards compatible with existing integrations
made expression parser object orientated to be more versatile for implementations like float, double etc. and added floating point parsing and computation.
…mode and csr register constants
the currently handling of extension of all default (ss, 5s, 6s) processors advertised all extension the RVIsa is capable of, but since adding floating point support to a processor requires a separate processors design/class this default advertising must be restricted to just the extensions the specific processor supports.
…ot the architecture bitwidth
required to test floating point tests
…to be easier to test
groups coomon processors types into a family and make them variants of that family (like the 5 stage processors, where all share a common processor idea)
This was referenced Apr 27, 2026
NLS-04
marked this pull request as ready for review
April 27, 2026 11:34
…ocessor-management
Contributor
Author
|
@mortbopet You have this on your radar? |
Owner
|
@NLS-04 thank you for the ping... I unfortunately haven't "mustered the courage" to review this PR. While i appreciate the (significant) amount of work you've put into it, it is also a very large PR. I think it'd be easier to convince me to review it if you break it up into a series of atomic PRs (as much as possible, of course). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add comprehensive floating-point extension support to RISC-V processor models
This whole PR adds floating-point support to Ripes, enabling simulation of the RISC-V F single-precision floating-point (and Zicsr constrol and status register) extensions. The implementation is modular in design so that future works can build upon this PR.
What is Added
The PR consists of 3 major parts:
1. Core Floating-Point Integration
Impact
What Changed
Core Components:
ISA Extensions:
Note
For simplicity the current intergations of the floating-point unit and fcsr avaoid the integration of a dedicated CSR register file and controller by making the fcsr part of the FPU. Therefore, the FPU also manages the state of the fcsr and the acces via the Zicsr instructions.
Processor Models:
Assembler & Frontend:
.floatGNU directive support2. Overhaul of the ISA Extension Handling System
A new extension management system in Ripes is also introduced, replacing the previous string-literal based handling with a typed abstraction interface.
It is built on top of the floating-point integration work and prepares the codebase for cleaner extension composition, dependency handling, and future ISA growth.
The implementation is modular and keeps compatibility with existing processor models while migrating them to the new interface.
Impact
What Changed
Core Extension System
RISC-V Integration
MIPS Integration (just for integrity)
CLI and Runtime Integration
3. Rework of the Processor Registry, Selection Dialog and Handler
Additionally, a new processor family-variant management model in Ripes is also integrated, built on top of the floating-point and extension-system work.
Instead of selecting a processor via a flat model list, processors are now organized into families and concrete variants, with unified handling across GUI, CLI, runtime selection, settings, and tests.
This improves clarity for users, reduces duplication in processor registration, and makes adding new processor variants significantly easier.
What Changed
Processor Registry and Model Layer
Processor Selection GUI
New GUI Interface (no conflicting options/extensions selected)
New GUI Interface (F extension not available for the selected options)
New GUI Interface (options not available for the selected F extension)
Runtime and Handler Integration
CLI Integration
Settings and Persistence
Testing and Quality