added ports diagram to architecture manual
authoradam <adam@megacz.com>
Sat, 25 Aug 2007 04:21:24 +0000 (05:21 +0100)
committeradam <adam@megacz.com>
Sat, 25 Aug 2007 04:21:24 +0000 (05:21 +0100)
Makefile
doc/archman.tex
doc/ports.svg [new file with mode: 0644]

index 9515eee..2974747 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -100,11 +100,6 @@ synth:
 #      $(xilinx)trce -intstyle xflow -e 3 -l 3 -s 6 -xml main main.ncd -o main.twr main.pcf
 
 
-manual: fleet.jar
-       $(java) -jar fleet.jar doc
-       cd .tmp; TEXINPUTS=$$TEXINPUTS:../doc/ pdflatex *.tex
-       open .tmp/*.pdf
-
 
 test:     fleet.jar; $(java) -jar fleet.jar             test ships/*.ship tests
 testfpga: fleet.jar; $(java) -jar fleet.jar target=fpga test ships/*.ship tests
@@ -112,6 +107,20 @@ testfpga: fleet.jar; $(java) -jar fleet.jar target=fpga test ships/*.ship tests
 generate: fleet.jar
        $(java) -cp fleet.jar edu.berkeley.fleet.fpga.Generator build/fpga/
 
+## Manual ####################################################################################
+
+svgs    = $(shell find doc -name \*.svg)
+%.eps: %.svg
+       DISPLAY= /Applications/Inkscape.app/Contents//Resources/bin/inkscape  -z --export-area-drawing $^ --export-eps=$@
+
+%.pdf: %.eps
+       epstopdf $^ --outfile=$@
+
+manual: fleet.jar $(svgs:%.svg=%.pdf)
+       $(java) -jar fleet.jar doc
+       cd .tmp; TEXINPUTS=$$TEXINPUTS:../doc/ pdflatex *.tex
+       open .tmp/*.pdf
+
 ## API docs ####################################################################################
 
 javadoc:
index 707e71a..5d79cc8 100644 (file)
@@ -1,6 +1,7 @@
 \documentclass[10pt,oneside]{book}
 \reversemarginpar 
 \usepackage{palatino}
+\usepackage{epsfig}
 \usepackage{parskip}
 \usepackage{register}
 \usepackage{bytefield}
@@ -22,6 +23,38 @@ Bypass\\
 
 
 \pagebreak
+\section*{Programmer's View of The Ship-Fabric Interface}
+
+The diagram below represents a {\it programmer's} conceptual view of
+the interface between ships and the switch fabric.  Actual
+implementations may differ radically, as long as such differences are
+not visible to software programs.
+
+%\begin{wrapfigure}{R}{2in}
+\epsfig{file=ports,width=6in}
+%\end{wrapfigure}
+
+The term {\it port} refers to each interface to the ship (either
+inbound or outbound) and the machinery required to manage this
+interface.  The machinery consists of a {\it latch}, which is as wide
+as a single machine word, a {\it pump}, which is a circular fifo of
+instruction-width latches, and a number of {\it sources} or {\it
+  destinations}.  Sources and destinations which can only send or
+recieve tokens (rather than data items) are drawn as dashed lines.
+Buffering fifos are drawn where they appear.
+
+Note in particular that every pump is a destination capable of
+recieving a data word.  This is how instructions are dispatched to
+pumps -- they are inserted into the switch fabric as {\it packets}
+whose destination addresses
+
+Note that addresses are actually paths.
+
+Define packets.
+
+
+
+\pagebreak
 \section*{Data Formats}
 
 \subsection*{Packet Destination Address (12 bits)}
diff --git a/doc/ports.svg b/doc/ports.svg
new file mode 100644 (file)
index 0000000..bc2ab2d
--- /dev/null
@@ -0,0 +1,540 @@
+<?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.5855365"
+     inkscape:cx="510.02639"
+     inkscape:cy="102.56622"
+     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="1163"
+     inkscape:window-x="369"
+     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 822.04724,581.10236 L 623.62205,581.10236 C 623.62205,581.10236 615.86162,580.77705 616.53543,588.18898 L 616.53543,616.53543"
+       id="path3421"
+       sodipodi:nodetypes="cccc" />
+    <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 850.3937,581.10236 L 627.62205,581.10236"
+       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 822.04724,262.20472 L 623.62205,262.20472 C 623.62205,262.20472 615.86162,261.87941 616.53543,269.29134 L 616.53543,297.63779"
+       id="path3417"
+       sodipodi:nodetypes="cccc" />
+    <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 850.3937,262.20472 L 627.62205,262.20472"
+       id="path3419"
+       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 850.3937,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 385.76378,496.06299 L 484.97638,496.06299"
+       id="path3195" />
+    <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 393.76378,177.16535"
+       id="path3193" />
+    <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: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:#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="212.59842"
+       y="106.29921" />
+    <g
+       id="g3407"
+       transform="translate(299.46456,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 850.04724,533.49606 L 635.62205,533.49606"
+       id="path3445"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g3447"
+       transform="translate(299.46456,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="240.94489"
+       y="396.8504"
+       id="text3459"><tspan
+         sodipodi:role="line"
+         id="tspan3461"
+         x="240.94489"
+         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:12.39046097px;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="646.73108"
+       y="256.02255"
+       id="text3475"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3477"
+         x="646.73108"
+         y="256.02255"
+         style="fill:#800080">Destination</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12.39046097px;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="644.90436"
+       y="184.24554"
+       id="text3479"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3481"
+         x="644.90436"
+         y="184.24554"
+         style="fill:#800080">Destination</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12.39046097px;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="644.90436"
+       y="134.64098"
+       id="text3483"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3485"
+         x="644.90436"
+         y="134.64098"
+         style="fill:#008080">Source</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12.39046097px;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="666.16492"
+       y="455.52747"
+       id="text3487"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3489"
+         x="666.16492"
+         y="455.52747"
+         style="fill:#008080">Source</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12.39046097px;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="653.99127"
+       y="528.39105"
+       id="text3491"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3493"
+         x="653.99127"
+         y="528.39105"
+         style="fill:#800080">Destination</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12.39046097px;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="653.99127"
+       y="575.99573"
+       id="text3495"
+       transform="scale(0.9999652,1.0000348)"><tspan
+         sodipodi:role="line"
+         id="tspan3497"
+         x="653.99127"
+         y="575.99573"
+         style="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">Valves</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;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 871.65354,389.76377 C 871.65354,389.76377 885.82677,389.85102 885.82677,403.937 L 885.82677,517.32283 C 885.82677,531.42335 900,531.49606 900,531.49606 C 900,531.49606 885.82677,532.86385 885.82677,545.66929 L 885.82677,637.79527 C 885.82677,652.52152 871.65354,651.9685 871.65354,651.9685"
+       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;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 439.37008,262.55118 L 609.44882,262.55118 C 609.44882,262.55118 616.87234,262.22586 616.53543,269.63779 L 616.53543,325.98425 C 616.53543,325.98425 617.19766,333.07086 609.44882,333.07086 L 411.02362,333.07086 C 411.02362,333.07086 403.937,334.4069 403.937,325.98425 L 403.937,269.63779 C 402.92628,261.21514 411.02362,262.55118 411.02362,262.55118 L 439.37008,262.55118 z "
+       id="path2247"
+       sodipodi:nodetypes="cccccccccc" />
+    <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.02363,249.11811 L 425.02363,277.46456 L 460.4567,277.46456 L 474.62993,263.29134 L 460.4567,249.11811 L 425.02363,249.11811 z "
+       id="path2249" />
+    <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.71654,249.11811 L 481.71654,277.46456 L 517.14961,277.46456 L 531.32284,263.29134 L 517.14961,249.11811 L 481.71654,249.11811 z "
+       id="path2251" />
+    <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.01574,319.98424 L 588.01574,348.33069 L 552.58267,348.33069 L 538.40944,334.15747 L 552.58267,319.98424 L 588.01574,319.98424 z "
+       id="path2253" />
+    <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.32283,319.98425 L 531.32283,348.3307 L 495.88976,348.3307 L 481.71653,334.15748 L 495.88976,319.98425 L 531.32283,319.98425 z "
+       id="path2255" />
+    <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.62992,319.98424 L 474.62992,348.33069 L 439.19685,348.33069 L 425.02362,334.15747 L 439.19685,319.98424 L 474.62992,319.98424 z "
+       id="path2257" />
+    <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.49607,249.11811 L 545.49607,277.46456 L 580.92914,277.46456 L 595.10237,263.29134 L 580.92914,249.11811 L 545.49607,249.11811 z "
+       id="path2259" />
+    <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="483.88974"
+       y="304.55118"
+       id="text2261"><tspan
+         sodipodi:role="line"
+         id="tspan2263"
+         x="483.88974"
+         y="304.55118">Pump</tspan></text>
+  </g>
+</svg>