M02 Software-Defined Hardware: Digital Design in the 21st Century with Chisel
Chisel is a hardware construction language implemented as a domain specific language in Scala. Therefore, the full power of a modern programming language is available to describe hardware and, more important, hardware generators. Chisel has been developed at UC Berkeley and successfully used for several tape outs of RISC-V. Google has developed a tensor processing unit for edge devices in Chisel. Here at the Technical University of Denmark we use Chisel in the T-CREST project and in teaching digital electronics and advanced computer architecture.
In this tutorial I will give an overview of Chisel to describe circuits at the RTL level, how to use the Chisel tester functionality to test and simulate digital circuits, present how to synthesize circuits for an FPGA, and present advanced functionality of Chisel for the description of circuit generators.
The aim of the course is to get a basic understanding of a modern hardware description language and be able to describe simple circuits in Chisel. This course will give a basis to explore more advanced concepts of circuit generators written in Chisel/Scala. The intended audience is hardware designers with some background in VHDL or Verilog, but Chisel is also a good entry language for software programmers entering into hardware design (e.g., porting software algorithms to FPGAs for speedup).
Besides lecturing we will have lab sessions to describe small circuits, test them in the Chisel simulation, and run them in an FPGA.
Knowledge of a hardware description language like VHDL of Verilog is beneficial, but Chisel is also approachable by software engineers with knowledge of an object-oriented language such as Java or C#.
I provide installation instructions or a VM with all tools installed for download here: https://github.com/schoeberl/chisel-lab/blob/master/Setup.md. As this is an online tutorial you may use your own FPGA board for experiments or using Chisel just in simulation.
The book Digital Design with Chisel' accompanies the tutorial. It is available in open access at https://github.com/schoeberl/chisel-book