prln("End recvData");
}
- /*
+
private void testRecvAndSendWalkingOne(Marina marina) {
prln("Begin testRecvAndSendWalkingOne");
adjustIndent(2);
- // FIXME
- marina.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC, CLEAR_FLAG, CLEAR_FLAG));
- marina.instrIn.fill(new Instruction.Move(DOCK,
- false, // requeueing
- Predicate.IgnoreOLC, // predicate
- true, // torpedoable
- null, // path
- false, // tokenIn
- true, // dataIn
- false, // latchData
- false, // latchPath
- false, // dataOut
- false // tokenOut
- ));
- marina.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC, SET_FLAG, SET_FLAG));
+ List<BitVector> dataItems;
+ for(int bit=0; bit<37; bit++) {
- prln("checking to confirm that A flag is cleared");
- fatal(marina.getFlagA(), "bad A flag: "+marina.getFlagA());
-
- prln("inserting data item in north fifo ring");
- BitVector data = new BitVector(37, "empty");
- BitVector addr = new BitVector(14, "empty");
- for(int i=0; i<data.getNumBits(); i++) data.set(i, false);
- for(int i=0; i<addr.getNumBits(); i++) addr.set(i, false);
- marina.fillNorthProperStopper(new MarinaPacket(data, false, addr));
+ BitVector data = new BitVector(37, "empty");
+ BitVector addr = new BitVector(14, "empty");
+ for(int i=0; i<data.getNumBits(); i++) data.set(i, false);
+ for(int i=0; i<addr.getNumBits(); i++) addr.set(i, false);
+ data.set(bit, true);
+ prln("testing with bit pattern " + data);
- prln("checking to see if A flag got set");
- fatal(!marina.getFlagA(), "bad A flag: "+marina.getFlagA());
+ prln("inserting data item into north fifo ring");
+ marina.fillNorthProperStopper(new MarinaPacket(data, false, addr));
+
+ prln("stopping the north proper stopper");
+ marina.data.stop();
+
+ dataItems = marina.data.drainMany(1);
+ fatal(dataItems.size()!=0,
+ "found a data item waiting in the north proper stopper, but should not have");
+
+ marina.instrIn.fill(new Instruction.Move(DOCK,
+ false, // requeueing
+ Predicate.IgnoreOLC, // predicate
+ true, // torpedoable
+ null, // path
+ false, // tokenIn
+ true, // dataIn
+ true, // latchData
+ false, // latchPath
+ true, // dataOut
+ false // tokenOut
+ ));
+
+ dataItems = marina.data.drainMany(2);
+ fatal(dataItems.size()!=1,
+ "found "+dataItems.size()+" data items in north fifo; expected one");
+ MarinaPacket mp = new MarinaPacket(dataItems.get(0));
+ fatalIfBitVectorsDoNotMatch(mp.data, data);
+ }
adjustIndent(-2);
prln("End testRecvAndSendWalkingOne");
}
-*/
+
private void setOlcFromDataLatch(Marina marina) {
case 3021: recvPath(marina); break;
case 3022: testILC(marina); break;
case 3023: testTorpedoOnAnInfiniteNop(marina); break;
- //case 3024: testRecvAndSendWalkingOne(marina); break;
+ case 3024: testRecvAndSendWalkingOne(marina); break;
case 3025: testOlcDecrementAtHighSpeed(marina); break;
default: