From: Matthijs Kooijman Date: Tue, 8 Dec 2009 19:46:46 +0000 (+0100) Subject: Add abstract. X-Git-Tag: final-thesis~23 X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;ds=sidebyside;h=5a523199fbe23408b90ce6ffe2137de3f82c9142;p=matthijs%2Fmaster-project%2Freport.git Add abstract. --- diff --git a/Chapters/Abstract.tex b/Chapters/Abstract.tex new file mode 100644 index 0000000..18a2b7c --- /dev/null +++ b/Chapters/Abstract.tex @@ -0,0 +1,44 @@ +\title{Abstract} + +Functional hardware description languages have been around for a while, +but never saw adoption on a large scale. Even though advanced features +like higher order functions and polymorphism could enable very natural +parameterization of hardware descriptions, the conventional hardware +description languages \VHDL\ and Verilog are still most widely used. + +Cλash is a new functional hardware description language using Haskell's +syntax and semantics. It allows structurally describing synchronous +hardware, using normal Haskell syntax combined with a selection of +built-in functions for operations like addition or list operations. More +complex constructions like higher order functions and polymorphism are +fully supported. + +Cλash supports stateful descriptions through explicit descriptions of a +function's state. Every function accepts an argument containing its +current state and returns its updated state as a part of its result. +This means every function is called exactly once for each cycle, +limiting Cλash to synchronous systems with a single clock domain. + +A prototype compiler for Cλash has been implemented that can generate +an equivalent \VHDL\ description (using mostly structural \VHDL). The +prototype uses the frontend (parser, typechecker, desugarer) of the +existing \GHC\ Haskell compiler. This frontend generates a \emph{Core} +version of the description, which is a very small typed functional +language. A normalizing system of transformations brings this Core +version into a normal form that has any complex parts (higher order +functions, polymorphism, complex nested structures) removed. The normal +form can then be easily translated to \VHDL. This design has proven to +be very suitable. In particular the transformation system allows for +some theoretical analysis and proofs about the compiler design itself +(which have been left as future work). + +Using Haskell syntax, semantics and existing tools has enabled the rapid +creation of the prototype, but it also became clear that Haskell is not +the ideal language for hardware specification. The problems encountered +could be solved with syntax extensions and major improvements to +Haskell's dependent typing support, or be circumvented entirely by +developing a completely new language. + +Cλash already allows for implementing real world systems, but has not +seen much testing yet. There is much room for improvement, but there is +also a clear path forward for further research. diff --git a/Report.tex b/Report.tex index 1559f41..576bad8 100644 --- a/Report.tex +++ b/Report.tex @@ -48,6 +48,7 @@ \startfrontmatter \input Titlepage +\input Chapters/Abstract \completecontent % Force a page break so the headers will not apply to the last page of