\frametitle{Hardware}
\begin{figure}
\centerline{
- \includegraphics<1>[height=6cm]{figures/cpus/pmiphone_boardtopbig}
- \includegraphics<2>[height=6cm]{figures/cpus/Intel_core_i7}
- \includegraphics<3>[height=6cm]{figures/cpus/6600GT_GPU}
- \includegraphics<4>[height=6cm]{figures/cpus/Altera_StratixIV}
+ \includegraphics<1>[height=8cm]{figures/cpus/pmiphone_boardtopbig}
+ \includegraphics<2>[height=8cm]{figures/cpus/Intel_core_i7}
+ \includegraphics<3>[height=8cm]{figures/cpus/6600GT_GPU}
+ \includegraphics<4>[height=8cm]{figures/cpus/Altera_StratixIV}
}
\label{img:chips}
\end{figure}
\item Binnenkant iPhone met veelvoud aan chips, Laatste Intel CPU, Nvidia Videochip, Altere FPGA
}
-\frame
-{
-\frametitle{Transistor}
-\begin{figure}
-\centerline{
-\includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor}
-\includegraphics<2>[height=8cm]{figures/transistor/worldsfastes}
-\includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315}
-}
-\label{img:chips}
-\end{figure}
-}
-\note[itemize]
-{
-\item Hardware is opgebouwd uit transistoren, simpele schakelaar
-\item Eerste transistor 60 jaar geleden, ter grootte van je hand
-\item Het word allemaal steeds kleiner
-\item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren
-}
-
-\frame
-{
-\frametitle{Transistor Counts}
-\begin{itemize}
-\item Cell (Playstation 3): 241 Million
-\item Intel Core i7: 731 Million
-\item ATI HD5800: 2150 Million
-\item Nvidia GF100 (Expected Summer 2010): 2900 Million
-\end{itemize}
-}
-\note[itemize]
-{
-\item Aantal gebruikte transistoren wordt steeds groter
-}
-
\frame
{
\frametitle{Designing Hardware}
\centerline{Design with 4 transistors}
\begin{columns}[c]
- \column{0.5\textwidth}
+ \column{0.6\textwidth}
\vspace{-0.5cm}
\begin{figure}
- \centerline{\includegraphics[height=5cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}}
+ \centerline{\includegraphics[height=6cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}}
\end{figure}
- \column{0.5\textwidth}
+ \column{0.4\textwidth}
\begin{figure}
- \centerline{\includegraphics[height=5cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}}
+ \centerline{\includegraphics[height=6cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}}
\end{figure}
\end{columns}
}
\item Links een schematisch ontwerp, Rechts de layout van de metaal lagen
}
- \frametitle{Transistors}
+\frame
+{
- \includegraphics<1>[height=6cm]{figures/transistor/hr-1sttransistor}
- \includegraphics<2>[height=6cm]{figures/transistor/worldsfastes}
- \includegraphics<3>[height=6cm]{figures/transistor/nehalem_432x315}
++\frametitle{Transistor}
+\begin{figure}
+\centerline{
++\includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor}
++\includegraphics<2>[height=8cm]{figures/transistor/worldsfastes}
++\includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315}
+}
+\label{img:chips}
+\end{figure}
+}
+\note[itemize]
+{
+\item Hardware is opgebouwd uit transistoren, simpele schakelaar
+\item Eerste transistor 60 jaar geleden, ter grootte van je hand
+\item Het word allemaal steeds kleiner
+\item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren
+}
+
\frame
{
\frametitle{Designing Hardware}
\vspace{0.5cm}
\centerline{\Large This won't work for 730 million transistors!}
\begin{figure}
- \centerline{\includegraphics[height=4cm]{figures/transistor/nehalem-core}}
+ \centerline{\includegraphics[height=7cm]{figures/transistor/nehalem-core}}
\end{figure}
}
%include talk.fmt
+ \section{Presentation Matthijs}
\title{Haskell as a higher order structural hardware description language}
\author{Matthijs Kooijman}
\date{December 14, 2009}
\frame
{
- \begin{block}{Applying the $sqrt$ function to 4}
+ \frametitle{Functions}
+
+ \begin{block}{Applying the $sqrt$ function to 4}<1>
$ sqrt(4) = 2$
\end{block}
-}
-
-\note[itemize]
-{
- \item Functional language - Math like
- \item Central: Functions
- \item Outside:
- \begin{itemize}
- \item Put arguments in (application)
- \item get result out
- \end{itemize}
- \item Inside:
- \begin{itemize}
- \item \emph{How} does the function work? (definition)
- \end{itemize}
-
- \item Next sheet: sqrt example
-}
-
-\frame
-{
- \begin{block}{A mathematical square function}
+ \begin{block}{A mathematical square function}<2->
$ f(x) = x * x$
\end{block}
- \pause
- \begin{block}{A square function in Haskell}
+ \begin{block}{A square function in Haskell}<3->
\texttt{square x = x * x}
\end{block}
}
\note[itemize]
{
+ \item Functionele taal -$>$ Wiskunde-achtig
+ \item Functies staan centraal
+ \item Next sheet: sqrt example
+ \item Van buitenaf:
+ \begin{itemize}
+ \item Stop er argumenten in (toepassen)
+ \item Krijg een resultaat terug
+ \end{itemize}
\item Next sheet: f(x) = x*x example
+ \item Van binnenaf:
+ \begin{itemize}
+ \item \emph{Hoe} werkt de functie (definitie)
+ \end{itemize}
\item Next sheet: square in Haskell
- \item No braces
- \item Next sheet: pyth in Haskell
- \item Functions can be used by other functions
+ \item Geen haakjes
}
\frame
\includegraphics[width=3cm]{figures/Pythagoras}
\end{column}
\end{columns}
+
\pause
% TODO: Alignment is weird due to mixing columns and non-columns
\begin{block}{Calculating $c$ in Haskell}
\end{block}
}
+\note[itemize]
+{
+ \item Functies kunnen door andere functies gebruikt worden
+ \item Next sheet: Pyth function
+ \item Complexere functie
+ \item Next sheet: Pyth in Haskell
+}
+
+\frame
+{
+ \begin{block}{}
+ \texttt{pyth a b = sqrt ((square a) + (square b))}
+ \end{block}
+
+ \begin{figure}
+ \includegraphics[width=9.5cm]{figures/archs/Pyth}
+ \end{figure}
+}
+
+\note[itemize]
+{
+ \item Next sheet: Pyth hardware
+ \item Argumenten -$>$ input poorten
+ \item Toepassing -$>$ component
+ \item Resultaat -$>$ output poort
+ \item (Combinatorische) hardware is continu
+}
+
+\frame
+{
+ \frametitle{Purity}
+
+ \begin{block}{Pure functions}
+ sqrt, pyth
+ \end{block}
+ \begin{block}{Impure functions}
+ random, delete\_file
+ \end{block}
+}
+
+\note[itemize]
+{
+ \item Next sheet: Purity
+ \item Wiskundige en functionele functies zijn (meestal) puur.
+ \item Zelfde argumenten -$>$ zelfde resultaten
+ \item Geen bijwerkingen.
+}
+
+\frame
+{
+ TODO: Impure (stateful) example.
+}
+
+\note[itemize]
+{
+ \item TODO
+}
+
+\frame{
+ \begin{center}
+ {\Huge \clash}
+
+ \bigskip
+ CAES language for hardware descriptions
+ \end{center}
+}
+
+\note[itemize]
+{
+ \item Next sheet: \clash
+ \item Hardware beschrijven in Haskell: \clash
+ \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde
+ functies....
+ \item Dit was de taal -$>$ compiler nodig
+}
+
+\frame
+{
+ \begin{block}{Compiler pipeline}
+ $\xrightarrow{Haskell}{GHC frontend}
+ \xrightarrow{Core}{Normalization}
+ \xrightarrow{Core}{Backend}
+ \xrightarrow{VHDL}$
+ \end{block}
+}
+
+\note[itemize]
+{
+ \item Next sheet: \clash\ pipeline
+ \item GHC: bestaande compiler
+ \item Core: simpele functionale taal, niet minder expressief (vergelijk:
+ taal zonder synoniemen)
+ \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
+ \item Normalisatie: Nog simpeler maken.
+}
+
+\frame
+{
+ \frametitle{Netlists}
+
+ \bigskip
+ \bigskip
+ \begin{figure}
+ \includegraphics[width=9.5cm]{figures/archs/Square}
+ \end{figure}
+
+ \begin{block}{Remember \texttt{square}}
+ square x = x * x
+ \end{block}
+
+}
+
+\note[itemize]
+{
+ \item Next sheet: Square netlist
+ \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core
+ \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes)
+ \item Component heeft poorten, poorten moeten een naam hebben
+ \item Resultaat van square heeft geen naam -$>$ geen normaalvorm
+}
+
+\frame
+{
+ \frametitle{Transformation}
+ \begin{columns}
+ \begin{column}{5cm}
+ func = E
+
+ \smallskip
+ \hrule
+
+ \smallskip
+ func = let res = E in res
+ \end{column}
+ \begin{column}{5cm}
+ E has no name
+ \end{column}
+ \end{columns}
+
+ \pause
+ \bigskip
+ \begin{block}{Apply to square}
+ square x = x * x
+
+ \smallskip
+ \hrule
+
+ \smallskip
+ square x = let res = x * x in res
+ \end{block}
+}
+
+\note[itemize]
+{
+ \item Next sheet: transformation example
+ \item Transformatie nodig om output poort een naam te geven
+ \item Next sheet: Apply to square
+ \item Toepassen op square, res heeft nu een naam.
+}
+
+\frame
+{
+ \frametitle{Normalization system}
+
+ \begin{figure}
+ \includegraphics[width=9.5cm]{figures/norm/Normalizing}
+ \end{figure}
+}
+
+\note[itemize]
+{
+ \item Systeem van transformaties
+ \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan.
+ \item Next sheet: Graafnotatie
+ \item Lijnen zijn transformaties
+ \item Keuzes (meerdere uitgaande lijnen)
+ \item Alles komt onderin uit
+}
+
+\frame
+{
+ \frametitle{Normalization system}
+
+ \begin{figure}
+ \includegraphics[width=8cm]{figures/norm/Incorrect}
+ \end{figure}
+}
+
+\note[itemize]
+{
+ \item Meerdere normaalvormen
+ \item Cykel
+ \item Systeem werkt nu \emph{meestal}
+ \item verbeteringen en bewijzen nodig
+}
+
+\frame
+{
+ \frametitle{Normalization system}
+
+ \begin{itemize}
+ \item Easy to work with
+ \item Allows analysis
+ \item Still complex
+ \end{itemize}
+}
+
+\note[itemize]
+{
+ \item Goede scheiding
+ \item Makkelijk implementeren
+ \item Wiskundige beschrijving -$>$ bewijzen
+ \item Huidige systeem is nog incompleet
+ \item De goede weg
+}
+
+\frame
+{
+ \frametitle{But now?}
+ \begin{itemize}
+ \item \clash\ has a solid base
+ \item Lots of work left
+ \item Needs testing!
+ \end{itemize}
+}
+
+\note[itemize]
+{
+ \item \clash\ is helemaal nieuw werk
+ \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
+ niet compact, transformaties zijn nog niet (bewezen compleet).
+ \item Meer testen nodig,
+}
+
+\frame
+{
+ {\Huge Thanks!}
+
+}
+
% vim: set filetype=tex sw=2 sts=2 expandtab: