Spiral and Time Management
I chose to go for a minimal computer as my final project. It was what excited me the most and I could see how it could scale into spirals.
Since the time to complete the project was only three days I decided it was not realistic to build the CPU completely from scratch. Instead I found the open source RISC-V PicoRV32 CPU, which turned out to be perfect to build around. It is open source, has just the right amount of complexity, and enough features to allow the system to scale into later spirals. I came across it on this gihub repo.
Spiral one - Make something blink
In the first spiral I will focus on the GPIO and ROM. The goal is to create firmware that toggles the GPIO on and off, ideally connected to an LED so it visibly blinks.
The firmware will be written in RISC-V assembly and translated into HEX to be stored in the ROM.
At this stage I will also build the RAM module even though it will not yet be used.
Spiral two - Print something out
In this spiral I will add a UART peripheral to the system and start using the RAM. The benchmark will be printing "Hello world!" through the UART module.
Instead of writing the firmware in assembly I will write it in C and compile it to machine code.
Spiral three - Play something
Here I will expand the system further by adding interrupts and more complete peripheral interaction.
The benchmark will be Conway's Game of Life. It is well known and can run with very minimal input. At this stage the only input I expect to use is reset.
Spiral four - Go to Mars
This stage is still conceptual and will likely be explored after the presentation. As a stretch goal the ultimate test of the system would be running DOOM.
Time management
Given the limited time available it is only realistic to plan for completing Spiral one and Spiral two before the deadline.
If there is time left Spiral three and Spiral four will follow either before or after the presentation.
Time plan
| Day | Focus | Goal |
|---|---|---|
| Monday | Spiral one | Finish minimal system. GPIO firmware, simulation, synthesis, and place and route down to GDS. |
| Tuesday | Spiral two | Add UART and RAM. Print "Hello world!" through the UART module. |
| Wednesday | Documentation and preparation | Finalize documentation, diagrams, and prepare presentation slides. |
| Thursday | Presentation | Present the project and demonstrate the system. |