checkpoint
authoradam <adam@megacz.com>
Wed, 27 Feb 2008 18:50:25 +0000 (10:50 -0800)
committeradam <adam@megacz.com>
Wed, 27 Feb 2008 18:50:25 +0000 (10:50 -0800)
darcs-hash:20080227185025-5007d-97328e1ca30250609e79483ea1edec851b160f1f.gz

am33.tex [new file with mode: 0644]
best.svg [new file with mode: 0644]
ports.svg [new file with mode: 0644]

diff --git a/am33.tex b/am33.tex
new file mode 100644 (file)
index 0000000..266d31d
--- /dev/null
+++ b/am33.tex
@@ -0,0 +1,773 @@
+\documentclass[10pt]{article}
+\usepackage{palatino}
+\usepackage{amsmath}
+\usepackage{epsfig}
+\usepackage{color}
+\usepackage{bytefield1}
+\usepackage{wrapfig}
+\usepackage{stmaryrd}
+\usepackage{subfigure}
+\usepackage{syntax}
+\usepackage{comment}
+\usepackage{fancyhdr}
+\usepackage{lastpage}
+\include{megacz}
+\bibliographystyle{alpha}
+\pagestyle{fancyplain}
+
+\definecolor{light}{gray}{0.7}
+
+\newcommand{\footnoteremember}[2]{
+  \footnote{#2}
+  \newcounter{#1}
+  \setcounter{#1}{\value{footnote}}
+} \newcommand{\footnoterecall}[1]{
+  \footnotemark[\value{#1}]
+}
+
+%\pdfpagewidth 8.5in
+%\pdfpageheight 11in 
+%\topmargin 0in
+%\textheight 7.5in
+%\textwidth 6.0in
+%\oddsidemargin 0.25in
+%\evensidemargin 0.25in
+%\headwidth 6.0in
+\def\to{\ $\rightarrow$\ }
+
+\def\docnum{AM33}
+
+\author{
+\normalsize{
+\begin{tabular}{c}
+\end{tabular}}
+}
+
+\title{\vspace{-1cm}The FleetTwo Dock}
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+\end{abstract}
+
+\vfill
+
+\begin{center}
+\epsfig{file=overview,width=1.5in}
+\epsfig{file=ports,width=1.5in}
+\epsfig{file=best,width=1.5in}
+\end{center}
+
+\pagebreak
+
+\section{Overview of Fleet}
+
+A Fleet processor consists of a {\it switch fabric} with several
+functional units called {\it ships} connected to it.  At each
+connection between a ship and the switch fabric lies a programmable
+element known as the {\it dock}.
+
+A {\it path} specifies a route through the switch fabric from a
+particular {\it source} to a particular {\it destination}.  The
+combination of a path and a single word {\it payload} is called a {\it packet}.  The
+switch fabric carries packets from their sources to their
+destinations.  Each dock has two destinations: one for {\it
+  instructions} and one for {\it data}.  A Fleet is programmed by
+depositing packets into the switch fabric; these packets' paths lead
+them to the instruction destinations of the docks.
+
+When a packet arrives at the instruction destination of a dock, it is
+enqueued for execution.  Before the instruction executes, it may cause
+the dock to wait for a packet to arrive at the dock's data destination
+or for a value to be presented by the ship.  It may present a data
+value to the ship or transmit it for transmission to some other
+destination.
+
+When an instruction sends a packet into the switch fabric, it may
+specify that the payload of the packet is irrelevant.  Such packets
+are known as {\it tokens}, and consume less energy than data packets.
+From a programmer's perspective, a token packet is indistinguishable
+from a data packet with a unknown payload.
+
+\begin{center}
+\epsfig{file=overview,width=4in}\\
+{\it Overview of a Fleet processor}
+\end{center}
+
+\pagebreak
+
+\section{The Ship-Switch Fabric Interface}
+
+The diagram below represents a {\it programmer's} conceptual view of
+the interface between ships and the switch fabric.  Actual
+implementation circuitry may differ substantially.  Sources and
+destinations that can send and receive only tokens -- not data items
+-- are drawn as dashed lines.
+
+\begin{center}
+\epsfig{file=ports,width=4in}\\
+{\it The interface betwen the switch fabric and the ship}
+\end{center}
+
+The term {\it port} refers to an interface to the ship, the {\it
+  dock} connecting it to the switch fabric, and the corresponding
+sources and destinations on the switch fabric.
+
+Each dock consists of a {\it data latch}, which is as wide as a
+single machine word and a {\it pump}, which is a circular fifo of
+instruction-width latches.  The values in the instruction fifo
+control the data latch.
+
+Note that the pump in each dock has a destination of its own; this is
+the {\it instruction destination} mentioned in the previous section.
+Note that unlike all other destinations, there is no buffering fifo
+guarding this one.  The size of these fifos are exposed to the
+software programmer so she can avoid deadlock.
+
+\pagebreak
+
+\section{The FleetTwo Pump}
+
+The diagram below shows the datapath for the FleetTwo pump circuitry.
+The square box marked {\tt D} on the output from the {\tt IH} latch is
+the instruction decoder, which decodes word-width instructions into a
+set of control signals suitable for operating the pump.  The boxes
+marked {\tt CD} are carry detectors.  These detect zero values in the
+count and also generate the partial differences used in the decrement
+operation.
+
+\begin{center}
+\epsfig{file=best,width=4in}\\
+{\it The pump datapath}
+\end{center}
+
+The latches of primary interest here are:
+\begin{itemize}
+\item {\tt IH}: Instruction Horn (leaf node; may be shared)
+\item {\tt F0}: Fifo Stage 0 (first fifo stage)
+\item {\tt OD}: On Deck
+\item {\tt F}: Flags, {\tt NF}: Next Flags
+\item {\tt P}: Path (the path to use for outbound data/tokens)
+\item {\tt D}: Data
+\item {\tt DP}: Data Predecessor (ship for output ports, switch fabric for input ports)
+\item {\tt DS}: Data Successor (switch fabric for output ports, ship for input ports)
+\item {\tt RC}: Repeat Count, {\tt NRC}: Next Repeat Count
+\item {\tt LC}: Loop Count, {\tt NLC}: Next Loop Count
+\end{itemize}
+
+Each instruction that executes causes the latches of the pump to fire
+in two phases, denoted as the ``left phase'' and the ``right phase''.
+In the diagram, the left phase latches are those to the left of the
+vertical line down the center, and the right phase latches are to the
+right.  Therefore each instruction execution requires two GasP
+pipeline stages to complete.
+
+\subsection{Flags}
+
+The pump has four flags: {\tt A}, {\tt B}, {\tt S}, {\tt Z}.  Of
+these four, only the first two may be modified directly by
+instructions.
+
+\begin{itemize}
+\item The {\tt A} and {\tt B} flags are general-purpose flags which
+      may be set and cleared by the programmer.
+
+\item The {\tt S} flag, known as the {\it summary} flag.  Its value is
+      determined by the ship, but unless stated otherwise, it should
+      be assumed that whenever the 37th bit of the data ({\tt D})
+      latch is loaded, that same bit is also loaded into the {\tt S}
+      flag.  This lets the ship make decisions based on whether or not
+      the top bit of the data latch is set; if two's complement
+      numbers are in use, this will indicate whether or not the
+      latched value is negative.
+
+\item The {\tt Z} flag, known as the {\it zero} flag, is set whenever
+      the value in the loop counter ({\tt LC}) is zero.  This flag can
+      be used to perform certain operations (such as sending a
+      completion token) only on the last iteration of a loop.
+\end{itemize}
+
+Many instruction fields are specified as two-bit {\it predicates}.
+These fields contain one of four values, indicating if an action
+should be taken unconditionally or conditionally on one of the {\tt A}
+or {\tt B} flags:
+
+\begin{itemize}
+\item {\tt 00:} if {\tt A} is set
+\item {\tt 10:} if {\tt B} is set
+\item {\tt 01:} if {\tt Z} is set ({\tt LC=0})
+\item {\tt 11:} always
+\end{itemize}
+
+\pagebreak
+\section{Instructions}
+
+In order to cause an instruction to execute, the programmer must first
+cause that instruction word to arrive in the data latch of some output
+dock.  For example, this might be the ``data read'' output dock of the
+memory access ship or the output of a fifo ship.  Once an instruction
+has arrived at this output dock, it is {\it dispatched} by sending it
+to the {\it instruction port} of the dock at which it is to execute.
+
+Each instruction is 26 bits long, which makes it possible for an
+instruction and an 11-bit path to fit in a single word of memory.
+This path is the path from the {\it dispatching} dock to the {\it
+  executing} dock.
+
+\setlength{\bitwidth}{3.5mm}
+{\tt \footnotesize
+\begin{bytefield}{37}
+  \bitheader[b]{0,25,26,36}\\
+  \bitbox{11}{dispatch path} 
+  \bitbox{26}{instruction} 
+\end{bytefield}}
+
+{\bf Note:} the instruction encodings below are simply ``something to
+shoot at'' and a sanity check to make sure we haven't overrun our bit
+budget.  The final instruction encodings will probably be
+different.
+
+All instructions other than {\tt interrupt}, {\tt massacre}, {\tt clog},
+and {\tt unclog} have the following format:
+
+\setlength{\bitwidth}{3.5mm}
+{\tt \footnotesize
+\begin{bytefield}{37}
+  \bitheader[b]{0,21,22,23,24,25,26,36}\\
+\color{light}
+  \bitbox{11}{dispatch path} 
+\color{black}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P} 
+\color{light}
+  \bitbox[tbr]{22}{} 
+\color{black}
+\end{bytefield}}
+
+The abbreviation {\tt IM} stands for {\it Interruptible/Massacreable}.
+An {\tt interrupt} or {\tt massacre} instruction will not execute
+until an instruction with the {\tt IM} bit is present at the head of
+the instruction fifo.
+
+The abbreviation {\tt DL} stands for {\it Decrement Loop}; if this bit
+is set, the loop counter decrements.  Once an instruction has
+finished executing (including repeating, if applicable), the
+instruction will reloop if the loop count ({\tt LC}) value was
+greater than zero {\it prior to decrementing}.
+
+The abbreviation {\tt P} stands for {\it predicate}; this is a two-bit
+code that indicates if the instruction should be executed or ignored.
+If an instruction is ignored, it might still reloop.
+
+\pagebreak
+\subsection{RePeating and ReLooping}
+
+\begin{table}[htp]
+\centering
+\begin{minipage}{3in}
+\centering
+\begin{center}
+\begin{tabular}{|r|c|c|}\hline
+                      &  RePeating? & ReLooping? \\\hline
+{\tt send}            &  Y      &  Y   \\\hline
+{\tt literal}         &  N      &  Y   \\\hline
+{\tt flags}           &  N      &  Y   \\\hline
+{\tt repeat}          &  N      &  Y   \\
+{\tt loop}            &  N      &  Y
+\footnote{note, however, that the decision to reloop or not is based on the value in the loop counter {\it before} execution of the {\tt loop} instruction}
+\\
+{\tt takeLoopCounter}   &  N      &  Y   \\
+{\tt takeRepeatCounter} &  N      &  Y   \\
+\hline
+{\tt clog}            &  N      &  N   \\
+{\tt unclog}          &  n/a    &  n/a \\
+{\tt interrupt}       &  n/a    &  n/a \\
+{\tt massacre}        &  n/a    &  n/a \\\hline
+\end{tabular}
+\end{center}
+\end{minipage}
+\caption{classification of instructions}
+\end{table}
+
+{\bf RePeating}\\
+An instruction will repeat if it is classified as a repeating
+instruction and the repeat counter is nonzero.  Instructions
+non-repeating instructions have no effect on the repeat
+counter (except for {\tt repeat}, of course).
+
+{\bf ReLooping}\\
+An instruction reloops if {\bf all} of the following are true:
+\begin{enumerate}
+\item The repeat counter has reached zero.
+\item The instruction is a ``relooping instruction'' as shown below.
+\item The loop counter is greater than zero.  This check takes into
+      account the result of a {\tt literal} instruction, but does not
+      take into account the effect of the {\tt DL} bit.
+\end{enumerate}
+{\it Important:} if an instruction is {\it not} going to reloop
+(according to the rules above), it must execute even if the tail of
+the instruction fifo is occupied (full).
+
+
+\pagebreak
+\subsection{{\tt send} (variants: {\tt sendto}, {\tt dispatch})}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{12-16,19,21}\\
+\color{light}
+  \bitbox{1}{IM}
+  \bitbox{1}{DL}
+  \bitbox{2}{P}
+\color{black}
+   \bitbox{3}{001} 
+\color{light}
+  \bitbox[trb]{2}{} 
+\color{black}
+  \bitbox{1}{\tt Ti}
+  \bitbox{1}{\tt Di}
+  \bitbox{1}{\tt Dc}
+  \bitbox{1}{\tt Do}
+  \bitbox{1}{\tt To}
+  \bitbox[l]{17}{}
+\end{bytefield}}
+
+%\begin{bytefield}{26}
+%  \bitheader[b]{12-18}\\
+%  \bitbox[]{8}{\raggedleft Input Dock:}
+%  \bitbox[r]{2}{}
+%  \bitbox{1}{\tt So} 
+%  \bitbox{1}{\tt Dc}
+%  \bitbox[l]{15}{}
+%\end{bytefield}
+%
+%\begin{bytefield}{26}
+%  \bitheader[b]{12-18}\\
+%  \bitbox[]{8}{\raggedleft Output Dock:}
+%  \bitbox[r]{2}{}
+%  \bitbox{1}{\tt Si}
+%  \bitbox{1}{\tt To}
+%  \bitbox[l]{15}{}
+%\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{0,10,11}\\
+  \bitbox[1]{13}{\raggedleft {\tt sendto} ({\tt LiteralPath\to Path})}
+  \bitbox[r]{1}{}
+  \bitbox{1}{\tt 1}
+  \bitbox{11}{\tt LiteralPath}
+\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{10,11}\\
+  \bitbox[1]{13}{\raggedleft {\tt dispatch} ({\tt DP[37:27]\to Path})\ \ }
+  \bitbox[r]{1}{}
+  \bitbox{1}{\tt 0}
+  \bitbox{1}{\tt 1}
+\color{light}
+  \bitbox[trb]{10}{}
+\color{black}
+\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{10,11}\\
+  \bitbox[1]{13}{\raggedleft {\tt send} ({\tt Path} unchanged):}
+  \bitbox[r]{1}{}
+  \bitbox{1}{\tt 0}
+  \bitbox{1}{\tt 0}
+\color{light}
+  \bitbox[trb]{10}{}
+\color{black}
+\end{bytefield}
+
+\begin{itemize}
+\item {\tt Ti} - Token Input: wait for the token predecessor to be full and drain it.
+\item {\tt Di} - Data Input: wait for the data predecessor to be full and drain it.
+\item {\tt Dc} - Data Capture: pulse the data latch.
+\item {\tt Do} - Data Output: fill the data successor.
+\item {\tt To} - Token Output: fill the token successor.
+\end{itemize}
+
+The {\tt F0}, {\tt DS}, and {\tt TS} stages must all be empty in order for an
+instruction to execute.
+
+The repeat counter can hold a number {\tt 0..MAX} or a special value
+$\infty$.  If the repeat count ({\tt RC}) holds a value other than
+$\infty$, it is latched with {\tt max(RC-1, 0)}.  If the repeat
+counter reaches zero, the instruction ceases executing and either
+reloops or retires (see earlier section for details).
+
+
+\pagebreak
+\subsection{{\tt data}, {\tt datahi}, {\tt datalo}}
+
+These instructions load part or all of the data latch ({\tt DL}).
+
+{\tt datahi: Literal[18:1]\to D[37:20]} (and {\tt Literal[18]\to S})
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{0,18,19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{1}{0} 
+  \bitbox{2}{11} 
+\color{light}
+  \bitbox[trb]{1}{} 
+\color{black}
+  \bitbox{18}{Literal} 
+\end{bytefield}}
+
+{\tt datalo: Literal[19:1]\to D[19:1]}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{0,18,19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{1}{0} 
+  \bitbox{2}{10} 
+  \bitbox{19}{Literal} 
+\end{bytefield}}
+
+{\tt data:}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{0,18,19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{1}{1} 
+  \bitbox{2}{SEL} 
+  \bitbox{19}{Literal} 
+\end{bytefield}}
+
+{\tt
+\begin{tabular}{|r|c|c|c|}\hline
+sel  & D[37:20]      & D[19:1]       \\\hline
+00  & Literal[18:1] & all 0         \\
+01  & Literal[18:1] & all 1         \\
+10  & all 0         & Literal[19:1] \\
+11  & all 1         & Literal[19:1] \\
+\hline
+\end{tabular}}
+
+
+
+
+\subsection{{\tt flags}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{0,7,8,15,16-19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{3}{000}
+  \bitbox{1}{0}
+  \bitbox{2}{00}
+\color{black}
+  \bitbox{8}{nextA}
+  \bitbox{8}{nextB}
+\end{bytefield}}
+
+The {\tt P} field is a predicate; if it does not hold, the instruction
+is ignored.  Otherwise the two flags ({\tt A} and {\tt B}) are updated
+according to the {\tt nextA} and {\tt nextB} fields; each specifies
+the new value as the logical {\tt OR} of zero or more inputs:
+
+\begin{center}
+{\tt
+\begin{bytefield}{8}
+  \bitheader[b]{0-7}\\
+  \bitbox{1}{${\text{\tt A}}$}
+  \bitbox{1}{$\overline{\text{\tt A}}$}
+  \bitbox{1}{${\text{\tt B}}$}
+  \bitbox{1}{$\overline{\text{\tt B}}$}
+  \bitbox{1}{${\text{\tt S}}$}
+  \bitbox{1}{$\overline{\text{\tt S}}$}
+  \bitbox{1}{${\text{\tt Z}}$}
+  \bitbox{1}{$\overline{\text{\tt Z}}$}
+\end{bytefield}}
+\end{center}
+
+Each bit corresponds to one possible input; all inputs whose bits are
+set are {\tt OR}ed together, and the resulting value is assigned to
+the flag.  Note that if none of the bits are set, the value assigned
+is zero.  Note also that it is possible to produce a {\tt 1} by {\tt
+  OR}ing any flag with its complement.
+
+
+\pagebreak
+
+\subsection{{\tt repeat}}
+
+This instruction loads the repeat counter with either a literal
+number, the special value $\infty$, or the contents of the {\tt data}
+register.
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{3}{000}
+  \bitbox{1}{0}
+  \bitbox{2}{01}
+\color{light}
+  \bitbox[tbr]{8}{}
+  \bitbox[l]{8}{}
+\color{black}
+\end{bytefield}}\\
+
+\begin{bytefield}{26}
+  \bitbox[r]{18}{\raggedleft from data latch:\hspace{0.2cm}\ }
+  \bitbox{2}{\tt 00}
+\color{light}
+  \bitbox[tbr]{6}{} 
+\color{black}
+\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{0,5,6,7}\\
+  \bitbox[r]{18}{\raggedleft from literal:\hspace{0.2cm}\ }
+  \bitbox{2}{\tt 10}
+  \bitbox{6}{\tt Literal} 
+\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{0,5,6,7}\\
+  \bitbox[r]{18}{\raggedleft with $\infty$\ \ }
+  \bitbox{2}{\tt 11} 
+\color{light}
+  \bitbox[tbr]{6}{} 
+\color{black}
+\end{bytefield}
+
+
+\subsection{{\tt loop}}
+
+This instruction loads the loop counter with either a literal or the
+contents of the {\tt data} register.
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21,24}\\
+\color{light}
+  \bitbox{1}{IM} 
+\color{black}
+  \bitbox{1}{0} 
+\color{light}
+  \bitbox[tbr]{2}{P}
+\color{black}
+  \bitbox{3}{000}
+  \bitbox{1}{0}
+  \bitbox{2}{10}
+\color{light}
+  \bitbox[tbr]{9}{} 
+  \bitbox[l]{7}{}
+\color{black}
+\end{bytefield}}\\
+
+\begin{bytefield}{26}
+  \bitbox[r]{19}{\raggedleft from data latch:\hspace{0.2cm}\ }
+  \bitbox{1}{\tt 0} 
+\color{light}
+  \bitbox[tbr]{6}{} 
+\color{black}
+\end{bytefield}
+
+\begin{bytefield}{26}
+  \bitheader[b]{0,5,6}\\
+  \bitbox[r]{19}{\raggedleft from literal:\hspace{0.2cm}\ }
+  \bitbox{1}{\tt 1} 
+  \bitbox{6}{\tt Literal} 
+\end{bytefield}
+
+Note that the bit normally marked {\tt DL} (``decrement loop
+      counter'') {\bf must} be set to {\tt
+  0} in this case.
+
+\pagebreak
+\subsection{{\tt takeLoopCounter}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{3}{000}
+  \bitbox{1}{0}
+  \bitbox{2}{11}
+\color{light}
+  \bitbox[tbr]{16}{} 
+\color{black}
+\end{bytefield}}
+
+The {\tt P} field is a predicate; if it does not hold, the instruction
+is ignored (but may reloop).  This instruction copies the value in the
+loop counter {\tt LC} into the least significant bits of the data
+latch and leaves all other bits of the data latch unchanged.
+
+\subsection{{\tt takeRepeatCounter}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{1}{IM} 
+  \bitbox{1}{DL} 
+  \bitbox{2}{P}
+\color{black}
+  \bitbox{3}{???}
+  \bitbox{1}{?}
+  \bitbox{2}{??}
+\color{light}
+  \bitbox[tbr]{16}{} 
+\color{black}
+\end{bytefield}}
+
+The {\tt P} field is a predicate; if it does not hold, the instruction
+is ignored (but may reloop).  This instruction copies the value in the
+repeat counter {\tt RC} into the least significant bits of the data
+latch and leaves all other bits of the data latch unchanged.
+
+\pagebreak
+\subsection{{\tt interrupt}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{0,5,16-19,21}\\
+\color{light}
+  \bitbox{4}{} 
+\color{black}
+  \bitbox{3}{000} 
+  \bitbox{1}{1}
+  \bitbox{2}{00}
+\color{light}
+  \bitbox[tbr]{16}{} 
+%\color{black}
+%  \bitbox{6}{Count}
+\end{bytefield}}
+
+When an {\tt interrupt} instruction reaches {\tt IH}, it will wait
+there for the {\tt OD} stage to be full with an instruction that has
+the {\tt IM} bit set.  When this occurs, the instruction at {\tt OD}
+{\it will not execute}, but {\it may reloop} if the conditions for
+relooping are met.
+\footnote{The ability to interrupt an instruction yet have it reloop is very
+useful for processing chunks of data with a fixed size header and/or
+footer and a variable length body.}
+
+
+\subsection{{\tt massacre}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{4}{} 
+\color{black}
+  \bitbox{3}{000} 
+  \bitbox{1}{1}
+  \bitbox{2}{01}
+\color{light}
+  \bitbox[tbr]{16}{} 
+\color{black}
+\end{bytefield}}
+
+When a {\tt massacre} instruction reaches {\tt IH}, it will wait there
+for the {\tt OD} stage to be full with an instruction that has the
+{\tt IM} bit set.  When this occurs, all instructions in the
+instruction fifo (including {\tt OD}) are retired.
+
+\subsection{{\tt clog}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{4}{} 
+\color{black}
+  \bitbox{3}{000} 
+  \bitbox{1}{1}
+  \bitbox{2}{10}
+\color{light}
+  \bitbox[tbr]{16}{} 
+\color{black}
+\end{bytefield}}
+
+When a {\tt clog} instruction reaches {\tt OD}, it remains there and
+no more instructions will be executed until an {\tt unclog} is
+performed.
+
+\subsection{{\tt unclog}}
+
+\setlength{\bitwidth}{5mm}
+{\tt
+\begin{bytefield}{26}
+  \bitheader[b]{16-19,21}\\
+\color{light}
+  \bitbox{4}{} 
+\color{black}
+  \bitbox{3}{000} 
+  \bitbox{1}{1}
+  \bitbox[lrtb]{2}{11}
+\color{light}
+  \bitbox[tbr]{16}{} 
+\color{black}
+\end{bytefield}}
+
+When an {\tt unclog} instruction reaches {\tt IH}, it will wait there
+until a {\tt clog} instruction is at {\tt OD}.  When this occurs, both
+instructions retire.
+
+Note that issuing an {\tt unclog} instruction to a dock which is not
+clogged and whose instruction fifo contains no {\tt clog} instructions
+will cause the dock to deadlock.
+
+
+
+\pagebreak
+\epsfig{file=overview,height=5in,angle=90}
+
+\pagebreak
+\epsfig{file=ports,height=5in,angle=90}
+
+\pagebreak
+\epsfig{file=best,height=5in,angle=90}
+
+
+\end{document}
diff --git a/best.svg b/best.svg
new file mode 100644 (file)
index 0000000..3b1318d
--- /dev/null
+++ b/best.svg
@@ -0,0 +1,1128 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="653.65997"
+   height="600"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="/Users/megacz/proj/sun/am32"
+   sodipodi:docname="best.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Sstart"
+       style="overflow:visible">
+      <path
+         id="path3275"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.2,0,0,0.2,1.2,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3626"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="TriangleOutM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="TriangleOutM"
+       style="overflow:visible">
+      <path
+         id="path3700"
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="RazorWire"
+       id="RazorWire"
+       refX="0"
+       refY="0"
+       orient="auto">
+       style=&quot;overflow:visible&quot;&gt;
+      <path
+   id="path3769"
+   transform="scale(0.8,0.8)"
+   style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.1pt"
+   d="M 0.022727273,-0.74009011 L 0.022727273,0.69740989 L -7.7585227,3.0099099 L 10.678977,3.0099099 L 3.4914773,0.69740989 L 3.4914773,-0.74009011 L 10.741477,-2.8963401 L -7.7272727,-2.8963401 L 0.022727273,-0.74009011 z " />
+</marker>
+    <marker
+       inkscape:stockid="SquareL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareL"
+       style="overflow:visible">
+      <path
+         id="path3670"
+         d="M -5,-5 L -5,5 L 5,5 L 5,-5 L -5,-5 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="scale(0.8,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Tail"
+       style="overflow:visible">
+      <g
+         id="g3635"
+         transform="scale(-1.2,-1.2)">
+        <path
+           id="path3637"
+           d="M -3.8048674,-3.9585227 L 0.54352094,0"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+        <path
+           id="path3639"
+           d="M -1.2866832,-3.9585227 L 3.0617053,0"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+        <path
+           id="path3641"
+           d="M 1.3053582,-3.9585227 L 5.6537466,0"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+        <path
+           id="path3643"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+        <path
+           id="path3645"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+        <path
+           id="path3647"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3334"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         id="path3337"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Send"
+       style="overflow:visible">
+      <path
+         id="path3343"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path3331"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.3283333"
+     inkscape:cx="326.82997"
+     inkscape:cy="299.99998"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="653.65997px"
+     height="600px"
+     showgrid="true"
+     showguides="true"
+     inkscape:grid-points="false"
+     inkscape:window-width="1307"
+     inkscape:window-height="1009"
+     inkscape:window-x="20"
+     inkscape:window-y="22"
+     inkscape:grid-bbox="false"
+     inkscape:guide-bbox="true" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-406.34314,-149.09448)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 150,170 L 150,220 L 155,225 L 200,225"
+       id="path3385"
+       transform="translate(406.34314,149.09448)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 571.34314,380.09448 L 611.34314,380.09448"
+       id="path3383" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 605.73954,456.11363 L 782.74947,455.59448 L 787.74947,450.59448 L 786.34314,264.09448 L 791.34314,259.09448 L 818.41386,259.61363"
+       id="path2388"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 605.73954,455.11363 L 762.32763,454.59448 L 767.32763,449.59448 L 767.2414,238.57533 L 772.2414,233.57533 L 816.34314,234.09448"
+       id="path4093"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 550.78059,572.25628 L 570.78059,572.25628 L 580.40838,581.13965 L 580.40838,615.97836 L 590.40838,625.97836 L 610.40838,625.97836"
+       id="path7644"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 661.34314,560.11363 L 825.07391,560.61363 L 830.07391,555.61363 L 830.07391,534.59448 L 835.07391,529.59448 L 868.12974,529.09448"
+       id="path7628"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 617.18681,573.18381 L 486.34314,573.18381 L 476.34314,583.18381 L 476.34314,715.09448"
+       id="path7606"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 230,350 L 343.46702,350 L 348.46702,355 L 348.46702,365 L 343.46702,370 L 185,370 L 180,365 L 180,355 L 185,350 L 215,350"
+       id="path7579"
+       transform="translate(406.34314,149.09448)"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 145,360 L 155,360 L 165,350 L 165,311.93225 L 170,306.93225 L 200,306.93225"
+       id="path7561"
+       sodipodi:nodetypes="cccccc"
+       transform="translate(406.34314,149.09448)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 661.84314,456.59448 L 824.82949,456.09448 L 829.82949,461.09448 L 829.82949,489.09448 L 834.82949,494.09448 L 871.60741,494.59448"
+       id="path7559"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 155,360 L 165,350 L 165,187 L 175,177 L 216.05459,177"
+       id="path3346"
+       sodipodi:nodetypes="ccccc"
+       transform="translate(406.34314,149.09448)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 285,177 L 295,167 L 295,102.41531 L 305,92.415307 L 420,92.915307"
+       id="path3379"
+       sodipodi:nodetypes="ccccc"
+       transform="translate(406.34314,149.09448)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0"
+       d="M 481.067,70.5 L 491.067,70.5 L 501.067,80.5 L 501.067,130.5 L 491.067,140.5 L 115,140 L 106.067,150.5 L 105,160 L 115,170.5 L 222.75434,170.5"
+       id="path3342"
+       sodipodi:nodetypes="cccccccccc"
+       transform="translate(406.34314,149.09448)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 586.34314,219.32687 L 596.34314,229.32687 L 596.34314,259.32687 L 606.34314,269.32687 L 816.34314,269.32687"
+       id="path2390" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 707.43743,154.09448 L 706.97589,694.09448"
+       id="path3377"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 665.34314,326.59448 L 745.88285,326.59448 L 751.34314,331.09448 L 751.34314,343.09448 L 746.34314,348.09448 L 596.34314,348.09448 L 591.34314,343.09448 L 591.34314,336.09448 L 596.34314,331.09448 L 616.34314,329.59448"
+       id="path3375"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 881.34314,514.09448 L 1005.7414,514.09448 L 1015.7414,502.09448 L 1015.7414,314.69486 L 1005.7414,304.09448 L 436.34314,304.09448 L 426.34314,314.09448 L 426.34314,499.09448 L 436.34314,509.09448 L 511.34314,509.09448"
+       id="path4140"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 944.90766,512.86867 L 924.90766,482.86867 L 864.90766,482.86867 L 864.90766,542.86867 L 924.90766,542.86867 L 944.90766,512.86867 z "
+       id="path3322"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 681.84314,455.09448 L 661.84314,425.09448 L 601.84314,425.09448 L 601.84314,485.09448 L 661.84314,485.09448 L 681.84314,455.09448 z "
+       id="path3320"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 866.34314,244.1137 L 866.34314,184.1137 L 936.34314,184.1137"
+       id="path2330" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 826.34314,224.59448 L 826.34314,184.59448 L 724.38284,184.59448"
+       id="path3301"
+       sodipodi:nodetypes="ccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="636.86639"
+       y="457.53552"
+       id="text3209"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="636.86639"
+         y="457.53552"
+         style="font-size:10px"
+         id="tspan3211">On Deck</tspan><tspan
+         sodipodi:role="line"
+         x="636.86639"
+         y="470.03552"
+         style="font-size:10px"
+         id="tspan2346">(OD)</tspan></text>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 696.34314,333.09448 L 682.34314,316.09448 L 602.34314,316.09448 L 602.34314,333.09448 L 676.34314,333.09448 L 696.34314,333.09448 z "
+       id="path3213"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.07430172px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="607.22925"
+       y="327.94107"
+       id="text3215"><tspan
+         sodipodi:role="line"
+         id="tspan3217"
+         x="607.22925"
+         y="327.94107"
+         style="font-size:8px;text-align:start;text-anchor:start;fill:#000000">Loop Count (LC)</tspan></text>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 1047.5025,216.09602 L 1027.5025,186.09602 L 967.50253,186.09602 L 967.50253,246.09602 L 1027.5025,246.09602 L 1047.5025,216.09602 z "
+       id="path3948"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 1037.5025,216.09602 L 1017.5025,186.09602 L 957.50253,186.09602 L 957.50253,246.09602 L 1017.5025,246.09602 L 1037.5025,216.09602 z "
+       id="path3954"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3958"
+       d="M 958.00255,215.59603 L 973.00259,215.59603"
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 1027.5025,216.09602 L 1007.5025,186.09602 L 947.50253,186.09602 L 947.50253,246.09602 L 1007.5025,246.09602 L 1027.5025,216.09602 z "
+       id="path3962"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.00000002, 3.00000002;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 1017.3959,212.83644 L 997.3959,186.02085 L 937.39585,186.02085 L 937.39585,245.84602 L 997.3959,245.84602 L 1017.3959,212.83644 z "
+       id="path3330"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="972.35876"
+       y="210.33186"
+       id="text3332"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="972.35876"
+         y="210.33186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3338">Data</tspan><tspan
+         sodipodi:role="line"
+         x="972.35876"
+         y="222.83186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3350">Successor</tspan><tspan
+         sodipodi:role="line"
+         x="972.35876"
+         y="235.33186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3352" /></text>
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3283"
+       d="M 541.34314,219.09448 L 811.34314,219.32687"
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3285"
+       d="M 891.34314,219.32687 L 935.34314,219.32687"
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3892"
+       d="M 457.34314,222.84603 L 472.34314,222.84603"
+       style="fill:none;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 526.84314,223.34602 L 506.84314,193.34602 L 446.84314,193.34602 L 446.84314,253.34602 L 506.84314,253.34602 L 526.84314,223.34602 z "
+       id="path3896"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 536.84314,223.34602 L 516.84314,193.34602 L 456.84314,193.34602 L 456.84314,253.34602 L 516.84314,253.34602 L 536.84314,223.34602 z "
+       id="path3888"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 546.84314,223.34602 L 526.84314,193.34602 L 466.84314,193.34602 L 466.84314,253.34602 L 526.84314,253.34602 L 546.84314,223.34602 z "
+       id="path3882"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 556.23648,223.34602 L 536.23648,193.34602 L 476.23648,193.34602 L 476.23648,253.34602 L 536.23648,253.34602 L 556.23648,223.34602 z "
+       id="path3279"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="511.1994"
+       y="213.83186"
+       id="text3287"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="511.1994"
+         y="213.83186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3293">Data</tspan><tspan
+         sodipodi:role="line"
+         x="511.1994"
+         y="226.33186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3300">Predecessor</tspan><tspan
+         sodipodi:role="line"
+         x="511.1994"
+         y="238.83186"
+         style="font-size:10px;fill:#808000"
+         id="tspan3302">(DP)</tspan></text>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 891.34314,221.84602 L 871.34314,191.84602 L 811.34314,191.84602 L 811.34314,251.84602 L 871.34314,251.84602 L 891.34314,221.84602 z "
+       id="path5008"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="845.10291"
+       y="220.34602"
+       id="text5010"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="845.10291"
+         y="220.34602"
+         style="font-size:10px;fill:#808000"
+         id="tspan5016">Data</tspan><tspan
+         sodipodi:role="line"
+         x="845.10291"
+         y="232.84602"
+         style="font-size:10px;fill:#808000"
+         id="tspan5023">(D)</tspan></text>
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3528"
+       d="M 613.34314,560.11364 L 628.34314,560.11364"
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 678.84314,560.61363 L 658.84314,530.61363 L 598.84314,530.61363 L 598.84314,590.61363 L 658.84314,590.61363 L 678.84314,560.61363 z "
+       id="path3536"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="632.25861"
+       y="549.90308"
+       id="text3538"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="632.25861"
+         y="549.90308"
+         id="tspan3542"
+         style="font-size:10px">Instruction</tspan><tspan
+         sodipodi:role="line"
+         x="632.25861"
+         y="562.40308"
+         style="font-size:10px"
+         id="tspan3574">Horn</tspan><tspan
+         sodipodi:role="line"
+         x="632.25861"
+         y="574.90308"
+         style="font-size:10px"
+         id="tspan2350">(IH)</tspan></text>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 556.84314,508.56781 L 536.84314,478.56781 L 476.84314,478.56781 L 476.84314,538.56781 L 536.84314,538.56781 L 556.84314,508.56781 z "
+       id="path3478"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 546.84314,508.56781 L 526.84314,478.56781 L 466.84314,478.56781 L 466.84314,538.56781 L 526.84314,538.56781 L 546.84314,508.56781 z "
+       id="path3472"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3994"
+       d="M 467.34314,508.06782 L 482.34314,508.06782"
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 536.84314,508.56781 L 516.84314,478.56781 L 456.84314,478.56781 L 456.84314,538.56781 L 516.84314,538.56781 L 536.84314,508.56781 z "
+       id="path4752"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 526.84313,508.56781 L 506.84313,478.56781 L 446.84313,478.56781 L 446.84313,538.56781 L 506.84313,538.56781 L 526.84313,508.56781 z "
+       id="path4726"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="899.42133"
+       y="509.52213"
+       id="text2361"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="899.42133"
+         y="509.52213"
+         style="font-size:10px"
+         id="tspan2365">Fifo0</tspan><tspan
+         sodipodi:role="line"
+         x="899.42133"
+         y="522.02213"
+         style="font-size:10px"
+         id="tspan2348">(F0)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="779.37299"
+       y="172.19214"
+       id="text3303"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="779.37299"
+         y="172.19214"
+         style="font-size:10px;fill:#808000"
+         id="tspan3309">Token Predecessor (TP)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="934.02869"
+       y="171.88452"
+       id="text3316"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="934.02869"
+         y="171.88452"
+         style="font-size:10px;fill:#808000"
+         id="tspan3318">Token Successor (TS)</tspan></text>
+    <g
+       id="g3366"
+       transform="matrix(1,0,0,-1,100,698.68896)">
+      <rect
+         y="364.59448"
+         x="616.34314"
+         height="20"
+         width="20"
+         id="rect3350"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3352"
+         y="380.62085"
+         x="622.3739"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:22px;stroke:#008080"
+           y="380.62085"
+           x="622.3739"
+           id="tspan3354"
+           sodipodi:role="line">-</tspan></text>
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 715.50641,349.15868 L 720.71559,339.22289 L 736.34314,339.22289 L 736.34314,359.09448 L 720.71559,359.09448 L 715.50641,349.15868 z "
+       id="path3371"
+       sodipodi:nodetypes="cccccc" />
+    <g
+       id="g7510"
+       transform="translate(-28.82196,-55.476141)">
+      <rect
+         y="394.09448"
+         x="651.2948"
+         height="20"
+         width="20"
+         id="rect3383"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3385"
+         y="407.73462"
+         x="661.30701"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:10px;text-align:center;text-anchor:middle;stroke:#008080"
+           y="407.73462"
+           x="661.30701"
+           id="tspan3387"
+           sodipodi:role="line">CD</tspan></text>
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#808000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 871.84314,253.82687 L 856.34314,274.32687 L 811.34314,274.32687 L 811.84318,253.82687 L 855.84314,253.82687 L 871.84314,253.82687 z "
+       id="path2382"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="836.23767"
+       y="267.32687"
+       id="text2384"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="836.23767"
+         y="267.32687"
+         style="font-size:10px;fill:#808000"
+         id="tspan2386">Path (P)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="641.34314"
+       y="221.32687"
+       id="text3458"><tspan
+         sodipodi:role="line"
+         id="tspan3460"
+         x="641.34314"
+         y="221.32687"
+         style="font-size:6px">word (37 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="946.09119"
+       y="379.50952"
+       id="text4431"><tspan
+         sodipodi:role="line"
+         id="tspan4433"
+         x="946.09119"
+         y="379.50952"
+         style="font-size:6px">word</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="-418.46478"
+       y="789.18988"
+       id="text7342"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan7344"
+         x="-418.46478"
+         y="789.18988"
+         style="font-size:6px">path (11 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="-444.59448"
+       y="768.6391"
+       id="text7346"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan7348"
+         x="-444.59448"
+         y="768.6391"
+         style="font-size:6px">sign-extended literal (17+ bits)_</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="631.34314"
+       y="271.32687"
+       id="text7350"><tspan
+         sodipodi:role="line"
+         id="tspan7352"
+         x="631.34314"
+         y="271.32687"
+         style="font-size:6px">path (11 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="573.57642"
+       y="456.73602"
+       id="text7370"><tspan
+         sodipodi:role="line"
+         id="tspan7372"
+         x="573.57642"
+         y="456.73602"
+         style="font-size:6px">decoded</tspan></text>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7385"
+       width="20"
+       height="20"
+       x="788.78729"
+       y="549.6156" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="793.9328"
+       y="563.98962"
+       id="text7387"><tspan
+         sodipodi:role="line"
+         id="tspan7389"
+         x="793.9328"
+         y="563.98962"
+         style="font-size:12px;stroke:#0000ff">D</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="966.82178"
+       y="346.30341"
+       id="text7391"><tspan
+         sodipodi:role="line"
+         id="tspan7393"
+         x="966.82178"
+         y="346.30341"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="722.14246"
+       y="562.46808"
+       id="text7395"><tspan
+         sodipodi:role="line"
+         id="tspan7397"
+         x="722.14246"
+         y="562.46808"
+         style="font-size:6px">encoded (26 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="461.95273"
+       y="346.30341"
+       id="text7419"><tspan
+         sodipodi:role="line"
+         id="tspan7421"
+         x="461.95273"
+         y="346.30341"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="952.19739"
+       y="516.14691"
+       id="text7423"><tspan
+         sodipodi:role="line"
+         id="tspan7425"
+         x="952.19739"
+         y="516.14691"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="539.54443"
+       y="575.09949"
+       id="text7503"><tspan
+         sodipodi:role="line"
+         id="tspan7505"
+         x="539.54443"
+         y="575.09949"
+         style="font-size:6px">word (37 bits)</tspan></text>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7517"
+       width="20"
+       height="20"
+       x="561.34314"
+       y="406.99286" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#800080;fill-opacity:1;stroke:#800080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="571.35535"
+       y="420.633"
+       id="text7519"><tspan
+         sodipodi:role="line"
+         id="tspan7521"
+         x="571.35535"
+         y="420.633"
+         style="font-size:10px;text-align:center;text-anchor:middle;fill:#800080;stroke:#800080">CD</tspan></text>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#808000;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7525"
+       width="20"
+       height="20"
+       x="526.34314"
+       y="309.09448" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#808000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="536.35535"
+       y="322.73462"
+       id="text7527"><tspan
+         sodipodi:role="line"
+         id="tspan7529"
+         x="536.35535"
+         y="322.73462"
+         style="font-size:10px;text-align:center;text-anchor:middle;stroke:#808000">CD</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="535.60535"
+       y="366.4632"
+       id="text7358"><tspan
+         sodipodi:role="line"
+         id="tspan7360"
+         x="535.60535"
+         y="366.4632"
+         style="font-size:6px;text-align:center;text-anchor:middle">count</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 726.34314,619.09448 L 746.34314,619.09448 L 756.34314,629.09448 L 757.09376,655.59448 L 747.09376,665.59448 L 591.34314,665.59448 L 581.34314,655.59448 L 581.34314,634.09448 L 591.34314,624.09448 L 730.88408,624.09448"
+       id="path7531"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 688.6129,636.45332 L 673.6129,616.45332 L 608.6129,616.45332 L 608.6129,636.45332 L 668.6129,636.45332 L 688.6129,636.45332 z "
+       id="path7533"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.07430172px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="647.34863"
+       y="629.83624"
+       id="text7535"><tspan
+         sodipodi:role="line"
+         id="tspan7537"
+         x="647.34863"
+         y="629.83624"
+         style="text-align:center;text-anchor:middle;fill:#000000">KillCount (KC)</tspan></text>
+    <g
+       id="g7539"
+       transform="matrix(1,0,0,-1,103.61982,997.18332)">
+      <rect
+         y="364.59448"
+         x="616.34314"
+         height="20"
+         width="20"
+         id="rect7541"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text7543"
+         y="380.62085"
+         x="622.3739"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:22px;stroke:#008080"
+           y="380.62085"
+           x="622.3739"
+           id="tspan7545"
+           sodipodi:role="line">-</tspan></text>
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 624.73051,664.32807 L 629.93969,654.39228 L 645.56724,654.39228 L 645.56724,674.26387 L 629.93969,674.26387 L 624.73051,664.32807 z "
+       id="path7547"
+       sodipodi:nodetypes="cccccc" />
+    <g
+       id="g7549"
+       transform="translate(68.86968,260)">
+      <rect
+         y="394.09448"
+         x="651.2948"
+         height="20"
+         width="20"
+         id="rect7551"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text7553"
+         y="407.73462"
+         x="661.30701"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:10px;text-align:center;text-anchor:middle;stroke:#008080"
+           y="407.73462"
+           x="661.30701"
+           id="tspan7555"
+           sodipodi:role="line">CD</tspan></text>
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 668.99823,509.09448 L 653.99823,494.09448 L 599.43247,494.09448 L 599.43247,509.09448 L 653.99823,509.09448 L 668.99823,509.09448 z "
+       id="path7563"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="628.80408"
+       y="504.09448"
+       id="text7565"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="628.80408"
+         y="504.09448"
+         style="font-size:10px"
+         id="tspan7567">Flags (F)</tspan></text>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7583"
+       width="20"
+       height="20"
+       x="673.04291"
+       y="509.93814" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="683.05511"
+       y="523.57831"
+       id="text7585"><tspan
+         sodipodi:role="line"
+         id="tspan7587"
+         x="683.05511"
+         y="523.57831"
+         style="font-size:10px;text-align:center;text-anchor:middle;fill:#000000;stroke:none">Δ</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="577.80817"
+       y="-578.50183"
+       id="text7599"
+       transform="matrix(0,1,-1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan7601"
+         x="577.80817"
+         y="-578.50183"
+         style="font-size:6px">count (6 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="538.54199"
+       y="553.33563"
+       id="text7624"><tspan
+         sodipodi:role="line"
+         id="tspan7626"
+         x="538.54199"
+         y="553.33563"
+         style="font-size:6px">word (37 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="815.0929"
+       y="291.39304"
+       id="text7628"><tspan
+         sodipodi:role="line"
+         id="tspan7630"
+         x="815.0929"
+         y="291.39304"
+         style="font-size:6px">word (37 bits)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="720.37018"
+       y="458.0311"
+       id="text7632"><tspan
+         sodipodi:role="line"
+         id="tspan7634"
+         x="720.37018"
+         y="458.0311"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="837.24365"
+       y="495.99631"
+       id="text7636"><tspan
+         sodipodi:role="line"
+         id="tspan7638"
+         x="837.24365"
+         y="495.99631"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="837.24365"
+       y="530.98389"
+       id="text7640"><tspan
+         sodipodi:role="line"
+         id="tspan7642"
+         x="837.24365"
+         y="530.98389"
+         style="font-size:6px">decoded</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:8px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="726.94214"
+       y="352.61099"
+       id="text2357"><tspan
+         sodipodi:role="line"
+         id="tspan2359"
+         x="726.94214"
+         y="352.61099"
+         style="font-size:8px;text-align:center;text-anchor:middle;fill:#000000">NLC</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:8px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="636.92889"
+       y="666.90302"
+       id="text2362"><tspan
+         sodipodi:role="line"
+         id="tspan2364"
+         x="636.92889"
+         y="666.90302"
+         style="font-size:8px;text-align:center;text-anchor:middle;fill:#000000">NKC</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 663.34314,381.59448 L 743.88285,381.59448 L 749.34314,386.09448 L 749.34314,398.09448 L 744.34314,403.09448 L 594.34314,403.09448 L 589.34314,398.09448 L 589.34314,391.09448 L 594.34314,386.09448 L 614.34314,384.59448"
+       id="path3353"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 694.34314,388.09448 L 680.34314,371.09448 L 600.34314,371.09448 L 600.34314,388.09448 L 674.34314,388.09448 L 694.34314,388.09448 z "
+       id="path3355"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.07430172px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="605.22925"
+       y="382.94107"
+       id="text3357"><tspan
+         sodipodi:role="line"
+         id="tspan3359"
+         x="605.22925"
+         y="382.94107"
+         style="font-size:8px;text-align:start;text-anchor:start;fill:#000000">Repeat Count (RC)</tspan></text>
+    <g
+       id="g3361"
+       transform="matrix(1,0,0,-1,98,753.68896)">
+      <rect
+         y="364.59448"
+         x="616.34314"
+         height="20"
+         width="20"
+         id="rect3363"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3365"
+         y="380.62085"
+         x="622.3739"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:22px;stroke:#008080"
+           y="380.62085"
+           x="622.3739"
+           id="tspan3367"
+           sodipodi:role="line">-</tspan></text>
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 713.50641,404.15868 L 718.71559,394.22289 L 734.34314,394.22289 L 734.34314,414.09448 L 718.71559,414.09448 L 713.50641,404.15868 z "
+       id="path3369"
+       sodipodi:nodetypes="cccccc" />
+    <g
+       id="g3371"
+       transform="translate(-30.82196,-0.47614)">
+      <rect
+         y="394.09448"
+         x="651.2948"
+         height="20"
+         width="20"
+         id="rect3373"
+         style="fill:#ffffff;fill-opacity:1;stroke:#008080;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3375"
+         y="407.73462"
+         x="661.30701"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#008080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:10px;text-align:center;text-anchor:middle;stroke:#008080"
+           y="407.73462"
+           x="661.30701"
+           id="tspan3377"
+           sodipodi:role="line">CD</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:8px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="724.94214"
+       y="407.61099"
+       id="text3379"><tspan
+         sodipodi:role="line"
+         id="tspan3381"
+         x="724.94214"
+         y="407.61099"
+         style="font-size:8px;text-align:center;text-anchor:middle;fill:#000000">NRC</tspan></text>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 720.39153,519.48343 L 725.60071,509.54764 L 741.22826,509.54764 L 741.22826,529.41923 L 725.60071,529.41923 L 720.39153,519.48343 z "
+       id="path2350"
+       sodipodi:nodetypes="cccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:8px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="731.82727"
+       y="522.93573"
+       id="text2352"><tspan
+         sodipodi:role="line"
+         id="tspan2354"
+         x="731.82727"
+         y="522.93573"
+         style="font-size:8px;text-align:center;text-anchor:middle;fill:#000000">NF</tspan></text>
+  </g>
+</svg>
diff --git a/ports.svg b/ports.svg
new file mode 100644 (file)
index 0000000..07e5685
--- /dev/null
+++ b/ports.svg
@@ -0,0 +1,552 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="1052.3622"
+   height="744.09448"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="/Users/megacz/proj/fleet/doc"
+   sodipodi:docname="ports.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mstart"
+       style="overflow:visible">
+      <path
+         id="path3224"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3227"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         id="path3209"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.1836462"
+     inkscape:cx="679.09752"
+     inkscape:cy="195.2233"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     gridspacingx="2mm"
+     gridspacingy="2mm"
+     gridanglex="8.4666669mm"
+     gridanglez="8.4666669mm"
+     grid_units="mm"
+     inkscape:grid-bbox="false"
+     inkscape:grid-points="true"
+     inkscape:window-width="1454"
+     inkscape:window-height="1050"
+     inkscape:window-x="137"
+     inkscape:window-y="22"
+     width="1052.3622px"
+     height="744.09448px" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 439.37009,581.10236 L 609.44883,581.10236 C 609.44883,581.10236 616.87235,580.77704 616.53544,588.18897 L 616.53544,644.53543 C 616.53544,644.53543 617.19767,651.62204 609.44883,651.62204 L 411.02363,651.62204 C 411.02363,651.62204 403.93701,652.95808 403.93701,644.53543 L 403.93701,588.18897 C 402.92629,579.76632 411.02363,581.10236 411.02363,581.10236 L 439.37009,581.10236 z "
+       id="path2172"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 616.53543,602.18898 L 616.53543,630.53543"
+       id="path3421"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 616.53543,460.62992 L 843.30709,460.62992"
+       id="path3457"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 878.74016,191.33858 L 627.62205,191.33858"
+       id="path3413"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 616.53543,141.73228 L 846.3937,141.73228"
+       id="path3397"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 347.24409,496.06299 L 484.97638,496.06299"
+       id="path3195"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 450.45669,177.16535 L 357.41732,177.16535"
+       id="path3193"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 566.92913,581.10237 L 566.92913,524.40945"
+       id="path3147" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 425.19686,566.92914 L 425.19686,595.27559 L 460.62993,595.27559 L 474.80316,581.10237 L 460.62993,566.92914 L 425.19686,566.92914 z "
+       id="path2160" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 481.88977,566.92914 L 481.88977,595.27559 L 517.32284,595.27559 L 531.49607,581.10237 L 517.32284,566.92914 L 481.88977,566.92914 z "
+       id="path2162" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 588.18897,637.79527 L 588.18897,666.14172 L 552.7559,666.14172 L 538.58267,651.9685 L 552.7559,637.79527 L 588.18897,637.79527 z "
+       id="path2164" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 531.49606,637.79528 L 531.49606,666.14173 L 496.06299,666.14173 L 481.88976,651.96851 L 496.06299,637.79528 L 531.49606,637.79528 z "
+       id="path2166" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 474.80315,637.79527 L 474.80315,666.14172 L 439.37008,666.14172 L 425.19685,651.9685 L 439.37008,637.79527 L 474.80315,637.79527 z "
+       id="path2168" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 545.6693,566.92914 L 545.6693,595.27559 L 581.10237,595.27559 L 595.2756,581.10237 L 581.10237,566.92914 L 545.6693,566.92914 z "
+       id="path2170" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 488.97638,439.53292 L 488.97638,545.83213 L 616.53543,545.83213 L 666.14173,496.22584 L 616.53543,439.53292 L 488.97638,439.53292 z "
+       id="path2174"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 557.37175,545.83213 L 566.92913,531.49607 L 576.48651,545.83213 L 557.37175,545.83213 z "
+       id="path3149" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 566.92913,262.20473 L 566.92913,205.51181"
+       id="path3171" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#008000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 623.62205,120.47243 L 623.62205,226.77165 L 496.063,226.77165 L 446.4567,177.16535 L 496.063,120.47243 L 623.62205,120.47243 z "
+       id="path3187"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 557.37175,226.93449 L 566.92913,212.59843 L 576.48651,226.93449 L 557.37175,226.93449 z "
+       id="path3189" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3191"
+       width="177.16536"
+       height="552.75592"
+       x="177.16536"
+       y="106.29921" />
+    <g
+       id="g3407"
+       transform="translate(325.32331,106.75592)"
+       style="stroke:#800080">
+      <rect
+         y="74.409424"
+         x="439.37009"
+         height="21.259842"
+         width="21.259842"
+         id="rect3399"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="460.62991"
+         height="21.259842"
+         width="21.259842"
+         id="rect3401"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="481.88977"
+         height="21.259842"
+         width="21.259842"
+         id="rect3403"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="503.1496"
+         height="21.259842"
+         width="21.259842"
+         id="rect3405"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 876.04724,533.49606 L 635.62205,533.49606"
+       id="path3445"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g3447"
+       transform="translate(325.98424,448.91341)"
+       style="stroke:#800080">
+      <rect
+         y="74.409424"
+         x="439.37009"
+         height="21.259842"
+         width="21.259842"
+         id="rect3449"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="460.62991"
+         height="21.259842"
+         width="21.259842"
+         id="rect3451"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="481.88977"
+         height="21.259842"
+         width="21.259842"
+         id="rect3453"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="74.409424"
+         x="503.1496"
+         height="21.259842"
+         width="21.259842"
+         id="rect3455"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#800080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:52.43335342px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="205.51183"
+       y="396.8504"
+       id="text3459"><tspan
+         sodipodi:role="line"
+         id="tspan3461"
+         x="205.51183"
+         y="396.8504">Ship</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.72095108px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="484.06299"
+       y="622.36218"
+       id="text3467"><tspan
+         sodipodi:role="line"
+         id="tspan3469"
+         x="484.06299"
+         y="622.36218">Pump</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#800080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="703.63574"
+       y="184.24554"
+       id="text3479"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3481"
+         x="703.63574"
+         y="184.24554"
+         style="font-size:18px;text-align:center;text-anchor:middle;fill:#800080">Destination</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="703.61377"
+       y="134.64098"
+       id="text3483"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3485"
+         x="703.61377"
+         y="134.64098"
+         style="font-size:18px;text-align:center;text-anchor:middle;fill:#008080">Source</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="703.61377"
+       y="455.52747"
+       id="text3487"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3489"
+         x="703.61377"
+         y="455.52747"
+         style="font-size:18px;text-align:center;text-anchor:middle;fill:#008080">Source</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;fill:#800080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="651.99121"
+       y="528.39105"
+       id="text3491"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3493"
+         x="651.99121"
+         y="528.39105"
+         style="font-size:18px;fill:#800080">Destination</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#800080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="703.63574"
+       y="644.85944"
+       id="text3495"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3497"
+         x="703.63574"
+         y="644.85944"
+         style="font-size:18px;text-align:center;text-anchor:middle;fill:#800080">Destination</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 389.76378,680.31495 L 389.76378,708.66141"
+       id="path3501" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 389.76378,694.48818 L 155.90551,694.48818"
+       id="path3503" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 673.22835,680.31495 L 673.22835,708.66141"
+       id="path3507" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 673.22835,694.48818 L 850.3937,694.48818"
+       id="path3509" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 389.76378,694.48818 L 673.22835,694.48818"
+       id="path3511" />
+    <text
+       xml:space="preserve"
+       style="font-size:21.32734108px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="273.22864"
+       y="722.83466"
+       id="text3515"><tspan
+         sodipodi:role="line"
+         id="tspan3517"
+         x="273.22864"
+         y="722.83466">Ship</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.32734108px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="541.69458"
+       y="722.83466"
+       id="text3519"><tspan
+         sodipodi:role="line"
+         id="tspan3521"
+         x="541.69458"
+         y="722.83466"
+         style="text-align:center;text-anchor:middle">Docks</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.32734108px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="972.50598"
+       y="531.49603"
+       id="text3523"><tspan
+         sodipodi:role="line"
+         x="972.50598"
+         y="531.49603"
+         style="text-align:center;text-anchor:middle"
+         id="tspan3535">Output</tspan><tspan
+         sodipodi:role="line"
+         x="972.50598"
+         y="558.15521"
+         style="text-align:center;text-anchor:middle"
+         id="tspan3539">Port</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.10158062;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 871.70433,389.81456 C 871.70433,389.81456 885.82677,389.91124 885.82677,405.52036 L 885.82677,531.16676 C 885.82677,546.79199 899.94921,546.87256 899.94921,546.87256 C 899.94921,546.87256 885.82677,548.38826 885.82677,562.57837 L 885.82677,664.66606 C 885.82677,680.98468 871.70433,680.37186 871.70433,680.37186"
+       id="path3527"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 871.65354,106.29921 C 871.65354,106.29921 885.82677,106.38646 885.82677,120.47244 L 885.82677,233.85827 C 885.82677,247.95879 900,248.0315 900,248.0315 C 900,248.0315 885.82677,249.39929 885.82677,262.20473 L 885.82677,354.33071 C 885.82677,369.05696 871.65354,368.50394 871.65354,368.50394"
+       id="path3529"
+       sodipodi:nodetypes="ccccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:21.32734108px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="756.60126"
+       y="722.83466"
+       id="text3531"><tspan
+         sodipodi:role="line"
+         id="tspan3533"
+         x="756.60126"
+         y="722.83466"
+         style="text-align:center;text-anchor:middle">Switch Fabric</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.32734108px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="972.50598"
+       y="240.94487"
+       id="text3541"><tspan
+         sodipodi:role="line"
+         x="972.50598"
+         y="240.94487"
+         style="text-align:center;text-anchor:middle"
+         id="tspan3545">Input</tspan><tspan
+         sodipodi:role="line"
+         x="972.50598"
+         y="267.60405"
+         style="text-align:center;text-anchor:middle"
+         id="tspan3549">Port</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.72095108px;font-style:normal;font-weight:normal;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="565.48059"
+       y="488.62991"
+       id="text3551"><tspan
+         sodipodi:role="line"
+         id="tspan3553"
+         x="565.48059"
+         y="488.62991"
+         style="text-align:center;text-anchor:middle;fill:#008000">Data</tspan><tspan
+         sodipodi:role="line"
+         x="565.48059"
+         y="515.7811"
+         id="tspan3555"
+         style="text-align:center;text-anchor:middle;fill:#008000">Latch</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:21.72095108px;font-style:normal;font-weight:normal;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="548.9068"
+       y="167.03481"
+       id="text3565"><tspan
+         sodipodi:role="line"
+         id="tspan3567"
+         x="548.9068"
+         y="167.03481"
+         style="text-align:center;text-anchor:middle;fill:#008000">Data</tspan><tspan
+         sodipodi:role="line"
+         x="548.9068"
+         y="194.18599"
+         id="tspan3569"
+         style="text-align:center;text-anchor:middle;fill:#008000">Latch</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 680.31496,652.22401 L 595.2756,652.22401"
+       id="path3221"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 878.74016,652.224 L 627.62205,652.224"
+       id="path3423"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 439.37013,276.37794 L 609.44887,276.37794 C 609.44887,276.37794 616.87239,276.05262 616.53548,283.46455 L 616.53548,339.81101 C 616.53548,339.81101 617.19771,346.89762 609.44887,346.89762 L 411.02367,346.89762 C 411.02367,346.89762 403.93705,348.23366 403.93705,339.81101 L 403.93705,283.46455 C 402.92633,275.0419 411.02367,276.37794 411.02367,276.37794 L 439.37013,276.37794 z "
+       id="path3223"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 616.53547,297.46456 L 616.53547,325.81101"
+       id="path3225"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 425.1969,262.20472 L 425.1969,290.55117 L 460.62997,290.55117 L 474.8032,276.37795 L 460.62997,262.20472 L 425.1969,262.20472 z "
+       id="path3228" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 481.88981,262.20472 L 481.88981,290.55117 L 517.32288,290.55117 L 531.49611,276.37795 L 517.32288,262.20472 L 481.88981,262.20472 z "
+       id="path3230" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 588.18901,333.07085 L 588.18901,361.4173 L 552.75594,361.4173 L 538.58271,347.24408 L 552.75594,333.07085 L 588.18901,333.07085 z "
+       id="path3232" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 531.4961,333.07086 L 531.4961,361.41731 L 496.06303,361.41731 L 481.8898,347.24409 L 496.06303,333.07086 L 531.4961,333.07086 z "
+       id="path3234" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 474.80319,333.07085 L 474.80319,361.4173 L 439.37012,361.4173 L 425.19689,347.24408 L 439.37012,333.07085 L 474.80319,333.07085 z "
+       id="path3236" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 545.66934,262.20472 L 545.66934,290.55117 L 581.10241,290.55117 L 595.27564,276.37795 L 581.10241,262.20472 L 545.66934,262.20472 z "
+       id="path3238" />
+    <text
+       xml:space="preserve"
+       style="font-size:21.72095108px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="484.06305"
+       y="317.63776"
+       id="text3240"><tspan
+         sodipodi:role="line"
+         id="tspan3242"
+         x="484.06305"
+         y="317.63776">Pump</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#800080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="703.63574"
+       y="340.14563"
+       id="text3244"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3246"
+         x="703.63574"
+         y="340.14563"
+         style="font-size:18px;text-align:center;text-anchor:middle;fill:#800080">Destination</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 680.315,347.49959 L 595.27564,347.49959"
+       id="path3248"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#800080;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 878.74016,347.49958 L 627.62209,347.49958"
+       id="path3250"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>