X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FConclusions.tex;fp=Chapters%2FConclusions.tex;h=c12e99d0665c6d3f172573f86993804c5670bca3;hp=0000000000000000000000000000000000000000;hb=901c9881c60ac1897aa8efb63d082798272e1ae7;hpb=0eb8796e904c051f3103e10629dad4a3d13bfec5 diff --git a/Chapters/Conclusions.tex b/Chapters/Conclusions.tex new file mode 100644 index 0000000..c12e99d --- /dev/null +++ b/Chapters/Conclusions.tex @@ -0,0 +1,38 @@ +\chapter[chap:conclusions]{Conclusions} +At the end of this research, we have created a system called Cλash, which +allows us to translate hardware descriptions written in Haskell to be +translated to \VHDL, and be programmed into an FPGA. + +In this research, we have seen that a functional language is well suited +for hardware descriptions. Function applications provide elegant notation for +component instantiation and the various choice mechanisms (pattern matching, +case expressions, if expressions) are well suited to describe conditional +assigment in the hardware. + +Useful features from the functional perspective, like polymorphism and higher +order functions and expressions are also well-suited for translation to +hardware. + +Using Haskell enabled a rapid prototype supporting complex features like +polymorphism and higher order values. Mostly typechecker would have been +complicated otherwise. + +Haskell is not the perfect language. Some of the expressiveness it offers is +not appropriate for hardware description, but also some extra syntax sugar +could be useful. Lack of type-safe recursion is a big downside (but also a +hard problem!), perhaps improvements to Haskell will fix this. + +Explicit state descriptions... + +Transformation based system is suitable, allows for reasoning about the +system. Easy to specify transformation in the prototype. Implmentation is stil +lacking, especially when combined with pattern matching. + +General design (frontend + desugaring into small language, transformation +system, simple backend) works well and should be preserved. + +Usefulness of Cλash is not completely clear yet. Advanced features work +nicely, as well as choice, but no extensive testing (actual design projects) +have been done yet. Use in education possible due to prototype. + +Limited to structural, single clock domain synchronous, etc.