X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FIntroduction.tex;h=f6e65f9f5a02a572b1ff4576ef46930f3ed6924b;hp=334b1c89d734486f1f960bb92717f767b43c5a8c;hb=a8cc8a42f676a1ab1ddca1c84b017d059610783d;hpb=7d47b9a2f541f9e16a70599f8b76bd14bd862d20 diff --git a/Chapters/Introduction.tex b/Chapters/Introduction.tex index 334b1c8..f6e65f9 100644 --- a/Chapters/Introduction.tex +++ b/Chapters/Introduction.tex @@ -7,10 +7,10 @@ connect these worlds and puts a step towards making hardware programming on the whole easier, more maintainable and generally more pleasant. This assignment has been performed in close cooperation with Christiaan -Baaij, whose Master's thesis \cite[baaij09] has been completed at the +Baaij, whose Master's thesis \cite[baaij09]\ has been completed at the same time as this thesis. Where this thesis focuses on the interpretation of the Haskell language and the compilation process, -\cite[baaij09] has a more thorough study of the field, explores more +\cite[baaij09]\ has a more thorough study of the field, explores more advanced types and provides a case study. % Use \subject to hide this section from the toc @@ -24,7 +24,7 @@ advanced types and provides a case study. As a motivating example, consider the simple functional program shown in \in{example}[ex:AndWord]\footnote[notfinalsyntax]{This example is not in the final Cλash syntax}. This is a very natural way to describe a lot of parallel not - ports, that perform a bitwise not on a bitvector. The example also shows an + ports, that perform a bit-wise not on a bit-vector. The example also shows an image of the architecture described. \startbuffer[AndWord] @@ -65,18 +65,18 @@ advanced types and provides a case study. % Draw a dotted line between the middle operations ncline(a2)(a3) "linestyle(dashed withdots)", "arrows(-)"; \stopuseMPgraphic - \placeexample[here][ex:AndWord]{Simple architecture that inverts a vector of bits.} + \placeexample[][ex:AndWord]{Simple architecture that inverts a vector of bits.} \startcombination[2*1] {\typebufferlam{AndWord}}{Haskell description of the architecture.} {\boxedgraphic{AndWord}}{The architecture described by the Haskell description.} \stopcombination Slightly more complicated is the incremental summation of - values show in \in{example}[ex:RecursiveSum]\note[notfinalsyntax]. + values shown in \in{example}[ex:RecursiveSum]\note[notfinalsyntax]. In this example we see a recursive function \hs{sum'} that recurses over a list and takes an accumulator argument that stores the sum so far. On each - step of the recusion, another number from the input vector is added to the + step of the recursion, another number from the input vector is added to the accumulator and each intermediate step returns its result. This is a nice description of a series of sequential adders that produce @@ -204,13 +204,13 @@ advanced types and provides a case study. \stopquotation \setupquotation[style=normal,spacebefore=] - We can further split this into subquestions from a hardware perspective: + We can further split this into sub-questions from a hardware perspective: \startitemize \item How can we describe a stateful design? \item How can we describe (hierarchical) structure in a design? \stopitemize - And subquestions from a functional perspective: + And sub-questions from a functional perspective: \startitemize \item How to interpret recursion in descriptions? \item How to interpret polymorphism? @@ -220,7 +220,7 @@ advanced types and provides a case study. In addition to looking at designing a hardware description language, we will also implement a prototype to test ideas. This prototype will translate hardware descriptions written in the Haskell functional language - to simple (netlist-like) hardware descriptions in the \VHDL language. The + to simple (netlist-like) hardware descriptions in the \VHDL\ language. The reasons for choosing these languages are detailed in section \in{}[sec:prototype:input] and \in{}[sec:prototype:output] respectively. @@ -236,6 +236,8 @@ advanced types and provides a case study. Systems). The lambda in the name is of course a reference to the lambda abstraction, which is an essential element of most functional languages (and is also prominent in the Haskell logo). + + Cλash is pronounced like \quote{Clash}. \stopframedtext } @@ -252,7 +254,7 @@ programming. Since we are not the first to have merged these approaches, a number of other functional hardware description languages are briefly described. -Chapter two describes the exploratory part of this research: How can we +Chapter two describes the exploratory part of this research: how can we describe hardware using a functional language and how can we use functional concepts for hardware descriptions? @@ -262,7 +264,7 @@ hardware descriptions, Haskell. The possibilities and limits of this prototype are further explored. During the creation of the prototype, it became apparent that some structured -way of doing program transformations was required. Doing ad-hoc interpretation +way of doing program transformations was required. Doing ad hoc interpretation of the hardware description proved non-scalable. These transformations and their application are the subject of the fourth chapter.