Fantastic work, this is an amazing project. I think myself and every other Cs / electrical eng student has dreamed of this at one time or another. It's a gigantic undertaking though and it's exciting to see it done.
The implications for teaching are great too. Having this physical reference would really cut the learning curve in computer architecture.
I know in our Computer Architecture class we designed a MIPS-like processor. I don't remember what software we used, but we ran it in simulation and imaged it on to an FPGA board at the end of class. We learned how to build all the components from smaller (maybe slightly higher than transistor level logic) parts. It was a great learning experience.
Then we built a micro controller mimicking some simplified early ARM designs in year 2 (ARM was very widely used at the school, I guess the fact that Steve Furber works there played a role). Starting with ALU, decoding, etc. Was pretty awesome :)
In year 3, we built a simple VGA chip and uploaded it to an FPGA with a monitor connected to it. It could only draw rectangles, lines and circles but seeing it actually working was totally amazing. Definitely the best project while at the school.
We were using Verilog and Xilinx toolchain, and that happened at the University of Manchester.
Yeah its funny how alumni play the a role in the tech that gets used. I know that there was a lot of Xilinx in use on campus. I didn't do anything with FPGAs outside of the one class so I wondered how much of that was based on technical merit, etc. vs the fact that one of the Xilinx co-founders was a Rose-Hulman Alumn.
That class and Xilinx still haunt me. My team failed that project. Two of my three teammates couldn't grok Xilinx and gave up. That class catalyzed my decision to transfer out of Rose-Hulman.
>> Having this physical reference would really cut the learning curve in computer architecture.
I don't know, i think having a language that supports mixing high and low levels of description to describe a processor and the tools to simulate and play with it could offer much faster learning, since you could focus on learning.
Verilog and VHDL are substantial learning curves in themselves. We could really do with a newbie-friendly alternative; I don't know whether http://www.myhdl.org/ might be it.
Verilog and VHDL already simplify hardware design a lot. They seem to have a great learning curve due to the nature of hardware design.
Most people gain a lot of confidence in software development and try to design hardware like they would program a system. And then they complain that Verilog and VHDL is too complex.
Verilog in particular leads you into that trap, though. Because you can write conventional sequential-execution programs in it, and usually have to when writing testbenches. The nomenclature of "process" and "task" imply they behave like software - and they do, in the simulator. Then there are the hoops you sometimes have to jump through in order to get the synthesis to behave as you want: "reg" is not always a D-type flip flop, and is mandatory in some places where it doesn't synthesise to one.
The challenge of Verilog & VHDL is not learning the language, it's learning the paradigm of hardware & HDL. Everything is parallel, nothing is sequential unless otherwise specified.
In themselves they are very simple, basic languages.
To be fair, it's Hardware Description Language, not Hardware Synthesis Language. HDLs are mostly tools to support V&V, it's just that synthesis is the most convenient way to ensure that an implementation is consistent with the HDL description.
Yeah, I believe originally all the HDLs were intended for simulation of designs which were then implemented by hand. Neither Verilog nor VHDL was processor designed for synthesis, which is probably why it's so quirky.
The implications for teaching are great too. Having this physical reference would really cut the learning curve in computer architecture.