In our research group, we develop the Spade Hardware Description Language. A software-inspired HDL that uses modern programming language features to make it faster, easier and less error prone to develop digital hardware.
We are looking for motivated students to help out with this project, and this work can take many forms depending on what you are interested in:
- Development of the language and compiler itself
- Development of user facing tools around the language
- Improving the dependency management system
- Build an auto-formatter like
rustfmtandclang-format - Add functionality to the language server protocol implementation for better editor integration
- Build hardware with the language
- Develop libraries for common hardware modules like serial interfaces, caches, buses etc.
- Build designs in Spade and other languages to benchmark the language and find missing gaps
- Setting up developer facing infrastructure
- Build a system like Crater to test new compilers against existing code
- Set up fuzz testing for the compiler
- Automate documentation generation for libraries
- Your own ideas!
The description is intentionally broad: there are plenty of opportunities for interesting work, whether you want to learn how the internals of a compiler work, learn more about hardware development, build developer infrastructure, or simply want to help build a world where no hardware developer is subjected to Verilog.
The Spade compiler and its surrounding tools are written in Rust, so for working on the software part, experience with it is very useful but not strictly necessary. The language is also heavily inspired by Rust, so knowing Rust can be helpful for projects involving building something with Spade, but we are also very interested in finding gaps in the language and documentation for people coming from a hardware background without Rust experience! It is also worth pointing out that we have a no LLM policy for contributions to Spade, so you get to work on a project that values learning new things, solid engineering practices, and is built by and for humans.
If this sounds interesting to you and you want to learn more or have ideas for something you would like to work on, please reach out!