c12e99d0665c6d3f172573f86993804c5670bca3
[matthijs/master-project/report.git] / Conclusions.tex
1 \chapter[chap:conclusions]{Conclusions}
2 At the end of this research, we have created a system called Cλash, which
3 allows us to translate hardware descriptions written in Haskell to be
4 translated to \VHDL, and be programmed into an FPGA.
5
6 In this research, we have seen that a functional language is well suited
7 for hardware descriptions. Function applications provide elegant notation for
8 component instantiation and the various choice mechanisms (pattern matching,
9 case expressions, if expressions) are well suited to describe conditional
10 assigment in the hardware.
11
12 Useful features from the functional perspective, like polymorphism and higher
13 order functions and expressions are also well-suited for translation to
14 hardware.
15
16 Using Haskell enabled a rapid prototype supporting complex features like
17 polymorphism and higher order values. Mostly typechecker would have been
18 complicated otherwise.
19
20 Haskell is not the perfect language. Some of the expressiveness it offers is
21 not appropriate for hardware description, but also some extra syntax sugar
22 could be useful. Lack of type-safe recursion is a big downside (but also a
23 hard problem!), perhaps improvements to Haskell will fix this.
24
25 Explicit state descriptions...
26
27 Transformation based system is suitable, allows for reasoning about the
28 system. Easy to specify transformation in the prototype. Implmentation is stil
29 lacking, especially when combined with pattern matching.
30
31 General design (frontend + desugaring into small language, transformation
32 system, simple backend) works well and should be preserved.
33
34 Usefulness of Cλash is not completely clear yet. Advanced features work
35 nicely, as well as choice, but no extensive testing (actual design projects)
36 have been done yet. Use in education possible due to prototype.
37
38 Limited to structural, single clock domain synchronous, etc.