[rtl/core] rework CPU issue engine (area optimization) #256
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.
This PR provides a rework of the CPU's issue engine to reduce it's resource requirements.
The issue engine is located right between the pipeline front end (instruction fetch and instruction prefetch buffer) and the actual execution unit. The issue engine is responsible for decoding compressed 16-bit instruction (RISC-V
C
extension) and for handling unaligned 32-bit instructions. The changes from this PR highly reduce the size of this engine (~100 LUTs less on an Intel Cyclone IV FPGA). Note: the issue engine is only relevant if theC
ISA extension is implemented (enabled via theCPU_EXTENSION_RISCV_C
generic).Furthermore, this PR includes some minor code clean-up of the CPU's control engine.
✔️ Changes in this PR are fully backwards-compatible.