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.
119 TODO: Impure (stateful) example.
132 CAES Language for Synchronous Hardware
138 \item Next sheet: \clash
139 \item Hardware beschrijven in Haskell: \clash
140 \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde
142 \item Dit was de taal -$>$ compiler nodig
147 \begin{block}{Compiler pipeline}
148 $\xrightarrow{Haskell}{GHC frontend}
149 \xrightarrow{Core}{Normalization}
150 \xrightarrow{Core}{Backend}
157 \item Next sheet: \clash\ pipeline
158 \item GHC: bestaande compiler
159 \item Core: simpele functionale taal, niet minder expressief (vergelijk:
160 taal zonder synoniemen)
161 \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
162 \item Normalisatie: Nog simpeler maken.
167 \frametitle{Netlists}
172 \includegraphics[width=9.5cm]{figures/archs/Square}
175 \begin{block}{Remember \texttt{square}}
183 \item Next sheet: Square netlist
184 \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core
185 \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes)
186 \item Component heeft poorten, poorten moeten een naam hebben
187 \item Resultaat van square heeft geen naam -$>$ geen normaalvorm
192 \frametitle{Transformation}
201 func = let res = E in res
210 \begin{block}{Apply to square}
217 square x = let res = x * x in res
223 \item Next sheet: transformation example
224 \item Transformatie nodig om output poort een naam te geven
225 \item Next sheet: Apply to square
226 \item Toepassen op square, res heeft nu een naam.
231 \frametitle{Normalization system}
234 \includegraphics[width=9.5cm]{figures/norm/Normalizing}
240 \item Systeem van transformaties
241 \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan.
242 \item Next sheet: Graafnotatie
243 \item Lijnen zijn transformaties
244 \item Keuzes (meerdere uitgaande lijnen)
245 \item Alles komt onderin uit
250 \frametitle{Normalization system}
253 \includegraphics[width=8cm]{figures/norm/Incorrect}
259 \item Meerdere normaalvormen
261 \item Systeem werkt nu \emph{meestal}
262 \item verbeteringen en bewijzen nodig
267 \frametitle{Normalization system}
270 \item Easy to work with
271 \item Allows analysis
278 \item Goede scheiding
279 \item Makkelijk implementeren
280 \item Wiskundige beschrijving -$>$ bewijzen
281 \item Huidige systeem is nog incompleet
287 \frametitle{But now?}
289 \item \clash\ has a solid base
290 \item Lots of work left
297 \item \clash\ is helemaal nieuw werk
298 \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
299 niet compact, transformaties zijn nog niet (bewezen compleet).
300 \item Meer testen nodig,
309 % vim: set filetype=tex sw=2 sts=2 expandtab: