Write a Blog >>
ICFP 2020
Thu 20 - Fri 28 August 2020

Have you ever considered designing and implementing a piece of digital hardware, such as an accelerator on an attached FPGA for a complex computation (Machine Learning, Computer Vision, …), or just for fun, but were afraid that hardware design was too far from your wheelhouse?

In this tutorial we hope to leverage your knowledge of Haskell to demystify this, using a lecture + demonstration format which you can follow along on your laptop during the tutorial. We will use Bluespec BH, which is a high-level hardware design language using Haskell syntax and types. BH and its sibling BSV are mature, industrial-strength hardware design languages, with over 20 years of development; they have been used to design complex components in commercial shipping chips. The ‘bsc’ tool for compiling BH and BSV to Verilog was open-sourced in January 2020.

We will start with a simple “Hello World!” example, but rapidly climb through the gears to end with a complete, Linux-capable RISC-V CPU controlling a pipelined memory-to-memory array-sorting accelerator (all the materials for this are open-source).

For background preparation we only assume you know Haskell, and perhaps nothing about hardware design. If you wish to follow along on your laptop, please pre-install the following tools:

  • The ‘bsc’ compiler from here.

  • The open-source Verilog simulator ‘verilator’ from here or (less preferable) the open-source Verilog simulator ‘IVerilog’, available standardly in common package installers)

  • The open-source waveform viewer ‘gtkwave’ (available standardly in common package installers)

Before, and at, the tutorial, we will publicize a web site with all the tutorial-specific materials (if you want a link a little earlier, kindly contact the instructor by email). All the materials are free and open-source.

At the end of the tutorial, we hope you will:

  • understand how a Haskell-based language (Haskell syntax, Haskell types) can be used to describe complex hardware system STRUCTURES, and how ‘Guarded Atomic Actions’ (rewrite rules) can be used to describe complex hardware system BEHAVIOR in a composable way (and also enabling formal verification).

  • feel “I can do this!”, i.e., that you can read and modify the open-source designs shown in the tutorial, or even create your own hardware designs.

Sun 23 Aug

Displayed time zone: Eastern Time (US & Canada) change

14:00 - 17:30
Designing Hardware Systems and Accelerators with Open-Source Bluespec HaskellTutorials at Tutorials 2


Designing Hardware Systems and Accelerators with Open-Source Bluespec Haskell
Rishiyur Nikhil Bluespec, Inc.