From abecfadf45aab74c21700d5ed8889e3c0b168f28 Mon Sep 17 00:00:00 2001 From: Christiaan Baaij Date: Tue, 2 Mar 2010 13:03:48 +0100 Subject: [PATCH] Update piece about state to show relation between the run function and the statefull descriptions --- clash.bib | 18 ++++++++++++++++++ "c\316\273ash.lhs" | 12 +++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/clash.bib b/clash.bib index f3aeaa5..5bec913 100644 --- a/clash.bib +++ b/clash.bib @@ -341,6 +341,24 @@ timestamp = {2010.02.24} } +@INPROCEEDINGS{Sulzmann2007, + author = {Sulzmann, Martin and Chakravarty, Manuel M. T. and Jones, Simon Peyton + and Donnelly, Kevin}, + title = {{System F with Type Equality Coercions}}, + booktitle = {{TLDI '07: Proceedings of the 2007 ACM SIGPLAN international workshop + on Types in languages design and implementation, Nice, France}}, + year = {2007}, + pages = {53--66}, + address = {{New York, NY, USA}}, + month = {January}, + publisher = {{ACM}}, + doi = {http://doi.acm.org/10.1145/1190315.1190324}, + isbn = {1-59593-393-X}, + location = {Nice, Nice, France}, + owner = {darchon}, + timestamp = {2009.10.23} +} + @ELECTRONIC{ghc, author = {{The GHC Team}}, title = {{The Glasgow Haskell Compiler}}, diff --git "a/c\316\273ash.lhs" "b/c\316\273ash.lhs" index 4c7e680..85709be 100644 --- "a/c\316\273ash.lhs" +++ "b/c\316\273ash.lhs" @@ -950,7 +950,7 @@ circuit~\cite{reductioncircuit} for floating point numbers. expression, that adds one to every element of a vector: \begin{code} - map ((+) 1) xs + map (+ 1) xs \end{code} Here, the expression \hs{(+) 1} is the partial application of the @@ -1041,8 +1041,10 @@ circuit~\cite{reductioncircuit} for floating point numbers. first input value, \hs{i}. The result is the first output value, \hs{o}, and the updated state \hs{s'}. The next iteration of the \hs{run} function is then called with the updated state, \hs{s'}, and the rest of the - inputs, \hs{inps}. Each value in the input list corresponds to exactly one - cycle of the (implicit) clock. + inputs, \hs{inps}. It is assumed that there is one input per clock cycle. + Also note how the order of the input, output, and state in the \hs{run} + function corresponds with the order of the input, output and state of the + \hs{macS} function described earlier. As both the \hs{run} function, the hardware description, and the test inputs are plain Haskell, the complete simulation can be compiled to an @@ -1052,7 +1054,7 @@ circuit~\cite{reductioncircuit} for floating point numbers. simulation, where the executable binary has an additional simulation speed bonus in case there is a large set of test inputs. -\section{\CLaSH\ prototype} +\section{\CLaSH\ compiler} The \CLaSH\ language as presented above can be translated to \VHDL\ using the prototype \CLaSH\ compiler. This compiler allows experimentation with @@ -1069,7 +1071,7 @@ The prototype heavily uses \GHC, the Glasgow Haskell Compiler. \Cref{img:compilerpipeline} shows the \CLaSH\ compiler pipeline. As you can see, the front-end is completely reused from \GHC, which allows the \CLaSH\ prototype to support most of the Haskell Language. The \GHC\ front-end -produces the program in the \emph{Core} format, which is a very small, +produces the program in the \emph{Core}~\cite{Sulzmann2007} format, which is a very small, functional, typed language which is relatively easy to process. The second step in the compilation process is \emph{normalization}. This -- 2.30.2