Hopefully finalized presentation
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 31 Aug 2009 19:55:21 +0000 (21:55 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 31 Aug 2009 19:55:21 +0000 (21:55 +0200)
PolyAlu.lhs
beamerinnerthemecaes.sty
demo.lhs
howdoesitwork.lhs
introduction.lhs
reducer.lhs
reducer.svg
summary.lhs

index c0d196d01d4d0137b1b71aebf824ffd50cc45560..a4dc6e141cce0b0f0314bfae51ce48f81be3f5ba 100644 (file)
@@ -21,6 +21,7 @@ import qualified Prelude as P
 \includegraphics[width=4.75cm]{simpleCPU}
 \end{figure}
 \column{0.5\textwidth}
+\vspace{5em}
 \begin{itemize}
   \item Polymorphic, Higher-Order CPU
   \item Use of state will be simple
@@ -49,9 +50,10 @@ 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
+type Opcode       =   Bit
 \end{code}
 \end{beamercolorbox}\pause
-\vspace{2.5em}
+\vspace{1em}
 And some Register types:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
@@ -68,7 +70,8 @@ type Word = SizedInt D12
 %endif
 \end{columns}
 }\note[itemize]{
-\item The first type is already polymorphic in input / output type
+\item The ALU operation is already polymorphic in input / output type
+\item We use a fixed size vector as the placeholder for the registers
 \item State has to be of the State type to be recognized as such
 }
 
@@ -82,7 +85,6 @@ type Word = SizedInt D12
 Abstract ALU definition:
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
-type Opcode         =   Bit
 alu :: 
   Op a -> Op a -> 
   Opcode -> a -> a -> a
@@ -92,7 +94,7 @@ alu op1 op2 {-"{\color<2>[rgb]{1,0,0}"-}High{-"}"-}   a b = op2 a b
 \end{beamercolorbox}
 }\note[itemize]{
 \item Alu is both higher-order, and polymorphic
-\item Two parameters are "compile time", others are "runtime"
+\item First two parameters are "compile time", other three are "runtime"
 \item We support pattern matching
 }
 
@@ -121,10 +123,8 @@ registers data_in rdaddr wraddr (State mem) =
 \end{code}
 \end{beamercolorbox}
 }\note[itemize]{
-\item RangedWord runs from 0 to the upper bound
-\item mem is statefull
-\item We support guards
-\item replace is a builtin function
+\item mem is statefull, indicated by the 'State' type
+\item replace and (!) are a builtin functions
 }
 
 \subsection{Simple CPU: ALU \& Register Bank}
@@ -155,7 +155,7 @@ cpu (opc, d, rdaddr, wraddr) ram = (ram', alu_out)
 \end{itemize}
 }\note[itemize]{
 \item We use the new Annotion functionality to indicate this is the top level. TopEntity is defined by us.
-\item the primOp and vectOp frameworks are now supplied with real functionality, the plus (+) operations
+\item At this stage, both operations for the ALU are defined
 \item No polymorphism or higher-order stuff is allowed at this level.
 \item Functions must be specialized, and have primitives for input and output 
 }
index 580fe3c1a9d39824afb4a8209fec0af3c5ccd905..29126b7a194cef082e9a253c7b92e29eb8c847a5 100644 (file)
@@ -60,7 +60,7 @@
 \setbeamertemplate{title page}
 {
        \begin{centering}
-    \vfill
+    \vskip2em%
     \begin{beamercolorbox}[sep=8pt,center]{title}
       \usebeamerfont{title}\inserttitle\par%
       \ifx\insertsubtitle\@empty%
index 61a55678c9e5bab745a67157955139fe3dfb9dfd..f50a9590df95d6e92a458b5e83aee2d2e49fd44f 100644 (file)
--- a/demo.lhs
+++ b/demo.lhs
@@ -3,6 +3,7 @@
 \frame{
 \frametitle{Demo}
 \begin{itemize}
+  \item Pre-Recored Video: VHDL Synthesis takes too long
   \item Simulate the CPU description
   \item Translate the CPU to VHDL
   \item Simulate the generated VHDL
@@ -14,9 +15,9 @@
 \frame{
 \frametitle{Generated Schematic}
 \begin{figure}
-\centerline{\includegraphics<1>[width=10cm]{cpucomplete}
-\includegraphics<2>[width=10cm]{cpualu}
-\includegraphics<3>[height=6cm]{cpuregisters}}
+\centerline{\includegraphics<1>[width=10.3cm]{cpucomplete}
+\includegraphics<2>[width=11.3cm]{cpualu}
+\includegraphics<3>[height=6.3cm]{cpuregisters}}
 \end{figure}
 }
 
index b9970d6784d570e7d2e1863be8c4b2e0fe064901..4c26ca534ffecfa49b9e7362b68d2f0c985316c6 100644 (file)
@@ -14,7 +14,8 @@
   \end{itemize}
 }\note[itemize]{
 \item Here is a quick insight as to how WE translate Haskell to Hardware
+\item Reduction rules are used to get a required normal form.
 \item Normal form already looks like hardware (components and lines)
-\item You can also use TH, like ForSyDe. Or traverse datastructures, like ?
+\item You can also use TH, like ForSyDe. Or traverse datastructures, like Lava?
 \item We're in luck with the GHC API update of 6.10 and onwards
 }
index c7b0bca887d2cd4873a66393c3253dd86c5f8a13..939582f567348bf2323354e7a58649e7ab76b394 100644 (file)
 \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
+\item All functions are structural descriptions with a Mealy Machines perspective
 }
 
-% \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}
+\frametitle{Mealy Machine}
 \begin{figure}
 \centerline{\includegraphics<1>[width=6.25cm]{mealymachine2}
 \includegraphics<2>[width=6.25cm]{mealymachine2-func-red}
@@ -49,8 +32,8 @@
 \end{figure}
 \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
 \begin{code}
-run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
-run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
+run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
+run {-"{\color<2>[rgb]{1,0,0}"-}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
@@ -58,8 +41,10 @@ run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
 \end{beamercolorbox}
 }
 \note[itemize]{
+\item A Mealy machine bases its output on the current state and the input
 \item State is part of the function signature
-\item Both the current state, as the updated State
+\item Both the current state, and the updated State
+\item The run function simulates a mealy machine for the provided number of inputs
 }
 
 \frame
@@ -77,3 +62,7 @@ func ::
 \end{code}
 \end{beamercolorbox}
 }
+\note[itemize]{
+\item In \clash{} you describe the logic part of the mealy machine
+\item The state in the signature is turned into memory elements when translating to VHDL
+}
index 03c688c520ac496f98c8657ca05968c9c96658d0..21baeeb9db140eb52b071981ba1403677a7b8313 100644 (file)
@@ -10,7 +10,7 @@
 \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 Simulated first Haskell. VHDL simulation results match\pause
   \item Synthesis completes without errors or warnings\pause
   \item Around half speed of handcoded and optimized VHDL
 \end{itemize}
@@ -18,7 +18,9 @@
 }\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
-\item Reduction circuit sums the numbers in a row of a (sparse) matrix
+\item Reduction circuit sums the numbers in a row, of different length
+\item It uses a pipelined adder: multiple rows in pipeline, rows longer than pipeline
+\item We hope you see this is not a trivial problem
 \item Nice speed considering we don't optimize for it (only single example!)
 }
 
index 39152bc421f6ef1d940d79b32bfcd4bf7157f13c..96ce95817b49227c7d49a6b8fb651cf53fd6f6eb 100644 (file)
@@ -1,14 +1,79 @@
 <?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="464.39673"
-   height="260.52396"
-   id="svg2">
+   width="325.10861"
+   height="279.28186"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="reducer.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata2461">
+    <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="752"
+     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.1692589"
+     inkscape:cx="154.91649"
+     inkscape:cy="100.73624"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <sodipodi:guide
+       orientation="0,1"
+       position="150.5227,64.143195"
+       id="guide3369" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="258.28326,310.45306"
+       id="guide3383" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="28.223006,277.95384"
+       id="guide3387" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="119.73396,239.46793"
+       id="guide3389" />
+  </sodipodi:namedview>
   <defs
      id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 130.26198 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="464.39673 : 130.26198 : 1"
+       inkscape:persp3d-origin="232.19836 : 86.841319 : 1"
+       id="perspective2463" />
     <marker
        refX="0"
        refY="0"
          style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
     </marker>
   </defs>
+  <rect
+     style="fill:#d1d1d1;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.32599878;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:5.30399539, 5.30399539;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect3367"
+     width="87.193207"
+     height="234.29494"
+     x="237.2524"
+     y="27.006063"
+     rx="10.405136"
+     ry="9.9988909" />
+  <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="-21.344908"
+     x="220.89732"><tspan
+       id="tspan5426"
+       y="-21.344908"
+       x="220.89732" /></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="101.84172"
+     x="126.64146"><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="101.84172"
+       x="126.64146" /></text>
+  <rect
+     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"
+     id="rect5048"
+     y="40.881207"
+     x="260.08823"
+     height="123.64854"
+     width="42.179855" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5066"
+     d="M 260.18106,57.451482 L 302.49546,57.451482" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5068"
+     d="M 260.18106,74.249152 L 302.49546,74.249152" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5070"
+     d="M 260.18106,92.206932 L 302.49546,92.206932" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5072"
+     d="M 260.18106,109.00461 L 302.49546,109.00461" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5074"
+     d="M 260.18106,127.80227 L 302.49546,127.80227" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5076"
+     d="M 260.18106,145.43982 L 302.49546,145.43982" />
+  <path
+     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"
+     id="path5078"
+     d="M 306.37464,214.53079 C 306.37866,228.68111 294.53258,240.15428 279.91832,240.15428 C 265.30405,240.15428 253.45797,228.68111 253.46199,214.53079 C 253.45797,200.38047 265.30405,188.9073 279.91832,188.9073 C 294.53258,188.9073 306.37866,200.38047 306.37464,214.53079 z" />
+  <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="text5080"
+     y="219.20842"
+     x="280.07458"><tspan
+       style="text-align:center;text-anchor:middle"
+       id="tspan5082"
+       y="219.20842"
+       x="280.07458">+</tspan></text>
   <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>
+     id="g5141"
+     transform="matrix(0,1,-1,0,510.99869,-50.573108)">
     <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" />
+       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"
+       id="rect5119"
+       y="300.95374"
+       x="244.9467"
+       height="187.29399"
+       width="41.994167" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5121"
+       d="M 244.94671,315.23175 L 287.78076,315.23175" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5123"
+       d="M 244.94671,330.34965 L 287.78076,330.34965" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5125"
+       d="M 244.94671,347.9872 L 287.26111,347.9872" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5127"
+       d="M 244.94671,364.78487 L 287.26111,364.78487" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5129"
+       d="M 244.94671,383.2623 L 287.26111,383.2623" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5131"
+       d="M 244.94671,400.05997 L 287.26111,400.05997" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5133"
+       d="M 244.94671,416.01775 L 287.26111,416.01775" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5135"
+       d="M 244.94671,432.81543 L 287.26111,432.81543" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5137"
+       d="M 244.94671,449.61309 L 287.26111,449.61309" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5139"
+       d="M 244.94671,467.25064 L 287.26111,467.25064" />
   </g>
+  <path
+     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"
+     id="path5154"
+     d="M 207.94526,215.79061 C 207.94526,219.0376 205.50107,221.6698 202.48601,221.6698 C 199.47096,221.6698 197.02677,219.0376 197.02677,215.79061 C 197.02677,212.54363 199.47096,209.91142 202.48601,209.91142 C 205.50107,209.91142 207.94526,212.54363 207.94526,215.79061 z" />
+  <path
+     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"
+     id="path5156"
+     d="M 193.2473,215.79061 C 193.2473,219.0376 190.80311,221.6698 187.78805,221.6698 C 184.773,221.6698 182.32881,219.0376 182.32881,215.79061 C 182.32881,212.54363 184.773,209.91142 187.78805,209.91142 C 190.80311,209.91142 193.2473,212.54363 193.2473,215.79061 z" />
+  <path
+     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"
+     id="path5158"
+     d="M 176.44963,215.79061 C 176.44963,219.0376 174.00544,221.6698 170.99038,221.6698 C 167.97533,221.6698 165.53114,219.0376 165.53114,215.79061 C 165.53114,212.54363 167.97533,209.91142 170.99038,209.91142 C 174.00544,209.91142 176.44963,212.54363 176.44963,215.79061 z" />
+  <path
+     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"
+     id="path5170"
+     d="M 91.62142,215.79061 C 91.62142,219.0376 89.17723,221.6698 86.16217,221.6698 C 83.14712,221.6698 80.70293,219.0376 80.70293,215.79061 C 80.70293,212.54363 83.14712,209.91142 86.16217,209.91142 C 89.17723,209.91142 91.62142,212.54363 91.62142,215.79061 z" />
+  <path
+     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"
+     id="path5172"
+     d="M 74.82375,215.79061 C 74.82375,219.0376 72.37956,221.6698 69.3645,221.6698 C 66.34945,221.6698 63.90526,219.0376 63.90526,215.79061 C 63.90526,212.54363 66.34945,209.91142 69.3645,209.91142 C 72.37956,209.91142 74.82375,212.54363 74.82375,215.79061 z" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path5178"
+     d="M 210.2286,215.13866 L 251.78222,215.79061"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path5186"
+     d="M 280.35587,188.06852 L 280.35587,168.75121" />
+  <path
+     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"
+     id="path5188"
+     d="M 285.79751,155.31901 C 285.79751,158.566 283.35332,161.1982 280.33826,161.1982 C 277.32321,161.1982 274.87902,158.566 274.87902,155.31901 C 274.87902,152.07202 277.32321,149.43982 280.33826,149.43982 C 283.35332,149.43982 285.79751,152.07202 285.79751,155.31901 z" />
+  <path
+     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"
+     id="path5190"
+     d="M 285.79751,136.00169 C 285.79751,139.24867 283.35332,141.88088 280.33826,141.88088 C 277.32321,141.88088 274.87902,139.24867 274.87902,136.00169 C 274.87902,132.7547 277.32321,130.1225 280.33826,130.1225 C 283.35332,130.1225 285.79751,132.7547 285.79751,136.00169 z" />
+  <path
+     style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     id="path5239"
+     d="M 0.5,214.96833 L 19.81731,214.96833" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
+     id="path7703"
+     d="M 281.17814,278.78186 L 281.17814,240.14723"
+     sodipodi:nodetypes="cc" />
+  <path
+     sodipodi:type="star"
+     style="fill:#c8008b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3345"
+     sodipodi:sides="5"
+     sodipodi:cx="170.23653"
+     sodipodi:cy="46.140846"
+     sodipodi:r1="9.3148832"
+     sodipodi:r2="4.6574416"
+     sodipodi:arg1="0.94677327"
+     sodipodi:arg2="1.5750918"
+     inkscape:flatsided="false"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 175.67926,53.700194 L 170.21652,50.798245 L 164.72906,53.653157 L 165.8009,47.561035 L 161.38999,43.224362 L 167.51516,42.361172 L 170.27654,36.826049 L 172.99026,42.384691 L 179.10779,43.300469 L 174.65979,47.599088 L 175.67926,53.700194 z"
+     transform="matrix(0.8293389,0,0,0.8293389,139.34806,80.981853)" />
+  <path
+     sodipodi:type="star"
+     style="fill:#c8008b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3347"
+     sodipodi:sides="5"
+     sodipodi:cx="170.23653"
+     sodipodi:cy="46.140846"
+     sodipodi:r1="9.3148832"
+     sodipodi:r2="4.6574416"
+     sodipodi:arg1="0.94677327"
+     sodipodi:arg2="1.5750918"
+     inkscape:flatsided="false"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 175.67926,53.700194 L 170.21652,50.798245 L 164.72906,53.653157 L 165.8009,47.561035 L 161.38999,43.224362 L 167.51516,42.361172 L 170.27654,36.826049 L 172.99026,42.384691 L 179.10779,43.300469 L 174.65979,47.599088 L 175.67926,53.700194 z"
+     transform="matrix(0.8293389,0,0,0.8293389,139.0333,63.040405)" />
+  <path
+     sodipodi:type="star"
+     style="fill:#c8008b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3349"
+     sodipodi:sides="5"
+     sodipodi:cx="170.23653"
+     sodipodi:cy="46.140846"
+     sodipodi:r1="9.3148832"
+     sodipodi:r2="4.6574416"
+     sodipodi:arg1="0.94677327"
+     sodipodi:arg2="1.5750918"
+     inkscape:flatsided="false"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 175.67926,53.700194 L 170.21652,50.798245 L 164.72906,53.653157 L 165.8009,47.561035 L 161.38999,43.224362 L 167.51516,42.361172 L 170.27654,36.826049 L 172.99026,42.384691 L 179.10779,43.300469 L 174.65979,47.599088 L 175.67926,53.700194 z"
+     transform="matrix(0.8293389,0,0,0.8293389,138.73093,45.502717)" />
+  <path
+     sodipodi:type="star"
+     style="fill:#c8008b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3351"
+     sodipodi:sides="5"
+     sodipodi:cx="170.23653"
+     sodipodi:cy="46.140846"
+     sodipodi:r1="9.3148832"
+     sodipodi:r2="4.6574416"
+     sodipodi:arg1="0.94677327"
+     sodipodi:arg2="1.5750918"
+     inkscape:flatsided="false"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 175.67926,53.700194 L 170.21652,50.798245 L 164.72906,53.653157 L 165.8009,47.561035 L 161.38999,43.224362 L 167.51516,42.361172 L 170.27654,36.826049 L 172.99026,42.384691 L 179.10779,43.300469 L 174.65979,47.599088 L 175.67926,53.700194 z"
+     transform="matrix(0.8293389,0,0,0.8293389,138.42855,27.965031)" />
+  <path
+     sodipodi:type="star"
+     style="fill:#c8008b;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3353"
+     sodipodi:sides="5"
+     sodipodi:cx="170.23653"
+     sodipodi:cy="46.140846"
+     sodipodi:r1="9.3148832"
+     sodipodi:r2="4.6574416"
+     sodipodi:arg1="0.94677327"
+     sodipodi:arg2="1.5750918"
+     inkscape:flatsided="false"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 175.67926,53.700194 L 170.21652,50.798245 L 164.72906,53.653157 L 165.8009,47.561035 L 161.38999,43.224362 L 167.51516,42.361172 L 170.27654,36.826049 L 172.99026,42.384691 L 179.10779,43.300469 L 174.65979,47.599088 L 175.67926,53.700194 z"
+     transform="matrix(0.8293389,0,0,0.8293389,138.42855,11.636839)" />
+  <rect
+     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"
+     id="rect3355"
+     width="9.6759653"
+     height="9.9783392"
+     x="149.37271"
+     y="210.64297"
+     rx="0"
+     ry="0" />
+  <rect
+     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"
+     id="rect3357"
+     width="9.6759653"
+     height="9.9783392"
+     x="131.53265"
+     y="210.49179"
+     rx="0"
+     ry="0" />
+  <rect
+     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"
+     id="rect3359"
+     width="9.6759653"
+     height="9.9783392"
+     x="114.59972"
+     y="210.49179"
+     rx="0"
+     ry="0" />
+  <rect
+     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"
+     id="rect3361"
+     width="9.6759653"
+     height="9.9783392"
+     x="98.573906"
+     y="210.49179"
+     rx="0"
+     ry="0" />
+  <path
+     sodipodi:type="star"
+     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"
+     id="path3363"
+     sodipodi:sides="5"
+     sodipodi:cx="50.496445"
+     sodipodi:cy="123.54857"
+     sodipodi:r1="8.6481056"
+     sodipodi:r2="6.9964643"
+     sodipodi:arg1="0.93428811"
+     sodipodi:arg2="1.5626066"
+     inkscape:flatsided="true"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 55.636801,130.50317 L 45.470684,130.58643 L 42.249997,120.9436 L 50.42562,114.90075 L 58.69912,120.80889 L 55.636801,130.50317 z"
+     transform="matrix(0.7422275,-0.2611717,0.2584341,0.7352996,-16.82738,138.60661)" />
+  <path
+     sodipodi:type="star"
+     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"
+     id="path3365"
+     sodipodi:sides="5"
+     sodipodi:cx="50.496445"
+     sodipodi:cy="123.54857"
+     sodipodi:r1="8.6481056"
+     sodipodi:r2="6.9964643"
+     sodipodi:arg1="0.93428811"
+     sodipodi:arg2="1.5626066"
+     inkscape:flatsided="true"
+     inkscape:rounded="0"
+     inkscape:randomized="0"
+     d="M 55.636801,130.50317 L 45.470684,130.58643 L 42.249997,120.9436 L 50.42562,114.90075 L 58.69912,120.80889 L 55.636801,130.50317 z"
+     transform="matrix(0.7422275,-0.2611717,0.2584341,0.7352996,-35.557216,138.35509)"
+     inkscape:transform-center-x="-6.2032857"
+     inkscape:transform-center-y="-21.468548" />
+  <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="62.196404"
+     y="184.33662"
+     id="text3379"
+     sodipodi:linespacing="125%"><tspan
+       sodipodi:role="line"
+       id="tspan3381"
+       x="62.196404"
+       y="184.33662">Input rows</tspan></text>
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+     d="M 280.28326,39.813928 L 280.28326,1.3280185"
+     id="path3391" />
+  <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="189.62755"
+     y="99.680916"
+     id="text4495"
+     sodipodi:linespacing="125%"><tspan
+       sodipodi:role="line"
+       id="tspan4497"
+       x="189.62755"
+       y="99.680916"
+       style="text-align:center;text-anchor:middle">Pipelined</tspan><tspan
+       sodipodi:role="line"
+       x="189.62755"
+       y="124.68092"
+       id="tspan4499"
+       style="text-align:center;text-anchor:middle">Adder</tspan></text>
 </svg>
index 58feaa978ba49d88a41b10fc8f5bdfef080491e5..6467af850bfab988a81e647dae282ac70a23b86d 100644 (file)
@@ -5,8 +5,8 @@
 \frametitle{Some final words}
 \begin{itemize}
   \item Still a lot to do: translate larger subset of Haskell
-  \item Real world prototypes can be made in \clash{}
-  \item \clash{} is another great example of how to bring functional expressivity to hardware designs
+  \item Real world prototype designs can already be made in \clash{}
+%  \item \clash{} is another great example of how to bring functional expressivity to hardware designs
 \end{itemize}
 }
 
@@ -37,3 +37,30 @@ registers ::
   (RegState s a, a )
 \end{code}
 }
+
+\frame
+{
+\frametitle{Supported Functionality}
+\begin{itemize}
+\item Polymorphism
+\item Higher Order Functions
+\item Fixed-Size Vectors (Simulation)
+\item Ranged and Sized Integers (Simulation)
+\item Custom Datatypes
+\item Booleans, Tuples
+\item Pattern Matching
+\item Guards
+\end{itemize}
+}
+
+\frame
+{
+\frametitle{Unsupported Functionality}
+\begin{itemize}
+\item Recursions
+\item Lists (Dynamic Length)
+\item Standard Haskell Types: Integer, Char, etc.
+\item Monads
+\item And much much more...
+\end{itemize}
+}