You cannot register anymore for this webinar

Circuit design in Haskell/Clash

You can view this webinar from your computer, tablet or mobile phone.

Clash (https://clash-lang.org/) is a methodology for the design of digital circuits based on the functional programming language Haskell (https://haskell.org). Because of this basis, both a model of an application and its implementation as a digital circuit can be described in detail in Clash. Since both the model and the circuit description are executable as software, this yields an optimal testing environment. Furthermore, since an implementation can be derived from the model in a step by step fashion, remaining within the same language at every step, Clash offers a unique environment for model driven design. In addition, Clash offers a compiler that translates the resulting high-level circuit descriptions into structural (System)Verilog and/or VHDL, for the configuration of an FPGA or for the realisation of an ASIC.

However, Clash is neither HLS nor so-called behavioral synthesis for Haskell: Clash translates circuit descriptions to their maximally parallel implementation, and only introduces dflipflops and other types of sequential elements where the developer actually wrote them. Thus, with Clash, the developer is always in complete control. Using Clash for circuit design has many benefits, including but not limited to:
A) a strong type system (like VHDL) but with flexible possibilities for polymorphism as well as an extreme degree of type inference allowing you to omit nearly all type annotations;
B) clock/reset domain annotations in the types, stopping accidental domain crossings;
C) cycle delay annotations in the types ensuring different branches in pipelined design are properly balanced;
D) higher-order functions to capture parallel structures, providing programming-in-the-small benefits (no off by one errors) as well as programming-in-the-large benefits (colleagues and future selves know what structure was intended);
E) a straightforward way to define and use embedded domain specific languages.

The talk will introduce both the high-level benefits of Clash, designing circuits in the same language that you use for your high-level mathematical models, and the more day-to-day benefits highlighted earlier in this abstract; additionally, you will see some real-world (commercial and non-commercial) use cases of Clash.
Presentation by
Christiaan Baaij

Duration
45 minutes

Share this webinar