As part of the digital architecture courses that I took at university, I had to design multiple CPUs to work with different instruction set architectures. The first processor, which I designed the digital hardware for was a MU0 processor, where I designed the full digital logic circuits in Intel’s Quartus Prime software. The second CPU I designed as part of a team was a fully functional MIPS processor, where the hardware was designed in raw Verilog. In addition, custom test benches to unit test parts of the modular design were created to run the hardware verification of the design. In the end, I had a fully functioning and synthesiable MIPS CPU that could execute machine code. As I have also designed a C compiler alongside, I effectively designed the hardware and needed software for a fully functional computer that could execute any custom programs and going through the full design process enabled me to fully understand the fundamental principles of modern computer hardware and the software that runs on it.