--- /dev/null
+<?xml version='1.0' encoding='utf-8'?>
+
+<!DOCTYPE model SYSTEM "ArchSimModel.dtd">
+
+<model name= "SimpleFleet">
+
+
+<component name= "SourceFunnel" type= "SourceFunnel4" />
+<component name= "InstructionHorn" type= "InstructionHorn4" />
+
+<component name= "Trunk" type= "Trunk" >
+ <parameter name="trunkArbiterDelay" value="5" />
+</component>
+
+<component name= "DestinationHorn" type= "DestinationHorn4" />
+
+<component name= "FetchAndIssue" type= "FetchAndIssue" >
+</component>
+
+<component name= "Fifo5" type= "FifoShip" >
+ <parameter name="fifoCapacity" value="5" />
+ <parameter name="backwardDelay" value="500" />
+</component>
+
+<component name= "Fifo2" type= "FifoShip" parameter="2" >
+ <parameter name="fifoCapacity" value="2" />
+ <parameter name="forwardDelay" value="100" />
+</component>
+
+<component name= "BitBucket" type= "BitBucket" />
+<component name= "ConstantOne" type= "Constant">
+ <parameter name="constantValue" value= "ONE" />
+</component>
+<component name= "ConstantTwo" type= "Constant" >
+ <parameter name= "constantValue" value="TWO" />
+</component>
+<!-- fetch and issue connections -->
+
+<connection name= "InstructionEntry">
+ <from component= "FetchAndIssue" terminal="InstructionOut" />
+ <to component= "InstructionHorn" terminal="In" />
+</connection>
+
+<connection name= "LiteralBypass">
+ <from component= "FetchAndIssue" terminal="LiteralOut" />
+ <to component= "Trunk" terminal="BypassIn" />
+</connection>
+
+<connection name= "BagNameIn">
+ <from component= "DestinationHorn" terminal="Out0" />
+ <to component= "FetchAndIssue" terminal="In" />
+</connection>
+
+<!-- trunk connections -->
+
+<connection name= "TrunkIn">
+ <from component= "SourceFunnel" terminal="Out" />
+ <to component= "Trunk" terminal="FabricIn" />
+</connection>
+
+<connection name= "TrunkOut">
+ <from component= "Trunk" terminal="Out" />
+ <to component= "DestinationHorn" terminal="In" />
+</connection>
+
+<!-- ship connections -->
+
+<connection name= "ConstOneOut">
+ <from component= "ConstantOne" terminal="Out" />
+ <to component= "SourceFunnel" terminal="SrcIn0" />
+</connection>
+
+<connection name= "Fifo5In">
+ <from component= "DestinationHorn" terminal="Out1" />
+ <to component= "Fifo5" terminal="In" />
+</connection>
+
+<connection name= "Fifo5Out">
+ <from component= "Fifo5" terminal="Out" />
+ <to component= "SourceFunnel" terminal="SrcIn1" />
+</connection>
+
+<connection name= "Fifo2In">
+ <from component= "DestinationHorn" terminal="Out2" />
+ <to component= "Fifo2" terminal="In" />
+</connection>
+
+<connection name= "Fifo2Out">
+ <from component= "Fifo2" terminal="Out" />
+ <to component= "SourceFunnel" terminal="SrcIn2" />
+</connection>
+
+<connection name= "BitBucketIn">
+ <from component= "DestinationHorn" terminal="Out3" />
+ <to component= "BitBucket" terminal="In" />
+</connection>
+
+<connection name= "ConstTwoOut">
+ <from component= "ConstantTwo" terminal="Out" />
+ <to component= "SourceFunnel" terminal="SrcIn3" />
+</connection>
+
+
+<!-- instruction tokens: instr horn to source funnel -->
+
+<connection name= "InstrToken0">
+ <from component= "InstructionHorn" terminal="Out0" />
+ <to component= "SourceFunnel" terminal="In0" />
+</connection>
+
+<connection name= "InstrToken1">
+ <from component= "InstructionHorn" terminal="Out1" />
+ <to component= "SourceFunnel" terminal="In1" />
+</connection>
+
+<connection name= "InstrToken2">
+ <from component= "InstructionHorn" terminal="Out2" />
+ <to component= "SourceFunnel" terminal="In2" />
+</connection>
+
+<connection name= "InstrToken3">
+ <from component= "InstructionHorn" terminal="Out3" />
+ <to component= "SourceFunnel" terminal="In3" />
+</connection>
+
+</model>
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='utf-8'?>
+
+<!-- Component library -->
+
+<!DOCTYPE component_list SYSTEM "ComponentList.dtd">
+
+<component_list>
+
+<!--
+THE FOLLOWING GROUP OF COMPONENTS IS USED FOR BUILDING SWITCH FABRICS.
+-->
+
+<component>
+<type>SourceFunnel</type>
+<class> com.sunlabs.archsim.fleet.HornAndFunnel.SourceFunnel </class>
+<info>
+ <tag value="FABRIC"/>
+ <!--
+ Inputs: In0, In1, ..., InK
+ SrcIn0, SrcIn1, ..., SrcInK
+ -->
+ <output name="Out" />
+ <parameter name= "depth" type="int"/>
+ <global name="mergeArbiterDelay" type="int" />
+ <global name="mergePassDelay" type="int" />
+ <global name="mergeAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Takes Payload (instruction) inputs on InX, and Data inputs on
+ SrcInX. When both inputs are received, the data is inserted
+ into the payload and funneled to Out.
+Global parameters:
+ mergeArbiterDelay
+ mergePassDelay
+ mergeAckDelay
+Individual parameter:
+ depth = Depth of the tree. The number of input pairs is 2 ^ (depth).
+-->
+</component>
+
+<component>
+<type>InstructionHorn</type>
+<class> com.sunlabs.archsim.fleet.HornAndFunnel.InstructionHorn </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <!--
+ Outputs: Out0, Out1, ... , OutK
+ -->
+ <parameter name= "depth" type="int"/>
+</info>
+<!--
+Behavior:
+ Instruction horn - takes Payloads (Instructions) on In,
+ steers them to the output determined by the source
+ attribute from Payload.
+Global parameters:
+Individual parameters:
+ depth = depth of the tree. The number of outputs is 2 ^ (depth).
+-->
+</component>
+
+<component>
+<type>DestinationHorn</type>
+<class> com.sunlabs.archsim.fleet.HornAndFunnel.DestinationHorn </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <!--
+ Outputs: Out0, Out1, ... , OutK
+ -->
+ <parameter name= "depth" type="int"/>
+</info>
+<!--
+Behavior:
+ Horn, - takes Payloads (Instructions) on In,
+ steers them to the output determined by the destination
+ attribute from Payload.
+Individual parameter:
+ depth = d of the tree. The number of outputs is 2 ^ (depth).
+-->
+</component>
+
+<component>
+<type>DataMaskBranch</type>
+<class> com.sunlabs.archsim.fleet.components.switchFabric.DataMaskBranch </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out0" />
+ <output name="Out1" />
+ <parameter name="branchMask" type="int" />
+ <parameter name= "branchMaskBit" type="int" />
+</info>
+<!--
+Behavior:
+ Input received on In is steered either to Out0 or Out1, depending on the
+ specified bit in Integer data carried by Payload.
+Individual parameters:
+ branchMask (default = 1)
+ branchMaskBit (default = 0)
+-->
+</component>
+
+<component>
+<type>DestinationMaskBranch</type>
+<class> com.sunlabs.archsim.fleet.components.switchFabric.DestinationMaskBranch </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out0" />
+ <output name="Out1" />
+ <parameter name="branchMask" type="int" />
+ <parameter name= "branchMaskBit" type="int" />
+</info>
+<!--
+Behavior:
+ Input received on In is steered either to Out0 or Out1, depending on the
+ specified bit in the Payload's destination
+Individual parameters:
+ branchMask (default = 1)
+ branchMaskBit (default = 0)
+-->
+</component>
+
+<component>
+<type>SourceMaskBranch</type>
+<class> com.sunlabs.archsim.fleet.components.switchFabric.SourceMaskBranch </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out0" />
+ <output name="Out1" />
+ <parameter name="branchMask" type="int"/>
+ <parameter name= "branchMaskBit" type="int"/>
+</info>
+<!--
+Behavior:
+ Input received on In is steered either to Out0 or Out1, depending on the
+ specified bit in the Payload's source
+Individual parameters:
+ branchMask (default = 1)
+ branchMaskBit (default = 0)
+-->
+</component>
+
+<component>
+<type>ToggleBranch</type>
+<class> com.sunlabs.archsim.fleet.components.switchFabric.ToggleBranch </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out0" />
+ <output name="Out1" />
+ <parameter name="branchFanout" type="int"/>
+</info>
+<!--
+Inputs: In
+Outputs: Out0, Out1, ... , OutK
+Behavior:
+ Input received on In is steered to Out0, Out1, ... , OutK
+ in a round robin fashion
+Individual parameters:
+ branchFanout (default = 2)
+-->
+</component>
+
+<component>
+<type>Merge</type>
+<class> com.sunlabs.archsim.fleet.components.switchFabric.Merge </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In0" />
+ <input name="In1" />
+ <output name="Out" />
+ <parameter name="mergeFanIn" type="int"/>
+ <parameter name= "mergeArbiterDelay" type="int"/>
+ <parameter name= "mergePassDelay" type="int"/>
+ <parameter name= "mergeAckDelay" type="int"/>
+ <parameter name= "mergeArbiterActionPassDelay" type="int"/>
+ <parameter name= "mergeIntouActionPassDelay" type="int"/>
+ <parameter name= "mergeInpuAckDelay" type="int"/>
+ <parameter name= "mergeOutputAckDelay" type="int"/>
+ <global name="mergeArbiterDelay" type="int" />
+ <global name="mergePassDelay" type="int" />
+ <global name="mergeAckDelay" type="int" />
+ <global name="mergeArbiterActionPassDelay" type="int" />
+ <global name="mergeIntouActionPassDelay" type="int" />
+ <global name="mergeInpuAckDelay" type="int" />
+ <global name="mergeOutputAckDelay" type="int" />
+</info>
+<!--
+Inputs: In0, in2, ..., InK
+Outputs: Out
+Behavior: Demand merge - all inputs are steered to one output
+-->
+</component>
+
+<component>
+<type>DataPayloadMerge</type>
+<class> com.sunlabs.archsim.fleet.HornAndFunnel.SourceSync </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <input name="SrcIn" />
+ <output name="Out" />
+</info>
+<!--
+Behavior:
+ Inserts Data arrraiving at SrcIn into Payload arriving at In. After both
+ inputs had arrived, it produces a Payload with inserted Data on Out.
+-->
+</component>
+
+
+<component>
+<type>Trunk</type>
+<class> com.sunlabs.archsim.fleet.components.trunk.Trunk </class>
+<info>
+ <tag value="FABRIC"/>
+
+ <input name="FabricIn" />
+ <input name="BypassIn" />
+
+ <output name="Out" />
+
+ <parameter name="trunkArbiterDelay" type="int"/>
+ <parameter name="trunkCopyDelay" type="int"/>
+ <parameter name="trunkAckDelay" type="int"/>
+
+ <global name="trunkArbiterDelay" type="int" />
+ <global name="trunkCopyDelay" type="int" />
+ <global name="trunkAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Essentially a demand merge - merges inputs on BypassIn (literals) and on
+ FabricIn ("regular" instructions) in one output Out. The two sources of inputs are
+ arbitrated.
+-->
+</component>
+
+<component>
+<type>FifoElement</type>
+<class> com.sunlabs.archsim.fleet.ships.fifo.FifoElement </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out" />
+ <parameter name="forwardDelay" type="int"/>
+ <parameter name="backwardDelay" type="int"/>
+ <global name="fifoForwardDelay" type="int" />
+ <global name="fifoBackwardDelay" type="int" />
+</info>
+<!--
+Inputs: In
+Outputs: Out
+Behavior:
+ A fifo element. Elements strung together form a Fifo
+ Can only be used in a switch fabric not as a ship.
+-->
+</component>
+
+
+<component>
+<type>Fifo</type>
+<class> com.sunlabs.archsim.fleet.ships.fifo.Fifo </class>
+<info>
+ <tag value="FABRIC"/>
+ <input name="In" />
+ <output name="Out" />
+ <parameter name="fifoCapacity" type="int"/>
+ <parameter name="forwardDelay" type="int"/>
+ <parameter name="backwardDelay" type="int"/>
+ <global name="fifoForwardDelay" type="int" /> <!-- applies to one element -->
+ <global name="fifoBackwardDelay" type="int" /> <!-- applies to one element -->
+</info>
+<!--
+Behavior:
+ A fifo.
+ Can only be used in a switch fabric not as a ship.
+-->
+</component>
+
+<!--
+
+THE FOLLOWING IS IS A LIST OF SHIPS.
+
+-->
+
+<component>
+<type>FetchAndIssue</type>
+<class> com.sunlabs.archsim.fleet.ships.fetchAndIssue.FetchAndIssue </class>
+<info>
+ <tag value="SHIP"/> <input name="In" />
+ <output name="InstructionOut" />
+ <output name="LiteralOut" />
+ <global name="instructionIssueDelay" type="int" />
+ <global name="literalIssueDelay" type="int" />
+ <global name="fetchDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Takes a ship name in, fetches the code, issues literals and instructions
+ on corresponding output.
+-->
+</component>
+
+<component>
+<type>Accumulator</type>
+<class> com.sunlabs.archsim.fleet.ships.accumulator.Accumulator </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <output name="Out" />
+ <global name="accumulatorOutDelay" type="int" />
+ <global name="accumulatorAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Take numbers on In, accumulate values.
+ When OOB data is received, the sum is produced on Out,
+ and the accumulator is reset.
+-->
+</component>
+
+<component>
+<type>TokenAccumulator</type>
+<class> com.sunlabs.archsim.fleet.ships.tokenaccumulator.TokenAccumulator </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="DataIn" />
+ <input name="TokenOut" />
+ <output name="DataOut" />
+ <output name="TokenIn" />
+</info>
+<!--
+Behavior:
+ Take numbers on In, accumulate values.
+ When OOB data is received, the sum is produced on Out,
+ and the accumulator is reset.
+ TokenIn (output) and DataIn (input) form a request acknowledge
+ interface for receiving data.
+ Token Out (input)and DataOut (output) form a request-acknowledge
+ interface for the sum.
+-->
+</component>
+
+<component>
+<type>Adder</type>
+<class> com.sunlabs.archsim.fleet.ships.adder.Adder </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In1" />
+ <input name="In2" />
+ <output name="Out" />
+ <global name="adderDelay" type="int" />
+ <global name="adderAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Receive two numbers on In1 and In2, then produce the sum on Out.
+-->
+</component>
+
+<component>
+<type>TokenAdder</type>
+<class> com.sunlabs.archsim.fleet.ships.tokenadder.TokenAdder </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In1" />
+ <input name="In2" />
+ <input name="TokenOut"/>
+ <output name="Out" />
+ <output name="TokenIn1" />
+ <output name="TokenIn1" />
+ <global name="tokenAdderDelay" type="int" />
+ <global name="tokenAdderAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Receive two numbers on In1 and In2, then produce the sum on Out.
+ Request-acknowledge pairs forming the token interface
+ are: < In1, TokenIn1 >, < In2, TokenIn2 >, < TokenOut, Out >
+-->
+</component>
+
+<component>
+<type>AdderOOB</type>
+<class> com.sunlabs.archsim.fleet.ships.adder_oob.Adder_oob </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In1" />
+ <input name="In2" />
+ <output name="Out" />
+ <global name="adderOOBDelay" type="int" />
+ <global name="adderOOBAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Receive two numbers on In1 and In2, then produce the sum on Out.
+ The difference between Adder and Adder_oob is that when A
+ dder_oob receives a OOB data on both inputs, it will produce
+ an null Data, which will be propagated to other ships on the
+ computation path and disassemble any standing MOVEs on it's
+ way. This is used in the Fibonacci Fleet for terminating the
+ computation.
+-->
+</component>
+
+<component>
+<type>BitBucket</type>
+<class> com.sunlabs.archsim.fleet.ships.bitbucket.BitBucket </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <parameter name="bitBucketdelay" type="int" />
+ <parameter name="bitBucketKeepData" type="int" />
+ <global name="bitBucketdelay" type="int" />
+ <global name="bitBucketKeepData" type="int" />
+</info>
+<!--
+Behavior:
+ Takes any input and "throws it away".
+ Will keep all data if asked to - useful for testing.
+-->
+</component>
+
+<component>
+<type>Constant</type>
+<class> com.sunlabs.archsim.fleet.ships.constant.Constant </class>
+<info>
+ <tag value="SHIP"/>
+ <output name="Out" />
+ <parameter name="constantValue" type="any" />
+ <parameter name="constantDelay" type="int" />
+ <global name="constantValue" type="any" />
+ <global name="constantDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Always produces the same constrant (integer, boolean, or string)
+-->
+</component>
+
+<component>
+<type>Duplicator</type>
+<class> com.sunlabs.archsim.fleet.ships.duplicator.Duplicator </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <output name="Out1" />
+ <output name="Out2" />
+ <global name="duplicatorDelay" type="int" />
+ <global name="duplicatorAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Duplicates data. For each input it receives,
+ it produces a copy of it on both outputs.
+-->
+</component>
+
+
+<component>
+<type>FifoShipElement</type>
+<class> com.sunlabs.archsim.fleet.ships.fifo.FifoShipElement </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <output name="Out" />
+ <parameter name="forwardDelay" type="int" />
+ <parameter name="fifoBackwardDelay" type="int" />
+ <global name="fifoShipForwardDelay" type="int" />
+ <global name="fifoShipBackwardDelay" type="int" />
+</info>
+<!--
+Behavior:
+ A fifo element. Elements strung together form a Fifo
+ Can only be used as a ship, or a part of a ship,
+ not as a fifo in a switch fabric.
+-->
+</component>
+
+
+<component>
+<type>FifoShip</type>
+<class> com.sunlabs.archsim.fleet.ships.fifo.FifoShip </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <output name="Out" />
+ <parameter name="fifoCapacity" type="int" />
+ <parameter name="forwardDelay" type="int" /> <!-- applies to one element -->
+ <parameter name="fifoBackwardDelay" type="int" /> <!-- applies to one element -->
+ <global name="fifoShipForwardDelay" type="int" />
+ <global name="fifoShipBackwardDelay" type="int" />
+</info>
+<!--
+Behavior:
+ A fifo. Can only be used as a ship, not as a fifo in a switch fabric.
+-->
+</component>
+
+<component>
+<type>TokenFifoShipElement</type>
+<class> com.sunlabs.archsim.fleet.ships.tokenFifo.TokenFifoShipElement </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <input name="TokenIn" />
+ <output name="Out" />
+ <output name="TokenOut" />
+ <parameter name="forwardDelay" type="int" />
+ <parameter name="backwardDelay" type="int" />
+ <parameter name="tokenDelay" type="int" />
+ <parameter name="ackTokenDelay" type="int" />
+ <global name="fifoShipForwardDelay" type="int" />
+ <global name="fifoShipBackwardDelay" type="int" />
+</info>
+<!--
+Behavior:
+ A token fifo ship element. Elements strung together form a TokenFifo
+ Can only be used as a ship, not as a fifo in a switch fabric.
+ <In, TokenOut>, <TokenIn, Out>
+-->
+</component>
+
+<component>
+<type>TokenFifoShip</type>
+<class> com.sunlabs.archsim.fleet.ships.tokenFifo.TokenFifoShip </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In" />
+ <input name="TokenIn" />
+ <output name="Out" />
+ <output name="TokenOut" />
+ <parameter name="fifoCapacity" type="int" />
+ <parameter name="forwardDelay" type="int" />
+ <parameter name="backwardDelay" type="int" />
+ <parameter name="tokenDelay" type="int" />
+ <parameter name="ackTokenDelay" type="int" />
+ <global name="fifoShipForwardDelay" type="int" />
+ <global name="fifoShipBackwardDelay" type="int" />
+</info>
+<!--
+Behavior:
+ FifoShip with token interface.
+ Request acknowledge pairs are: <In, TokenOut>, <TokenIn, Out>
+-->
+</component>
+
+<component>
+<type>SimpleMemory</type>
+<class> com.sunlabs.archsim.fleet.ships.memory.SimpleMemory </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="ReadAddress" />
+ <input name="WriteAddress" />
+ <input name="WriteData" />
+ <output name="ReadData" />
+ <output name="WriteNext" />
+ <parameter name="readDelay" type="int" />
+ <parameter name="writeDelay" type="int" />
+ <parameter name="ackDelay" type="int" />
+ <parameter name="ackReadDelay" type="int" />
+ <parameter name="ackWriteDelay" type="int" />
+ <global name="simpleMemoryReadDelay" type="int" />
+ <global name="simpleMemoryWriteDelay" type="int" />
+ <global name="simpleMemoryAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Memory. Read and write interface operat concurrently.
+ No pipelining - one piece of data is operated on at a time (on
+ each read and write side).
+-->
+</component>
+
+<component>
+<type>Selector</type>
+<class> com.sunlabs.archsim.fleet.ships.selector.Selector </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="In1" />
+ <input name="In2" />
+ <input name="InSelect" />
+ <output name="Out" />
+ <global name="selectorDelay" type="int" />
+ <global name="selectorAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ Selector selects between data on In1 and In2, depending on
+ the value it receives on InSelect: 1 selects In1, 2 selects In2.
+ The selcted value is produced on Out.
+ Upon receiving a LAST on its Select input, it will wait for
+ a LAST to arrive on In1 and In2, consuming and ignoring all
+ non LAST data.
+-->
+</component>
+
+<component>
+<type>Stride</type>
+<class> com.sunlabs.archsim.fleet.ships.stride.Stride </class>
+<info>
+ <tag value="SHIP"/>
+ <input name="StartValue" />
+ <input name="Step" />
+ <input name="StepCount" />
+ <input name="Next" />
+ <output name="Counter" />
+ <output name="Done" />
+ <parameter name="ackDelay" type="int" />
+ <parameter name="counterDelay" type="int" />
+ <global name="strideCounterDelay" type="int" />
+ <global name="strideAckDelay" type="int" />
+</info>
+<!--
+Behavior:
+ This is a counter. Setup by providing start value, step size,
+ and step count. Ask for the next value by providing an
+ input on Next. The response is a value on Counter.
+ When the counting is complete, an otput is produced on
+ Done - this is a token that indicates that the stride
+ is ready for the next setup.
+-->
+</component>
+
+<!--
+
+THESE ARE THE COMPONENTS MADE FOR SPECIALLY FOR COURSE ASSIGNMENTS.
+WHICH SHOULD MAKE IT INTO OUR GENERAL REPERTOAIRE?
+
+-->
+
+<component>
+<type>TwoMerge</type>
+<class> com.sunlabs.archsim.assignJan25.TwoMerge </class>
+</component>
+
+<component>
+<type>Toggle</type>
+<class> com.sunlabs.archsim.assignJan25.Toggle </class>
+</component>
+
+<component>
+<type>RandomBranch</type>
+<class> com.sunlabs.archsim.assignJan25.RandomBranch </class>
+</component>
+
+<component>
+<type>MaskBranch</type>
+<class> com.sunlabs.archsim.assignJan25.MaskBranch </class>
+</component>
+
+<component>
+<type>PayloadSource</type>
+<class> com.sunlabs.archsim.assignJan18.Source </class>
+</component>
+
+<component>
+<type>PayloadSink</type>
+<class> com.sunlabs.archsim.assignJan18.Sink </class>
+</component>
+
+<!--
+
+THESE COMPONENTS ARE INTENDED FOR USE IN AUTOMATED TESTING.
+THEY HAVE ADDITIONAL APIs THAT ACCOMODATE TEST REQUIREMENTS.
+THEY MAY OR MAY NOT CONFORM TO THE CONVENTION THAT A SHIP
+PRODUCES A Data OBJECT AND RECEIVES A Payload OBJECT,
+WHILE SWITCH FABRIC COMPONENTS RECEIVE AND PRODUCE
+Payload OBJECTS.
+
+-->
+
+
+<component>
+<type>TestDataSink</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.DataSink </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>TestDataSource</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.DataSource </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>TestIntegerSequenceSource</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.IntegerSequenceSource </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>TestPayloadSink</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.PayloadSink </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>TestPayloadSource</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.PayloadSource </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>TestTokenSource</type>
+<class> com.sunlabs.archsim.fleet.ships.testing.TokenSource </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<component>
+<type>InstructionHorn4</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.InstructionHorn4 </class>
+<!--
+Used in automated testing. See code.
+-->
+</component>
+
+<!--
+
+THESE COMPONENTS MAY DISAPPEAR OR MAY NEED FIXING.
+THEY WERE USED IN VERY EARLY TESTS.
+WE LIST THEM HERE FOR OLD TESTS TO STILL RUN.
+
+-->
+
+<component>
+<type>InstructionHorn8</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.InstructionHorn8 </class>
+</component>
+
+<component>
+<type>InstructionHorn16</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.InstructionHorn16 </class>
+</component>
+
+<component>
+<type>SourceFunnel4</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.SourceFunnel4 </class>
+</component>
+
+<component>
+<type>SourceFunnel8</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.SourceFunnel8 </class>
+</component>
+
+<component>
+<type>SourceFunnel16</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.SourceFunnel16 </class>
+</component>
+
+<component>
+<type>DestinationHorn4</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.DestinationHorn4 </class>
+</component>
+
+<component>
+<type>DestinationHorn8</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.DestinationHorn8 </class>
+</component>
+
+<component>
+<type>DestinationHorn16</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.DestinationHorn16 </class>
+</component>
+
+<component>
+<type>InstructionGenerator</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.TestInstrGen </class>
+</component>
+
+<component>
+<type>InstrGen4</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.TestInstrGen4 </class>
+</component>
+
+<component>
+<type>TestShip</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.TestShip </class>
+</component>
+
+<component>
+<type>TestShipRnd</type>
+<class> com.sunlabs.archsim.fleet.components.hornAndFunnelFabric.TestShipRnd </class>
+</component>
+
+</component_list>