Added images
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 31 Aug 2009 18:30:04 +0000 (20:30 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 31 Aug 2009 18:30:04 +0000 (20:30 +0200)
21 files changed:
Makefile
PolyAlu.hs
PolyAlu.lhs
beamerinnerthemecaes.sty
clash-haskell09.lhs
cpualu.png [new file with mode: 0644]
cpucomplete.png [new file with mode: 0644]
cpuregisters.png [new file with mode: 0644]
demo.lhs
introduction.lhs
mealymachine2-func-red.svg [new file with mode: 0644]
mealymachine2-state-red.svg [new file with mode: 0644]
mealymachine2.svg [new file with mode: 0644]
polyaluhardware-add.png [deleted file]
polyaluhardware-reg.png [deleted file]
polyaluhardware.png [deleted file]
reducer.lhs
reducer.svg [new file with mode: 0644]
reducerschematic.png [deleted file]
simpleCPU.svg [new file with mode: 0644]
summary.lhs

index b03942e25323dda7fa399c988add5b8db5b8bb68..84b4934278085a7233f216debb51a60f210ef58d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,8 +19,9 @@ TEXSRCS = \
   preamble.tex
 
 SVGFIGURES = \
-  mealymachine.svg \
   mealymachine2.svg \
+  mealymachine2-func-red.svg \
+  mealymachine2-state-red.svg \
   simpleCPU.svg \
   reducer.svg
 
index 8752f955c2aa9044c734fa1d66866dca039d89c1..a464ffbaea172d76f2c361e6f5f77978dc1ec74c 100644 (file)
@@ -2,65 +2,57 @@
 {-#  LANGUAGE  TypeOperators, TypeFamilies, FlexibleContexts  #-}
 module Main where
 
-import qualified Prelude as P
-{-# LINE 34 "PolyAlu.lhs" #-}
 import CLasH.HardwareTypes
-{-# LINE 41 "PolyAlu.lhs" #-}
 import CLasH.Translator.Annotations
-{-# LINE 56 "PolyAlu.lhs" #-}
-type Op s a         =   a -> Vector s a -> a
+import qualified Prelude as P
+{-# LINE 51 "PolyAlu.lhs" #-}
+type Op a         =   a -> a -> a
+{-# LINE 58 "PolyAlu.lhs" #-}
+type RegBank s a    =   
+  Vector (s :+: D1) a
+type RegState s a   =   
+  State (RegBank s a)
+{-# LINE 66 "PolyAlu.lhs" #-}
+type Word = SizedInt D12
+{-# LINE 85 "PolyAlu.lhs" #-}
 type Opcode         =   Bit
-{-# LINE 64 "PolyAlu.lhs" #-}
-type RegBank s a    =   Vector (s :+: D1) a
-type RegState s a   =   State (RegBank s a)
-{-# LINE 72 "PolyAlu.lhs" #-}
-type Word           =   SizedInt D12
-{-# LINE 89 "PolyAlu.lhs" #-}
-primOp :: (a -> a -> a) -> Op s a
-primOp f a b = a `f` a
-{-# LINE 97 "PolyAlu.lhs" #-}
-vectOp :: (a -> a -> a) -> Op s a
-vectOp f a b = foldl f a b
-{-# LINE 116 "PolyAlu.lhs" #-}
 alu :: 
-  Op s a -> 
-  Op s a -> 
-  Opcode -> a -> Vector s a -> a
+  Op a -> Op a -> 
+  Opcode -> a -> a -> a
 alu op1 op2 Low    a b = op1 a b
 alu op1 op2 High   a b = op2 a b
-{-# LINE 139 "PolyAlu.lhs" #-}
-registerBank :: 
-  ((NaturalT s ,PositiveT (s :+: D1),((s :+: D1) :>: s) ~ True )) => (RegState s a) -> a -> RangedWord s ->
-  RangedWord s -> Bit -> ((RegState s a), a )
-  
-registerBank (State mem) data_in rdaddr wraddr wrenable = 
+{-# LINE 108 "PolyAlu.lhs" #-}
+registers :: 
+  ((NaturalT s ,PositiveT (s :+: D1),((s :+: D1) :>: s) ~ True )) => a -> RangedWord s ->
+  RangedWord s -> (RegState s a) -> (RegState s a, a )
+{-# LINE 116 "PolyAlu.lhs" #-}
+registers data_in rdaddr wraddr (State mem) = 
   ((State mem'), data_out)
   where
-    data_out  =   mem!rdaddr
-    mem'  | wrenable == Low    = mem
-          | otherwise          = replace mem wraddr data_in
-{-# LINE 167 "PolyAlu.lhs" #-}
-{-# ANN actual_cpu TopEntity#-}
-actual_cpu :: 
-  (Opcode, Word, Vector D4 Word, RangedWord D9, 
-  RangedWord D9, Bit) ->  RegState D9 Word ->
-  (RegState D9 Word, Word)
+    data_out  = mem!rdaddr
+    mem'      = replace mem wraddr data_in
+{-# LINE 138 "PolyAlu.lhs" #-}
+type Instruction = (Opcode, Word, RangedWord D9, RangedWord D9)
+{-# LINE 142 "PolyAlu.lhs" #-}
+{-# ANN cpu TopEntity#-}
+cpu :: 
+  Instruction -> RegState D9 Word -> (RegState D9 Word, Word)
 
-actual_cpu (opc, a ,b, rdaddr, wraddr, wren) ram = (ram', alu_out)
+cpu (opc, d, rdaddr, wraddr) ram = (ram', alu_out)
   where
-    alu_out = alu (primOp (+)) (vectOp (+)) opc ram_out b
-    (ram',ram_out)  = registerBank ram a rdaddr wraddr wren
-{-# LINE 191 "PolyAlu.lhs" #-}
+    alu_out         = alu (+) (-) opc d ram_out
+    (ram',ram_out)  = registers alu_out rdaddr wraddr ram
+{-# LINE 165 "PolyAlu.lhs" #-}
 {-# ANN initstate InitState#-}
 initstate :: RegState D9 Word
 initstate = State (copy (0 :: Word))  
   
 {-# ANN program TestInput#-}
-program :: [(Opcode, Word, Vector D4 Word, RangedWord D9, RangedWord D9, Bit)]
+program :: [Instruction]
 program =
-  [ (Low, 4, copy (0), 0, 0, High) --  Write 4 to Reg0, out = 0
-  , (Low, 3, copy (0), 0, 1, High) --  Write 3 to Reg1, out = 8
-  , (High,0, copy (3), 1, 0, Low)  --  No Write       , out = 15
+  [ (Low, 4, 0, 0) --  Write 4   to Reg0
+  , (Low, 3, 0, 1) --  Write 3+4 to Reg1
+  , (High,8, 1, 2) --  Write 8-7 to Reg2
   ]
 
 run func state [] = []
@@ -73,6 +65,6 @@ main :: IO ()
 main = do
   let input = program
   let istate = initstate
-  let output = run actual_cpu istate input
+  let output = run cpu istate input
   mapM_ (\x -> putStr $ ("(" P.++ (show x) P.++ ")\n")) output
   return ()
index 547f0951baa8e27c4f431690603e4470279b653a..c0d196d01d4d0137b1b71aebf824ffd50cc45560 100644 (file)
@@ -4,6 +4,8 @@
 {-# LANGUAGE  TypeOperators, TypeFamilies, FlexibleContexts #-}
 module Main where
 
+import CLasH.HardwareTypes
+import CLasH.Translator.Annotations
 import qualified Prelude as P
 \end{code}
 %endif
@@ -12,12 +14,18 @@ import qualified Prelude as P
 \subsection{Introduction}
 \frame
 {
-\frametitle{Small Use Case}\pause
-TODO: Plaatje
+\frametitle{Small Use Case}
+\begin{columns}[l]
+\column{0.5\textwidth}
+\begin{figure}
+\includegraphics[width=4.75cm]{simpleCPU}
+\end{figure}
+\column{0.5\textwidth}
 \begin{itemize}
-  \item Polymorphic, Higher-Order CPU\pause
+  \item Polymorphic, Higher-Order CPU
   \item Use of state will be simple
 \end{itemize}
+\end{columns}
 }\note[itemize]{
 \item Small "toy"-example of what can be done in \clash{}
 \item Show what can be translated to Hardware
@@ -29,21 +37,36 @@ TODO: Plaatje
 \frame
 {
 \frametitle{Type definitions}\pause
-TODO: Plaatje van de ALU
+\begin{columns}[l]
+\column{0.5\textwidth}
+\begin{figure}
+\includegraphics[width=4.75cm]{simpleCPU}
+\end{figure}
+\column{0.5\textwidth}
+\vspace{2em}
+
 First we define some ALU types:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
 type Op a         =   a -> a -> a
 \end{code}
 \end{beamercolorbox}\pause
-
+\vspace{2.5em}
 And some Register types:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
-type RegBank s a    =   Vector (s :+: D1) a
-type RegState s a   =   State (RegBank s a)
+type RegBank s a    =   
+  Vector (s :+: D1) a
+type RegState s a   =   
+  State (RegBank s a)
 \end{code}
-\end{beamercolorbox}\pause
+\end{beamercolorbox}
+%if style == newcode
+\begin{code}
+type Word = SizedInt D12
+\end{code}
+%endif
+\end{columns}
 }\note[itemize]{
 \item The first type is already polymorphic in input / output type
 \item State has to be of the State type to be recognized as such
@@ -53,6 +76,9 @@ type RegState s a   =   State (RegBank s a)
 \frame
 {
 \frametitle{Simple ALU}
+\begin{figure}
+\includegraphics[width=5.25cm,trim=0mm 5.5cm 0mm 1cm, clip=true]{simpleCPU}
+\end{figure}
 Abstract ALU definition:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
@@ -64,9 +90,6 @@ alu op1 op2 {-"{\color<2>[rgb]{1,0,0}"-}Low{-"}"-}    a b = op1 a b
 alu op1 op2 {-"{\color<2>[rgb]{1,0,0}"-}High{-"}"-}   a b = op2 a b
 \end{code}
 \end{beamercolorbox}
-\begin{itemize}
-\uncover<2->{\item We support Pattern Matching}
-\end{itemize}
 }\note[itemize]{
 \item Alu is both higher-order, and polymorphic
 \item Two parameters are "compile time", others are "runtime"
@@ -77,24 +100,26 @@ alu op1 op2 {-"{\color<2>[rgb]{1,0,0}"-}High{-"}"-}   a b = op2 a b
 \frame
 {
 \frametitle{Register Bank}
-Make a simple register bank:
-\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
-TODO: Hide type sig
+\begin{figure}
+\includegraphics[width=5.25cm,trim=0mm 0.4cm 0mm 6.2cm, clip=true]{simpleCPU}
+\end{figure}
+%if style == newcode
 \begin{code}
-registerBank :: 
+registers :: 
   CXT((NaturalT s ,PositiveT (s :+: D1),((s :+: D1) :>: s) ~ True )) => a -> RangedWord s ->
-  RangedWord s -> Bool -> (RegState s a) -> ((RegState s a), a )
-  
-registerBank data_in rdaddr wraddr (State mem) = 
+  RangedWord s -> (RegState s a) -> (RegState s a, a )
+\end{code}
+%endif
+A simple register bank:
+\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
+\begin{code}
+registers data_in rdaddr wraddr (State mem) = 
   ((State mem'), data_out)
   where
     data_out  = mem!rdaddr
     mem'      = replace mem wraddr data_in
 \end{code}
 \end{beamercolorbox}
-\begin{itemize}
-\uncover<2->{\item We support Guards}
-\end{itemize}
 }\note[itemize]{
 \item RangedWord runs from 0 to the upper bound
 \item mem is statefull
@@ -108,21 +133,25 @@ registerBank data_in rdaddr wraddr (State mem) =
 \frametitle{Simple CPU}
 Combining ALU and register bank:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
-TODO: Hide Instruction type?
+%if style == newcode
+\begin{code}
+type Instruction = (Opcode, Word, RangedWord D9, RangedWord D9)
+\end{code}
+%endif
 \begin{code}
-type Instruction = (Opcode, Word, RangedWord D9, RangedWord D9) ->  RegState D9 Word ->
-{-"{\color<2>[rgb]{1,0,0}"-}ANN(actual_cpu TopEntity){-"}"-}
-actual_cpu :: 
+{-"{\color<2>[rgb]{1,0,0}"-}ANN(cpu TopEntity){-"}"-}
+cpu :: 
   Instruction -> RegState D9 Word -> (RegState D9 Word, Word)
 
-actual_cpu (opc, d, rdaddr, wraddr) ram = (ram', alu_out)
+cpu (opc, d, rdaddr, wraddr) ram = (ram', alu_out)
   where
-    alu_out = alu ({-"{\color<3>[rgb]{1,0,0}"-}(+){-"}"-}) ({-"{\color<3>[rgb]{1,0,0}"-}(-){-"}"-}) opc d ram_out
-    (ram',ram_out)  = registerBank alu_out rdaddr wraddr ram
+    alu_out         = alu {-"{\color<3>[rgb]{1,0,0}"-}(+){-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}(-){-"}"-} opc d ram_out
+    (ram',ram_out)  = registers alu_out rdaddr wraddr ram
 \end{code}
 \end{beamercolorbox}
 \begin{itemize}
 \uncover<2->{\item Annotation is used to indicate top-level component}
+\uncover<3->{\item Instantiate actual operations}
 \end{itemize}
 }\note[itemize]{
 \item We use the new Annotion functionality to indicate this is the top level. TopEntity is defined by us.
@@ -138,11 +167,11 @@ initstate :: RegState D9 Word
 initstate = State (copy (0 :: Word))  
   
 ANN(program TestInput)
-program :: [(Opcode, Word, Vector D4 Word, RangedWord D9, RangedWord D9, Bit)]
+program :: [Instruction]
 program =
-  [ (Low, 4, copy (0), 0, 0, High) -- Write 4 to Reg0, out = 0
-  , (Low, 3, copy (0), 0, 1, High) -- Write 3 to Reg1, out = 8
-  , (High,0, copy (3), 1, 0, Low)  -- No Write       , out = 15
+  [ (Low, 4, 0, 0) -- Write 4   to Reg0
+  , (Low, 3, 0, 1) -- Write 3+4 to Reg1
+  , (High,8, 1, 2) -- Write 8-7 to Reg2
   ]
 
 run func state [] = []
@@ -155,7 +184,7 @@ main :: IO ()
 main = do
   let input = program
   let istate = initstate
-  let output = run actual_cpu istate input
+  let output = run cpu istate input
   mapM_ (\x -> putStr $ ("(" P.++ (show x) P.++ ")\n")) output
   return ()
 \end{code}
index 664af83ef222dab983b56551b571354494186264..580fe3c1a9d39824afb4a8209fec0af3c5ccd905 100644 (file)
 
 \makeatletter
 
+%
+%
+% The \committee command
+%
+%
+\def\committee{\@dblarg\beamer@committee}
+\long\def\beamer@committee[#1]#2{%
+  \def\beamer@temp{#2}%
+  \ifx\beamer@temp\@empty
+    \def\insertcommittee{}
+  \else
+    \def\insertcommittee{\def\inst{\beamer@committee}\def\and{\beamer@andcommittee}#2}%
+  \fi
+ \def\beamer@shortcommittee{#1}}
+\committee{}
+
+\def\beamer@instcommittee#1{{\donotcoloroutermaths$^{#1}$}\ignorespaces}
+\def\beamer@andcommittee{\\[1em]}
+
+\newcommand\insertshortcommittee[1][]{%
+  {%
+    \let\thanks=\@gobble%
+    \def\inst{\beamer@committeeother}\def\and{\beamer@andcommittee}%
+    \beamer@setupshort{#1}%
+    \beamer@insertshort{\beamer@shortcommittee}%
+  }}
+
+
 \setbeamertemplate{title page}
 {
        \begin{centering}
@@ -51,7 +79,7 @@
            \end{beamercolorbox}
                \fi
     \begin{beamercolorbox}[sep=4pt,center]{date}
-      \usebeamerfont{date}\insertdate
+      \usebeamerfont{date}\insertcommittee
     \end{beamercolorbox}
 %    {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
     \vfill
index 3f2881904a70e72e0798dc7607e07106cf2bf705..ad01d4e04ea104db4b4890600ed2bc8d947c1569 100644 (file)
@@ -6,7 +6,7 @@
 \title{\clash{}}
 \subtitle{From Haskell To Hardware}
 \author{Christiaan Baaij \& Matthijs Kooijman}
-\author{Supervisor: Jan Kuper}
+\committee{Supervisor: Jan Kuper}
 \date{September 3, 2009}
 
 \begin{document}
diff --git a/cpualu.png b/cpualu.png
new file mode 100644 (file)
index 0000000..ed1baee
Binary files /dev/null and b/cpualu.png differ
diff --git a/cpucomplete.png b/cpucomplete.png
new file mode 100644 (file)
index 0000000..dd138b2
Binary files /dev/null and b/cpucomplete.png differ
diff --git a/cpuregisters.png b/cpuregisters.png
new file mode 100644 (file)
index 0000000..977afb6
Binary files /dev/null and b/cpuregisters.png differ
index 0399cc8d0b62dfaaed5e516d71b6dff5760ab72a..61a55678c9e5bab745a67157955139fe3dfb9dfd 100644 (file)
--- a/demo.lhs
+++ b/demo.lhs
@@ -3,15 +3,23 @@
 \frame{
 \frametitle{Demo}
 \begin{itemize}
-  \item We will simulate the small CPU
-  \item Translate that CPU code to VHDL
+  \item Simulate the CPU description
+  \item Translate the CPU to VHDL
   \item Simulate the generated VHDL
-  \item See the hardware schematic of the synthesized VHDL
 \end{itemize}
 }\note[itemize]{
 \item Will show video
 }
 
+\frame{
+\frametitle{Generated Schematic}
+\begin{figure}
+\centerline{\includegraphics<1>[width=10cm]{cpucomplete}
+\includegraphics<2>[width=10cm]{cpualu}
+\includegraphics<3>[height=6cm]{cpuregisters}}
+\end{figure}
+}
+
 % 
 % \frame{
 % \frametitle{How do we use \clash{}?}
index e0a72ff95d137aebdd7126a26048a326f4c4e69c..c7b0bca887d2cd4873a66393c3253dd86c5f8a13 100644 (file)
 {
 \item We are a Computer Architectures group, this has been a Masters' project, no prior experience with Haskell.
 \item \clash{} is written in Haskell, of course
-\item \clash{} is currently meant for rapid prototyping, not verification of hardware desigs
+\item \clash{} is currently meant for rapid prototyping, not verification of hardware designs
 \item Functional languages are close to Hardware
 \item We can only translate a subset of Haskell
 \item All functions are descriptions of Mealy Machines
 }
 
-\subsection{Mealy Machine}
-\frame
-{
-\frametitle{What is a Mealy Machine again?}
-  \begin{figure}
-  \centerline{\includegraphics[width=10cm]{mealymachine}}
-  \label{img:mealymachine}
-  \end{figure}
-}
-\note[itemize]{
-\item Mealy machine bases its output on current input and previous state
-\item: TODO: Integrate this slide with the next two. First, show the picture
-with the mealyMachine type signature (and rename it to "func"). Then, show the
-run function, without type signature. Focus is on correspondence to the
-picture.
-}
+\subsection{Mealy Machine}
+\frame
+{
+\frametitle{What is a Mealy Machine again?}
+  \begin{figure}
+  \centerline{\includegraphics[width=10cm]{mealymachine}}
+  \label{img:mealymachine}
+  \end{figure}
+}
+\note[itemize]{
+\item Mealy machine bases its output on current input and previous state
+\item: TODO: Integrate this slide with the next two. First, show the picture
+with the mealyMachine type signature (and rename it to "func"). Then, show the
+run function, without type signature. Focus is on correspondence to the
+picture.
+}
 
 \frame
 {
 \frametitle{Haskell Description}
+\begin{figure}
+\centerline{\includegraphics<1>[width=6.25cm]{mealymachine2}
+\includegraphics<2>[width=6.25cm]{mealymachine2-func-red}
+\includegraphics<3>[width=6.25cm]{mealymachine2-state-red}}
+\label{img:mealymachine}
+\end{figure}
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
-mealyMachine :: 
-  InputSignals ->
-  {-"{\color<2>[rgb]{1,0,0}"-}State{-"}"-} ->
-  (State, OutputSignals)
+run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
+run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
+  where
+    ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o)  =   {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} i {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-}
+    outputs                                         =   run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} input
 \end{code}
 \end{beamercolorbox}
-\begin{itemize}
-\uncover<2->{\item Current state is part of the input}
-\uncover<3->{\item New state is part of the output}
-\end{itemize}
 }
 \note[itemize]{
 \item State is part of the function signature
 \item Both the current state, as the updated State
 }
 
-\subsection{Simulation}
 \frame
 {
-\frametitle{Simulating a Mealy Machine}
+\frametitle{Haskell Description}
+\begin{figure}
+\centerline{\includegraphics[width=6.25cm]{mealymachine2-func-red}}
+\end{figure}
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
-run func {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-} [] = []
-run func {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-} (i:input) = o:out
-  where
-    ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o)  =   func i {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-}
-    out                                             =   run func {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} input
+func :: 
+  InputSignal ->
+  State ->
+  (State, OutputSignal)
 \end{code}
 \end{beamercolorbox}
-\begin{itemize}
-\item State behaves like an accumulator
-\item Input is a (normal) list of inputs, one for each cycle
-\end{itemize}
 }
-\note[itemize]{
-\item This is just a quick example of how we can simulate the mealy machine
-\item It sort of behaves like MapAccumN
-}
-
diff --git a/mealymachine2-func-red.svg b/mealymachine2-func-red.svg
new file mode 100644 (file)
index 0000000..21a7d1b
--- /dev/null
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="447.45831"
+   height="198.21246"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="mealymachine2-func-red.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="976"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1.4274587"
+     inkscape:cx="48.337652"
+     inkscape:cy="99.106232"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 99.106232 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="380.3963 : 99.106232 : 1"
+       inkscape:persp3d-origin="190.19815 : 66.070821 : 1"
+       id="perspective10678" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         id="path3653"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path3638"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(0.6,0.6)"
+         id="path3659"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)"
+         id="path3662"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend-6"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656-0"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+  </defs>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910"
+     d="M 303.74721,25.885543 L 336.62768,25.885543" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910-4"
+     d="M 96.211374,25.885543 L 132.27382,25.885543" />
+  <text
+     style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+     xml:space="preserve"
+     id="text5424"
+     y="-38.461178"
+     x="138.99133"><tspan
+       id="tspan5426"
+       y="-38.461178"
+       x="138.99133" /></text>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7752"
+     d="M 303.74721,97.303324 L 336.62768,97.303324 L 336.62768,166.59979 L 303.74721,166.59979" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7948"
+     d="M 132.27382,166.59979 L 96.211374,166.59979 L 96.211374,97.303324 L 132.27382,97.303324" />
+  <text
+     sodipodi:linespacing="100%"
+     style="font-size:12px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text3712-5-7-1"
+     y="84.725449"
+     x="44.735474"><tspan
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Palatino;-inkscape-font-specification:Palatino"
+       id="tspan8173"
+       y="84.725449"
+       x="44.735474" /></text>
+  <rect
+     width="170.00002"
+     height="121.6148"
+     rx="5"
+     ry="5"
+     x="133.33449"
+     y="0.5"
+     id="rect3716"
+     style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
+  <text
+     x="218.82019"
+     y="64.61879"
+     id="text2417"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="218.82019"
+       y="64.61879"
+       id="tspan2421"
+       style="text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">func</tspan></text>
+  <g
+     id="g2439"
+     transform="translate(-195.59374,-232.04137)">
+    <rect
+       style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3716-8"
+       y="367.25348"
+       x="328.78696"
+       ry="4.3373775"
+       rx="5.0083094"
+       height="62.500351"
+       width="170.28253" />
+    <text
+       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+       xml:space="preserve"
+       id="text2423"
+       y="406.94183"
+       x="413.11765"><tspan
+         style="text-align:center;text-anchor:middle"
+         id="tspan2431"
+         y="406.94183"
+         x="413.11765">state</tspan></text>
+  </g>
+  <text
+     x="45.722656"
+     y="31.532804"
+     id="text10741"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="45.722656"
+       y="31.532804"
+       id="tspan10743"
+       style="text-align:center;text-anchor:middle">(i : inputs)</tspan></text>
+  <text
+     x="394.05011"
+     y="31.217451"
+     id="text10745"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="394.05011"
+       y="31.217451"
+       id="tspan10747"
+       style="text-align:center;text-anchor:middle">(o : outputs)</tspan></text>
+</svg>
diff --git a/mealymachine2-state-red.svg b/mealymachine2-state-red.svg
new file mode 100644 (file)
index 0000000..0754f35
--- /dev/null
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="447.45831"
+   height="198.21246"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="mealymachine2-state-red.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="976"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1.4274587"
+     inkscape:cx="48.337652"
+     inkscape:cy="99.106232"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 99.106232 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="380.3963 : 99.106232 : 1"
+       inkscape:persp3d-origin="190.19815 : 66.070821 : 1"
+       id="perspective10678" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         id="path3653"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path3638"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(0.6,0.6)"
+         id="path3659"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)"
+         id="path3662"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend-6"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656-0"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+  </defs>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910"
+     d="M 303.74721,25.885543 L 336.62768,25.885543" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910-4"
+     d="M 96.211374,25.885543 L 132.27382,25.885543" />
+  <text
+     style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+     xml:space="preserve"
+     id="text5424"
+     y="-38.461178"
+     x="138.99133"><tspan
+       id="tspan5426"
+       y="-38.461178"
+       x="138.99133" /></text>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7752"
+     d="M 303.74721,97.303324 L 336.62768,97.303324 L 336.62768,166.59979 L 303.74721,166.59979" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7948"
+     d="M 132.27382,166.59979 L 96.211374,166.59979 L 96.211374,97.303324 L 132.27382,97.303324" />
+  <text
+     sodipodi:linespacing="100%"
+     style="font-size:12px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text3712-5-7-1"
+     y="84.725449"
+     x="44.735474"><tspan
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Palatino;-inkscape-font-specification:Palatino"
+       id="tspan8173"
+       y="84.725449"
+       x="44.735474" /></text>
+  <rect
+     width="170.00002"
+     height="121.6148"
+     rx="5"
+     ry="5"
+     x="133.33449"
+     y="0.5"
+     id="rect3716"
+     style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
+  <text
+     x="218.82019"
+     y="64.61879"
+     id="text2417"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="218.82019"
+       y="64.61879"
+       id="tspan2421"
+       style="text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1">func</tspan></text>
+  <rect
+     width="170.28253"
+     height="62.500351"
+     rx="5.0083094"
+     ry="4.3373775"
+     x="133.19322"
+     y="135.21211"
+     id="rect3716-8"
+     style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
+  <text
+     x="217.52391"
+     y="174.90047"
+     id="text2423"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="217.52391"
+       y="174.90047"
+       id="tspan2431"
+       style="text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">state</tspan></text>
+  <text
+     x="45.722656"
+     y="31.532804"
+     id="text10741"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="45.722656"
+       y="31.532804"
+       id="tspan10743"
+       style="text-align:center;text-anchor:middle">(i : inputs)</tspan></text>
+  <text
+     x="394.05011"
+     y="31.217451"
+     id="text10745"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="394.05011"
+       y="31.217451"
+       id="tspan10747"
+       style="text-align:center;text-anchor:middle">(o : outputs)</tspan></text>
+</svg>
diff --git a/mealymachine2.svg b/mealymachine2.svg
new file mode 100644 (file)
index 0000000..251780c
--- /dev/null
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="447.45831"
+   height="198.21246"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="mealymachine2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="976"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1.4274587"
+     inkscape:cx="190.19815"
+     inkscape:cy="99.106232"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 99.106232 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="380.3963 : 99.106232 : 1"
+       inkscape:persp3d-origin="190.19815 : 66.070821 : 1"
+       id="perspective10678" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         id="path3653"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path3638"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(0.6,0.6)"
+         id="path3659"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)"
+         id="path3662"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend-6"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656-0"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+  </defs>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910"
+     d="M 303.74721,25.885543 L 336.62768,25.885543" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910-4"
+     d="M 96.211374,25.885543 L 132.27382,25.885543" />
+  <text
+     style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+     xml:space="preserve"
+     id="text5424"
+     y="-38.461178"
+     x="138.99133"><tspan
+       id="tspan5426"
+       y="-38.461178"
+       x="138.99133" /></text>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7752"
+     d="M 303.74721,97.303324 L 336.62768,97.303324 L 336.62768,166.59979 L 303.74721,166.59979" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend-6);stroke-opacity:1"
+     id="path7948"
+     d="M 132.27382,166.59979 L 96.211374,166.59979 L 96.211374,97.303324 L 132.27382,97.303324" />
+  <text
+     sodipodi:linespacing="100%"
+     style="font-size:12px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text3712-5-7-1"
+     y="84.725449"
+     x="44.735474"><tspan
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Palatino;-inkscape-font-specification:Palatino"
+       id="tspan8173"
+       y="84.725449"
+       x="44.735474" /></text>
+  <rect
+     width="170.00002"
+     height="121.6148"
+     rx="5"
+     ry="5"
+     x="133.33449"
+     y="0.5"
+     id="rect3716"
+     style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
+  <text
+     x="218.82019"
+     y="64.61879"
+     id="text2417"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="218.82019"
+       y="64.61879"
+       id="tspan2421"
+       style="text-align:center;text-anchor:middle">func</tspan></text>
+  <g
+     id="g2439"
+     transform="translate(-195.59374,-232.04137)">
+    <rect
+       style="fill:#f0f0f0;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3716-8"
+       y="367.25348"
+       x="328.78696"
+       ry="4.3373775"
+       rx="5.0083094"
+       height="62.500351"
+       width="170.28253" />
+    <text
+       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+       xml:space="preserve"
+       id="text2423"
+       y="406.94183"
+       x="413.11765"><tspan
+         style="text-align:center;text-anchor:middle"
+         id="tspan2431"
+         y="406.94183"
+         x="413.11765">state</tspan></text>
+  </g>
+  <text
+     x="45.722656"
+     y="31.532804"
+     id="text10741"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="45.722656"
+       y="31.532804"
+       id="tspan10743"
+       style="text-align:center;text-anchor:middle">(i : inputs)</tspan></text>
+  <text
+     x="394.05011"
+     y="31.217451"
+     id="text10745"
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+       x="394.05011"
+       y="31.217451"
+       id="tspan10747"
+       style="text-align:center;text-anchor:middle">(o : outputs)</tspan></text>
+</svg>
diff --git a/polyaluhardware-add.png b/polyaluhardware-add.png
deleted file mode 100644 (file)
index 83e4c65..0000000
Binary files a/polyaluhardware-add.png and /dev/null differ
diff --git a/polyaluhardware-reg.png b/polyaluhardware-reg.png
deleted file mode 100644 (file)
index 6a49453..0000000
Binary files a/polyaluhardware-reg.png and /dev/null differ
diff --git a/polyaluhardware.png b/polyaluhardware.png
deleted file mode 100644 (file)
index 5a35f06..0000000
Binary files a/polyaluhardware.png and /dev/null differ
index 4d74c68ed188bc00b66f31730421be46ba86a204..03c688c520ac496f98c8657ca05968c9c96658d0 100644 (file)
@@ -2,13 +2,19 @@
 \frame{
 \frametitle{More than just toys}
 \pause
-TODO: Plaatje van de reducer
+\begin{columns}[l]
+\column{0.5\textwidth}
+\begin{figure}
+\includegraphics<2->[width=5.5cm]{reducer}
+\end{figure}
+\column{0.5\textwidth}
 \begin{itemize}
   \item We implemented a reduction circuit in \clash{}\pause
   \item Simulation results in Haskell match VHDL simulation results\pause
   \item Synthesis completes without errors or warnings\pause
-  \item Around half speed of handcoded and optimized VHDL \pause
+  \item Around half speed of handcoded and optimized VHDL
 \end{itemize}
+\end{columns}
 }\note[itemize]{
 \item Toys like the poly cpu one are good to give a quick demo
 \item But we used \clash{} to design 'real' hardware
@@ -16,8 +22,8 @@ TODO: Plaatje van de reducer
 \item Nice speed considering we don't optimize for it (only single example!)
 }
 
-\begin{frame}[plain] 
-   \begin{centering} 
-      \includegraphics[height=\paperheight]{reducerschematic.png} 
-      \end{centering} 
-\end{frame} 
+\begin{frame}[plain] 
+   \begin{centering} 
+      \includegraphics[height=\paperheight]{reducerschematic.png} 
+      \end{centering} 
+\end{frame} 
diff --git a/reducer.svg b/reducer.svg
new file mode 100644 (file)
index 0000000..39152bc
--- /dev/null
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="464.39673"
+   height="260.52396"
+   id="svg2">
+  <defs
+     id="defs4">
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="marker7141"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path6886"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         id="path3653"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path3638"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(0.6,0.6)"
+         id="path3659"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)"
+         id="path3662"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend-6"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656-0"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+  </defs>
+  <g
+     transform="translate(-135.68775,-233.683)"
+     id="layer1">
+    <text
+       x="64.700272"
+       y="-38.140511"
+       transform="translate(269.8848,231.7207)"
+       id="text5424"
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
+         x="64.700272"
+         y="-38.140511"
+         id="tspan5426" /></text>
+    <text
+       x="240.32921"
+       y="316.76682"
+       id="text3712-5-7-1"
+       xml:space="preserve"
+       style="font-size:12px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"><tspan
+         x="240.32921"
+         y="316.76682"
+         id="tspan8173"
+         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Palatino;-inkscape-font-specification:Palatino" /></text>
+    <rect
+       width="42.179855"
+       height="123.64854"
+       x="373.77597"
+       y="255.8063"
+       id="rect5048"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.81431162;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M 373.86881,272.37658 L 416.18321,272.37658"
+       id="path5066"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 373.86881,289.17425 L 416.18321,289.17425"
+       id="path5068"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 373.86881,307.13203 L 416.18321,307.13203"
+       id="path5070"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 373.86881,323.92971 L 416.18321,323.92971"
+       id="path5072"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 373.86881,342.72737 L 416.18321,342.72737"
+       id="path5074"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 373.86881,360.36492 L 416.18321,360.36492"
+       id="path5076"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 196.53271,231.93427 A 26.456326,25.616444 0 1 1 143.62006,231.93427 A 26.456326,25.616444 0 1 1 196.53271,231.93427 z"
+       transform="translate(223.52968,197.52162)"
+       id="path5078"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <text
+       x="393.76233"
+       y="434.13351"
+       id="text5080"
+       xml:space="preserve"
+       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"><tspan
+         x="393.76233"
+         y="434.13351"
+         id="tspan5082"
+         style="text-align:center;text-anchor:middle">+</tspan></text>
+    <rect
+       width="42.079113"
+       height="156.51019"
+       x="407.57642"
+       y="-599.62695"
+       transform="matrix(0,1,-1,0,0,0)"
+       id="rect5084"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.915057;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M 583.41969,407.61891 L 583.41969,449.93331"
+       id="path5090"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 566.62202,407.61891 L 566.62202,449.93331"
+       id="path5092"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 548.14459,407.61891 L 548.14459,449.93331"
+       id="path5094"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 531.34692,407.61891 L 531.34692,449.93331"
+       id="path5096"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 515.38914,407.61891 L 515.38914,449.93331"
+       id="path5098"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 498.59146,407.61891 L 498.59146,449.93331"
+       id="path5100"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 481.7938,407.61891 L 481.7938,449.93331"
+       id="path5102"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 464.15625,407.61891 L 464.15625,449.93331"
+       id="path5104"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <g
+       transform="matrix(0,1,-1,0,646.68644,164.35199)"
+       id="g5141">
+      <rect
+         width="41.994167"
+         height="187.29399"
+         x="244.9467"
+         y="300.95374"
+         id="rect5119"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         d="M 244.94671,315.23175 L 287.78076,315.23175"
+         id="path5121"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,330.34965 L 287.78076,330.34965"
+         id="path5123"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,347.9872 L 287.26111,347.9872"
+         id="path5125"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,364.78487 L 287.26111,364.78487"
+         id="path5127"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,383.2623 L 287.26111,383.2623"
+         id="path5129"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,400.05997 L 287.26111,400.05997"
+         id="path5131"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,416.01775 L 287.26111,416.01775"
+         id="path5133"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,432.81543 L 287.26111,432.81543"
+         id="path5135"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,449.61309 L 287.26111,449.61309"
+         id="path5137"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 244.94671,467.25064 L 287.26111,467.25064"
+         id="path5139"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(484.73341,361.29887)"
+       id="path5154"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(470.03545,361.29887)"
+       id="path5156"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(453.23778,361.29887)"
+       id="path5158"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(437.28,361.29887)"
+       id="path5160"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(417.96268,361.29887)"
+       id="path5164"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(401.16501,361.29887)"
+       id="path5166"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(384.36735,361.29887)"
+       id="path5168"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(368.40957,361.29887)"
+       id="path5170"
+       style="fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(351.6119,361.29887)"
+       id="path5172"
+       style="fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(334.81423,361.29887)"
+       id="path5174"
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(315.49691,360.45899)"
+       id="path5176"
+       style="fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M 346.15266,430.71571 L 365.46997,430.71571"
+       id="path5178"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
+    <path
+       d="M 394.04362,402.99362 L 394.04362,383.67631"
+       id="path5186"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(540.58566,300.82727)"
+       id="path5188"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(540.58566,281.50995)"
+       id="path5190"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(541.42554,263.8724)"
+       id="path5192"
+       style="fill:#ff5b00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(541.42554,244.55508)"
+       id="path5196"
+       style="fill:#ff5b00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(541.42554,227.75741)"
+       id="path5198"
+       style="fill:#ff5b00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(541.42554,210.11986)"
+       id="path5200"
+       style="fill:#ff5b00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M -141.1004,69.41684 A 5.4592419,5.8791838 0 1 1 -152.01889,69.41684 A 5.4592419,5.8791838 0 1 1 -141.1004,69.41684 z"
+       transform="translate(541.42554,194.16208)"
+       id="path5202"
+       style="fill:#ff5b00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       d="M 136.18775,429.89343 L 155.50506,429.89343"
+       id="path5239"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
+    <path
+       d="M 167.13679,60.178118 L 167.13679,40.020918 L 296.47883,40.020918 L 296.47883,201.27853"
+       transform="translate(227.7291,194.16208)"
+       id="path5243"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#marker7141);stroke-opacity:1" />
+    <path
+       d="M 226.76851,201.27853 L 362.82962,201.27853"
+       transform="translate(227.7291,194.16208)"
+       id="path7695"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 454.49761,463.47116 L 590.55872,463.47116"
+       id="path7699"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 296.47883,269.30908 L 296.47883,299.54488 L 167.13679,299.54488 L 167.13679,260.91025"
+       transform="translate(227.7291,194.16208)"
+       id="path7703"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/reducerschematic.png b/reducerschematic.png
deleted file mode 100644 (file)
index 0d5f0a2..0000000
Binary files a/reducerschematic.png and /dev/null differ
diff --git a/simpleCPU.svg b/simpleCPU.svg
new file mode 100644 (file)
index 0000000..d24d179
--- /dev/null
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="242.93935"
+   height="281.34985"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="simpleCPU.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata8394">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="976"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:zoom="1.5676238"
+     inkscape:cx="104.73389"
+     inkscape:cy="129.42526"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:current-layer="svg2">
+    <sodipodi:guide
+       orientation="0,1"
+       position="148.6326,135.23653"
+       id="guide8428" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="151.82214,148.6326"
+       id="guide8430" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="241.12928,163.94239"
+       id="guide8432" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="127.58163,179.8901"
+       id="guide8434" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="75.91107,140.33979"
+       id="guide8436" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="55.498009,76.548978"
+       id="guide8438" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="32.533316,112.27183"
+       id="guide8442" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="261.54234,48.481019"
+       id="guide8444" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="107.80648,40.826122"
+       id="guide8446" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-61.239182,-8.9307141"
+       id="guide8450" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="140.9777,5.7411733"
+       id="guide8452" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="305.558,104.61694"
+       id="guide10638" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="57.411733,230.28484"
+       id="guide10706" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="160.11495,-9.5686222"
+       id="guide10732" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 130.45512 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="346.38412 : 130.45512 : 1"
+       inkscape:persp3d-origin="173.19206 : 86.970083 : 1"
+       id="perspective8396" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         id="path3653"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         id="path3638"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(0.6,0.6)"
+         id="path3659"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)"
+         id="path3662"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       id="Arrow2Lend-6"
+       style="overflow:visible">
+      <path
+         d="M 8.7185878,4.0337352 L -2.2072895,0.01601326 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 L 8.7185878,4.0337352 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         id="path3656-0"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+    </marker>
+  </defs>
+  <rect
+     style="fill:#f8f8f8;fill-opacity:1;stroke:#000000;stroke-width:2.24795771;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.49591536, 2.2479577;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect2581"
+     y="1.1239789"
+     x="19.283211"
+     ry="19.369015"
+     rx="5.6674428"
+     height="279.1019"
+     width="192.69307" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910"
+     d="M 173.94622,96.347535 L 241.57877,96.347535"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path3910-4"
+     d="M 0.51225585,81.677075 L 54.752223,81.677075"
+     sodipodi:nodetypes="cc" />
+  <text
+     style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+     xml:space="preserve"
+     id="text5424"
+     y="-16.516333"
+     x="31.446365"><tspan
+       id="tspan5426"
+       y="-16.516333"
+       x="31.446365" /></text>
+  <text
+     sodipodi:linespacing="100%"
+     style="font-size:12px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text3712-5-7-1"
+     y="106.6703"
+     x="-62.809502"><tspan
+       style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Palatino;-inkscape-font-specification:Palatino"
+       id="tspan8173"
+       y="106.6703"
+       x="-62.809502" /></text>
+  <rect
+     style="fill:#d7d7d7;fill-opacity:1;stroke:#000000;stroke-width:1.00710821;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.0142165, 1.00710825;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect3716-8"
+     y="177.5472"
+     x="55.097267"
+     ry="6.2872772"
+     rx="3.504355"
+     height="90.597839"
+     width="119.14807" />
+  <rect
+     style="fill:#d7d7d7;fill-opacity:1;stroke:#000000;stroke-width:1.00710821;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.0142165, 1.00710825;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect2541"
+     y="32.92421"
+     x="55.097267"
+     ry="6.2872772"
+     rx="3.504355"
+     height="90.597839"
+     width="119.14807" />
+  <text
+     style="font-size:20.49023438px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+     xml:space="preserve"
+     id="text2417"
+     y="55.116043"
+     x="110.7226"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="text-align:center;text-anchor:middle"
+       id="tspan2421"
+       y="55.116043"
+       x="110.7226">ALU</tspan></text>
+  <text
+     style="font-size:20.49023438px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+     xml:space="preserve"
+     id="text2545"
+     y="204.12898"
+     x="111.0265"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="text-align:center;text-anchor:middle"
+       id="tspan2547"
+       y="204.12898"
+       x="111.0265">Registers</tspan></text>
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path2567"
+     d="M 0.51225585,96.347535 L 54.752223,96.347535"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path2577"
+     d="M 0.51225585,239.22501 L 54.752223,239.22501"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path2579"
+     d="M 0.51225585,253.89547 L 54.752223,253.89547"
+     sodipodi:nodetypes="cc" />
+  <text
+     style="font-size:20.49023438px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+     xml:space="preserve"
+     id="text3393"
+     y="24.083792"
+     x="112.50774"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="text-align:center;text-anchor:middle"
+       id="tspan3395"
+       y="24.083792"
+       x="112.50774">CPU</tspan></text>
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     d="M 173.94622,96.347535 L 195.37436,96.347535 L 195.37436,132.70476 L 33.99372,168.42412 L 33.99372,223.91671 L 54.752223,223.91671"
+     id="path8448"
+     sodipodi:nodetypes="cccccc" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02451169px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     d="M 173.94622,239.22501 L 195.37436,239.22501 L 195.37436,168.42412 L 33.99372,132.70476 L 33.99372,109.7423 L 54.752223,109.7423"
+     id="path8456" />
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text3712-5-7"
+     y="86.438271"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan3714-2-3"
+       y="86.438271"
+       x="58.806686">opc</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10702"
+     y="100.63336"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10704"
+       y="100.63336"
+       x="58.806686">a</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10708"
+     y="116.406"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10710"
+       y="116.406"
+       x="58.806686">b</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10712"
+     y="233.46362"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10714"
+       y="233.46362"
+       x="58.806686">data_in</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10716"
+     y="249.14868"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10718"
+       y="249.14868"
+       x="58.806686">rdaddr</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Palatino;-inkscape-font-specification:Palatino"
+     x="-88.66777"
+     y="105.91186"
+     id="text10720"
+     sodipodi:linespacing="125%"><tspan
+       sodipodi:role="line"
+       id="tspan10722"
+       x="-88.66777"
+       y="105.91186"></tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10724"
+     y="263.41202"
+     x="58.806686"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10726"
+       y="263.41202"
+       x="58.806686">wraddr</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10728"
+     y="248.85431"
+     x="113.71804"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10730"
+       y="248.85431"
+       x="113.71804">data_out</tspan></text>
+  <text
+     sodipodi:linespacing="125%"
+     style="font-size:12.29414082px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Palatino;-inkscape-font-specification:Palatino Italic"
+     xml:space="preserve"
+     id="text10734"
+     y="101.80681"
+     x="121.31441"
+     transform="scale(1.0246117,0.9759795)"><tspan
+       style="font-size:14.34316349px"
+       id="tspan10736"
+       y="101.80681"
+       x="121.31441">alu_out</tspan></text>
+</svg>
index 94b11b53fec31b639c333f1f596beb48d11fdf16..58feaa978ba49d88a41b10fc8f5bdfef080491e5 100644 (file)
 
 \frame
 {
-\frametitle{Complete signature for registerBank}
+\frametitle{Complete signatures and Types}
 \begin{code}
-registerBank :: 
-  ( NaturalT s
+type Word         =   SizedInt D12  
+type Instruction  =   ( Opcode, Word, RangedWord D9
+                      , RangedWord D9 )
+
+registers :: 
+  ( NaturalT s 
   , PositiveT (s :+: D1)
-  , ((s :+: D1) :>: s) ~ True )) =>
-  (RegState s a) -> a -> RangedWord s ->
-  RangedWord s -> Bit -> ((RegState s a), a )
+  , ((s :+: D1) :>: s) ~ True )) => 
+  a -> RangedWord s -> RangedWord s -> 
+  (RegState s a) -> 
+  (RegState s a, a )
 \end{code}
 }
-
-\frame{
-\begin{figure}
-\centerline{\includegraphics[width=12cm]{polyaluhardware}}
-\label{img:mealymachine}
-\end{figure}
-}
-
-\frame{
-\begin{figure}
-\centerline{\includegraphics[width=12cm]{polyaluhardware-reg}}
-\label{img:mealymachine}
-\end{figure}
-}
-
-\frame{
-\begin{figure}
-\centerline{\includegraphics[width=12cm]{polyaluhardware-add}}
-\label{img:mealymachine}
-\end{figure}
-}