aboutsummaryrefslogtreecommitdiff

RISC-16

A 16-bit RISC CPU/SOC in Verilog for the ULX3S ECP5 dev board, with self-hosting software infrastructure

Why?

I've often found that the best way for me to prove to myself that I understand something, and to fill in the gaps in my understanding when I discover them, is to try to build it from scratch. This is a self-guided experiment to see just how much I understand about computers generally---dipping all the way down into hardware design and implementation, and bootstrapping an entire self-hosting operating system all on my own. I'm allowing myself to pull inspiration and documentation from outside sources, but as near as I can manage, every configurable bit in the central system will have been set either manually or by software I created using the system itself.

This has already afforded me some unique opportunities, such as dogfooding the ISA as I use it to incrementally build up an assembler for it, and exploring low-level design choices that didn't pan out the way I thought (leaving me with knowledge of why those aspects of the system changed to be the way they are).

A tentative moonshot goal of this project is to flesh it out enough both with software and user-facing peripherals that I can start using it as something approaching a daily driver laptop. This isn't necessarily saying much in terms of flashiness or performance; the Linux command line is a familiar home for me, if that conveys enough of an image. As things develop, I'm sure this goal will gradually take a more defined shape.