Crumb Development
This page covers the development path that the Crumb RISC-V SoC follows. This development path is live, and changes as the system matures.
This page will cover both the method of development, and each component within it. These components will get their own pages as they are developed.
High Level Diagram
CEMU ⨂ Verilator
The CEMU "⨂" Verilator section of development is a self check of the Crumb development path.
CEMU is a custom emulator of the SoC. Structured like QEMU, it aims at simple software emulation of the components. It is oriented towards decent accuracy of the system. It does not run real time, but aims to predict the exact behavior of the system.
Verilator is a System Verilog simulation utility that provides decently fast simulation of the HDL by converting Verilog into C++ code. This is used to verify the HDL behavior and timing before it reaches the FPGA, making iterating and tracing much faster.
CEMU And Verilator run in lockstep, verifying each action of the components as they execute under the system clock. The point of doing this is to narrow the gap between HDL bugs and the resulting issue. Often times a tiny miscalculation that occurs under a very specific condition may degrade the system over the period of days if not weeks, resulting in a eventual kernel panic with no pointers to the source of the issue. With both systems running in lock step, the second one acts out of line the system can be halted for analysis so that these bugs can be tracked as soon as they occur.
QEMU used to be a part of this check, but as the system grew farther away from QEMU's implementation of the RISC-V ecosystem, it was more beneficial to expand the feature set of CEMU to take on its role. The Crumb Ecosystem is much closer to that of ARMs as compared to that of SiFive and Microchip's work.
Linux
Linux, and its components, provide one of the main hurtles the system must overcome to be functional. Overcoming this hurtle is able to show the system is at the very most functional.
Linux and its components, like its distros, i.e. Debian, give the system a baseline of what must be included. Meeting Debian's Requirements means the system can run a majority of software that will reach RISC-V and make the platform much more useful.
Linux also opens us to easy access to test platforms. Berkeley's TestFloat and Torture test can easily be employed at this level to run more in debt test of the system.
Lastly, Linux is the platform kernel modules, Mesa drivers, will be implemented, allowing us to test the hardware on its target software platform and run programs to profile their performance, pushing the system to its limit.
These all come together as Linux being one of the main feed back loops for a development path, testing / debugging, as well as profiling.