2 \section{Presentation Matthijs}
3 \title{Haskell as a higher order structural hardware description language}
4 \author{Matthijs Kooijman}
5 \date{December 14, 2009}
7 \frame{\titlepage \setcounter{framenumber}{1}}
12 \frametitle{Functions}
14 \begin{block}{Applying the $sqrt$ function to 4}<1>
17 \begin{block}{A mathematical square function}<2->
21 \begin{block}{A square function in Haskell}<3->
22 \texttt{square x = x * x}
28 \item Functionele taal -$>$ Wiskunde-achtig
29 \item Functies staan centraal
30 \item Next sheet: sqrt example
33 \item Stop er argumenten in (toepassen)
34 \item Krijg een resultaat terug
36 \item Next sheet: f(x) = x*x example
39 \item \emph{Hoe} werkt de functie (definitie)
41 \item Next sheet: square in Haskell
49 \begin{block}{Pythagoras' theorem}
54 $ c = \sqrt{a^2 + b^2} $
58 \includegraphics[width=3cm]{figures/Pythagoras}
63 % TODO: Alignment is weird due to mixing columns and non-columns
64 \begin{block}{Calculating $c$ in Haskell}
65 \texttt{pyth a b = sqrt ((square a) + (square b))}
71 \item Functies kunnen door andere functies gebruikt worden
72 \item Next sheet: Pyth function
73 \item Complexere functie
74 \item Next sheet: Pyth in Haskell
80 \texttt{pyth a b = sqrt ((square a) + (square b))}
84 \includegraphics[width=9.5cm]{figures/archs/Pyth}
90 \item Next sheet: Pyth hardware
91 \item Argumenten -$>$ input poorten
92 \item Toepassing -$>$ component
93 \item Resultaat -$>$ output poort
94 \item (Combinatorische) hardware is continu
101 \begin{block}{Pure functions}
104 \begin{block}{Impure functions}
111 \item Next sheet: Purity
112 \item Wiskundige en functionele functies zijn (meestal) puur.
113 \item Zelfde argumenten -$>$ zelfde resultaten
114 \item Geen bijwerkingen.
121 TODO: Impure (stateful) example.
136 CAES Language for Synchronous Hardware
142 \item Next sheet: \clash
143 \item Hardware beschrijven in Haskell: \clash
144 \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde
146 \item Dit was de taal -$>$ compiler nodig
151 \begin{block}{Compiler pipeline}
152 $\xrightarrow{Haskell}{GHC frontend}
153 \xrightarrow{Core}{Normalization}
154 \xrightarrow{Core}{Backend}
161 \item Next sheet: \clash\ pipeline
162 \item GHC: bestaande compiler
163 \item Core: simpele functionale taal, niet minder expressief (vergelijk:
164 taal zonder synoniemen)
165 \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
166 \item Normalisatie: Nog simpeler maken.
169 \subsection{Normalization}
172 \frametitle{Netlists}
177 \includegraphics[width=9.5cm]{figures/archs/Square}
180 \begin{block}{Remember \texttt{square}}
188 \item Next sheet: Square netlist
189 \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core
190 \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes)
191 \item Component heeft poorten, poorten moeten een naam hebben
192 \item Resultaat van square heeft geen naam -$>$ geen normaalvorm
197 \frametitle{Transformation}
206 func = let res = E in res
215 \begin{block}{Apply to square}
222 square x = let res = x * x in res
228 \item Next sheet: transformation example
229 \item Transformatie nodig om output poort een naam te geven
230 \item Next sheet: Apply to square
231 \item Toepassen op square, res heeft nu een naam.
236 \frametitle{Normalization system}
239 \includegraphics[width=9.5cm]{figures/norm/Normalizing}
245 \item Systeem van transformaties
246 \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan.
247 \item Next sheet: Graafnotatie
248 \item Lijnen zijn transformaties
249 \item Keuzes (meerdere uitgaande lijnen)
250 \item Alles komt onderin uit
255 \frametitle{Normalization system}
258 \includegraphics[width=8cm]{figures/norm/Incorrect}
264 \item Meerdere normaalvormen
266 \item Systeem werkt nu \emph{meestal}
267 \item verbeteringen en bewijzen nodig
272 \frametitle{Normalization system}
275 \item Easy to work with
276 \item Allows analysis
283 \item Goede scheiding
284 \item Makkelijk implementeren
285 \item Wiskundige beschrijving -$>$ bewijzen
286 \item Huidige systeem is nog incompleet
294 \frametitle{But now?}
296 \item \clash\ has a solid base
297 \item Lots of work left
304 \item \clash\ is helemaal nieuw werk
305 \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
306 niet compact, transformaties zijn nog niet (bewezen compleet).
307 \item Meer testen nodig,
317 % vim: set filetype=tex sw=2 sts=2 expandtab: