X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FContext.tex;h=7e620a073e3cd648459b274e23d7543ea5283c9b;hp=a12fe73e0f09260efa52a0cc04e9226a18b90909;hb=58a5aa7ca5edc07ba1070f4f4ed384b42e36e8f3;hpb=747c2ba3d485fb5c3543e9435fbd3dff59ddb3f8 diff --git a/Chapters/Context.tex b/Chapters/Context.tex index a12fe73..7e620a0 100644 --- a/Chapters/Context.tex +++ b/Chapters/Context.tex @@ -75,6 +75,18 @@ simplify program verification. \stopitemize + \section[sec:context:fhdls]{Existing functional hardware description languages} + As noted above, this path has been explored before. However, current + embedded functional hardware description languages (in particular + those using Haskell) are limited. Below a number of downsides are + sketched of the recent attempts using the Haskell language. + \cite[baaij09] has a more complete overview of these and other + languages. + + This list uses Lava and ForSyDe as examples, but tries to generalize + the conclusions to the techniques of embedding a \small{DSL} and + using Template Haskell. + \placeintermezzo{}{ \defref{Template Haskell} \startframedtext[width=8.5cm,background=box,frame=no] @@ -83,7 +95,7 @@ \stopalignment \blank[medium] - Template Haskell is an extension to the \GHC compiler that allows + Template Haskell is an extension to the \GHC\ compiler that allows a program to mark some parts to be evaluated \emph{at compile time}. These \emph{templates} can then access the abstract syntax tree (\small{AST}) of the program that is being compiled and @@ -96,18 +108,6 @@ \stopframedtext } - \section[sec:context:fhdls]{Existing functional hardware description languages} - As noted above, this path has been explored before. However, current - embedded functional hardware description languages (in particular - those using Haskell) are limited. Below a number of downsides are - sketched of the recent attempts using the Haskell language. - \cite[baaij09] has a more complete overview of these and other - languages. - - This list uses Lava and ForSyDe as examples, but tries to generalize - the conclusions to the techniques of embedding a \small{DSL} and - using Template Haskell. - \startitemize \item Not all of Haskell's constructs can be captured by embedded domain specific languages. For example, an \hs{if} or \hs{case} @@ -130,7 +130,7 @@ with an \small{EDSL} approach, it can get confusing when to use \small{TH} and when not to. \item Function hierarchies cannot be observed in an \small{EDSL}. - For example, Lava generates a single flat \VHDL architecture, + For example, Lava generates a single flat \VHDL\ architecture, which has no structure whatsoever. Even though this is strictly correct, it offers no support to the synthesis software about which parts of the system can best be placed together and makes