this not been done before?}. Using a functional language for describing hardware
is not a new idea at all. In fact, there has been research into functional
hardware description even before the conventional hardware description
this not been done before?}. Using a functional language for describing hardware
is not a new idea at all. In fact, there has been research into functional
hardware description even before the conventional hardware description
Ruby \cite[jones90]. Functional languages were not nearly as advanced
as they are now, and functional hardware description never really got
off.
Recently, there have been some renewed efforts, especially using the
Ruby \cite[jones90]. Functional languages were not nearly as advanced
as they are now, and functional hardware description never really got
off.
Recently, there have been some renewed efforts, especially using the
- Haskell functional language. Examples are Lava \cite[claessen00] (an
- \small{EDSL}) and ForSyde \cite[sander04] (an \small{EDSL} using
- Template Haskell). \cite[baaij09] has a more complete overview of the
+ Haskell functional language. Examples are Lava \cite[claessen00]\ (an
+ \small{EDSL}) and ForSyde \cite[sander04]\ (an \small{EDSL} using
+ Template Haskell). \cite[baaij09]\ has a more complete overview of the
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.
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.
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
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
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}.
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}.
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
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