From 5a523199fbe23408b90ce6ffe2137de3f82c9142 Mon Sep 17 00:00:00 2001
From: Matthijs Kooijman <matthijs@stdin.nl>
Date: Tue, 8 Dec 2009 20:46:46 +0100
Subject: [PATCH] Add abstract.

---
 Chapters/Abstract.tex | 44 +++++++++++++++++++++++++++++++++++++++++++
 Report.tex            |  1 +
 2 files changed, 45 insertions(+)
 create mode 100644 Chapters/Abstract.tex

diff --git a/Chapters/Abstract.tex b/Chapters/Abstract.tex
new file mode 100644
index 0000000..18a2b7c
--- /dev/null
+++ b/Chapters/Abstract.tex
@@ -0,0 +1,44 @@
+\title{Abstract}
+
+Functional hardware description languages have been around for a while,
+but never saw adoption on a large scale. Even though advanced features
+like higher order functions and polymorphism could enable very natural
+parameterization of hardware descriptions, the conventional hardware
+description languages \VHDL\ and Verilog are still most widely used.
+
+Cλash is a new functional hardware description language using Haskell's
+syntax and semantics. It allows structurally describing synchronous
+hardware, using normal Haskell syntax combined with a selection of
+built-in functions for operations like addition or list operations. More
+complex constructions like higher order functions and polymorphism are
+fully supported.
+
+Cλash supports stateful descriptions through explicit descriptions of a
+function's state. Every function accepts an argument containing its
+current state and returns its updated state as a part of its result.
+This means every function is called exactly once for each cycle,
+limiting Cλash to synchronous systems with a single clock domain.
+
+A prototype compiler for Cλash has been implemented that can generate
+an equivalent \VHDL\ description (using mostly structural \VHDL). The
+prototype uses the frontend (parser, typechecker, desugarer) of the
+existing \GHC\ Haskell compiler. This frontend generates a \emph{Core}
+version of the description, which is a very small typed functional
+language. A normalizing system of transformations brings this Core
+version into a normal form that has any complex parts (higher order
+functions, polymorphism, complex nested structures) removed. The normal
+form can then be easily translated to \VHDL. This design has proven to
+be very suitable. In particular the transformation system allows for
+some theoretical analysis and proofs about the compiler design itself
+(which have been left as future work).
+
+Using Haskell syntax, semantics and existing tools has enabled the rapid
+creation of the prototype, but it also became clear that Haskell is not
+the ideal language for hardware specification. The problems encountered
+could be solved with syntax extensions and major improvements to
+Haskell's dependent typing support, or be circumvented entirely by
+developing a completely new language.
+
+Cλash already allows for implementing real world systems, but has not
+seen much testing yet. There is much room for improvement, but there is
+also a clear path forward for further research.
diff --git a/Report.tex b/Report.tex
index 1559f41..576bad8 100644
--- a/Report.tex
+++ b/Report.tex
@@ -48,6 +48,7 @@
 \startfrontmatter
 \input Titlepage
 
+\input Chapters/Abstract
 \completecontent
 
 % Force a page break so the headers will not apply to the last page of
-- 
2.30.2