The Foundations of Languages and Machines Lab at MIT is led by Rachit Nigam. We are building new programming languages, compilers, and tools to design and use specialized hardware. We have a strong emphasis on building artifacts and getting them used by industrial collaborators.
If you are interested in joining the lab, please review the specific instructions before contacting us.
Themes
Rethinking Hardware Description Languages
Hardware description languages (HDLs) provide low-level control, enabling precise specification of circuits. This precision comes at both a productivity and correctness cost; circuits must be defined using low-level abstractions of gates, wires, and clock cycles and require tedious, complex, and expensive tools to be verified correct. How can we design new HDLs that offer robust correctness guarantees at compile-time without sacrificing circuit efficiency?
Automatic Hardware Generation
Automatic hardware generation promises rapid creation of hardware designs from high-level descriptions. However, existing tools provide limited expressive power, have unpredictable programming models, and are plagued with bugs. How can we design new, high-level programming models for hardware generation that can describe classic micro-architectural optimizations (like speculation, out-of-order processing, multi-threading), express a wide variety of computational problems, and generate high-performance and correct circuits?
Large Scale Heterogeneous Systems
Field Programmable Gate Arrays (FPGAs) have gained significant popularity as plug-and-play accelerators in various domains, including networking, machine learning, and language runtimes. How can we design large-scale FPGA-based systems that can utilize multi-node setups, integrate with existing distributing computing frameworks, and provide a straightforward end-user programming model?