A Functional Approach to Hardware Software Co-Design
In this thesis we explore a functional approach to heterogeneous system development, with a staged hardware software co-design language embedded in Haskell, to address many of the modularity problems typically found in such systems. This staged approach enables designers to build their applications from reusable components and skeletons, while retaining control over much of the generated source code. Design exploration also benefits from the functional approach, since Haskell's type classes can be used to ensure that certain operations will be available. As a result, a developer can not only write for hardware and software in the co-design language, but she can also write generic programs that are suitable for both.
Internally, the co-design language is based on a monadic representation of imperative programs that abstracts away from its underlying statement, expression, and predicate types by establishing an interface to their respective interpreters. Programs are thus loosely coupled to their underlying types, giving a clear separation of concerns. The compilation process is expressed as a series of translations between progressively smaller typed languages, which safeguards against many common errors.
In addition to the hardware software co-design language, this thesis also introduces a language for expressing digital signal processing algorithms, using a model of synchronous data-flow that is embedded in Haskell. The language supports definitions in a functional style, reducing the gap between an algorithm's mathematical specification and its implementation. A vector language is also presented, which builds on a functional representation that guarantees fusion for arrays. Both of these languages are intended to be extensions of the co-design language, but neither one is dependent on it and can thus be used to extend other languages as well.
domain specific languages
Chalmers, Data- och informationsteknik, Funktionell programmering
Hardware Software Co-design in Haskell
SIGPLAN Notices (ACM Special Interest Group on Programming Languages),; Vol. 52(2017)p. 162-173
Artikel i vetenskaplig tidskrift
Stream Processing for Embedded Domain Specific Languages
Proceedings of the 26nd 2014 International Symposium on Implementation and Application of Functional Languages,; Vol. 01(2014)p. 1-12
Paper i proceeding
Hårdvaruacceleration av algoritmer genom funktionell programmering
Vetenskapsrådet (VR) (2011-6234), 2012-01-01 -- 2014-12-31.
Informations- och kommunikationsteknik
Opponent: Dimitrios Vytiniotis, Deep Mind, London