URL
https://opencores.org/ocsvn/neorv32/neorv32/trunk
Subversion Repositories neorv32
[/] [neorv32/] [trunk/] [docs/] [datasheet/] [rationale.adoc] - Rev 71
Go to most recent revision | Compare with Previous | Blame | View Log
:sectnums:=== Rationale**Why did you make this?**Processor and CPU architecture designs are fascinating things: they are the magic frontier where software meets hardware.This project started as something like a _journey_ into this magic realm to understand how things actually workdown on this very low level and evolved over time to a capable system on chip.But there is more: when I started to dive into the emerging RISC-V ecosystem I felt overwhelmed by the complexity.As a beginner it is hard to get an overview - especially when you want to setup a minimal platform to tinker with...Which core to use? How to get the right toolchain? What features do I need? How does booting work? How do Icreate an actual executable? How to get that into the hardware? How to customize things? **_Where to start???_**This project aims to provide a _simple to understand_ and _easy to use_ yet _powerful_ and _flexible_ platformthat targets FPGA and RISC-V beginners as well as advanced users.**Why a _soft-core_ processor?**As a matter of fact soft-core processors _cannot_ compete with discrete (like FPGA hard-macro) processors in termsof performance, energy efficiency and size. But they do fill a niche in FPGA design space: for example, soft-core processorsallow to implement the _control flow part_ of certain applications (e.g. communication protocol handling) usingsoftware like plain C. This provides high flexibility as software can be easily changed, re-compiled andre-uploaded again.Furthermore, the concept of flexibility applies to all aspects of a soft-core processor. The user can add_exactly_ the features that are required by the application: additional memories, custom interfaces, specializedco-processors and even user-defined instructions.**Why RISC-V?**[quote, RISC-V International, https://riscv.org/about/]____RISC-V is a free and open ISA enabling a new era of processor innovation through open standard collaboration.____Open-source is a great thing!While open-source has already become quite popular in _software_, hardware-focused projects still need to catch up.Admittedly, there has been quite a development, but mainly in terms of _platforms_ and _applications_ (soschematics, PCBs, etc.). Although processors and CPUs are the heart of almost every digital system, having a trueopen-source silicon is still a rarity. RISC-V aims to change that - and even it is _just one approach_, it helps pavingthe road for future development.Furthermore, I highly appreciate the community aspect of RISC-V. The ISA and everything beyond is developed in directcontact with the community: this includes businesses and professionals but also hobbyist, amateurs and peoplethat are just curious. Everyone can join discussions and contribute to RISC-V in their very own way.Finally, I really like the RISC-V ISA itself. It aims to be a clean, orthogonal and "intuitive" ISA thatresembles with the basic concepts of _RISC_: simple yet effective.**Yet another RISC-V core? What makes it special?**The NEORV32 is not based on another RISC-V core. It was build entirely from ground up (just following the officialISA specs). The project does not intend to replace certain RISC-V cores orjust beat existing ones like https://github.com/SpinalHDL/VexRiscv[VexRISC] in terms of performance orhttps://github.com/olofk/serv[SERV] in terms of size. It was build having a different design goal in mind.The project aims to provide _another option_ in the RISC-V / soft-core design space with a different performancevs. size trade-off and a different focus: _embrace_ concepts like documentation, platform-independence / portability,RISC-V compatibility, _customization_ and _ease of use_ (see the <<_project_key_features>> below).Furthermore, the NEORV32 pays special focus on _execution safety_ using <<_full_virtualization>>. The CPU aims toprovide fall-backs for _everything that could go wrong_. This includes malformed instruction words, privilege escalationsand even memory accesses that are checked for address space holes and deterministic response times of memory-mappeddevices. Precise exceptions allow a defined and fully-synchronized state of the CPU at every time an in every situation.
Go to most recent revision | Compare with Previous | Blame | View Log
