prln("End recvData");
}
+ private void setOlcFromDataLatch(Marina marina) {
+ prln("Begin setOlcFromDataLatch");
+ adjustIndent(2);
+
+ // walk a bit from 0 to 5
+ for(int bit=0; bit<6; bit++) {
+ 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);
+ data.set(bit, true);
+ marina.fillNorthProperStopper(new MarinaPacket(data, false, addr));
+
+ marina.instrIn.fill(RECV_DATA);
+ marina.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC,SetDest.OuterLoopCounter,SetSource.DataLatch));
+
+ int olc = marina.getOLC();
+ fatal(olc != (1<<bit), "expected olc to be " + (1<<bit) + ", but got " + olc);
+ }
+
+ adjustIndent(-2);
+ prln("End setOlcFromDataLatch");
+ }
+
+ private void setIlcFromDataLatch(Marina marina) {
+ prln("Begin setIlcFromDataLatch");
+ adjustIndent(2);
+
+ // walk a bit from 0 to 5
+ for(int bit=0; bit<6; bit++) {
+ 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);
+ data.set(bit, true);
+ marina.fillNorthProperStopper(new MarinaPacket(data, false, addr));
+
+ marina.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC,SetDest.InnerLoopCounter,1));
+ marina.instrIn.fill(RECV_DATA);
+ marina.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC,SetDest.InnerLoopCounter,SetSource.DataLatch));
+
+ int ilc = marina.getILC().getCount();
+ fatal(ilc != (1<<bit), "expected ilc to be " + (1<<bit) + ", but got " + ilc);
+ }
+
+ adjustIndent(-2);
+ prln("End setIlcFromDataLatch");
+ }
+
private void testSendAndRecvToken(Marina marina) {
prln("Begin testSendAndRecvToken");
adjustIndent(2);
edu.berkeley.fleet.api.BitVector bv = new edu.berkeley.fleet.api.BitVector(13);
- // alternating ones and zeroes, and then ones in the lower
- // four bits so it's not symmetric
+ // alternating ones and zeroes
for(int i=0; i<bv.length(); i+=2)
bv.set(i, true);
+ // and then ones in the lower four bits so it's not symmetric
for(int i=0; i<4; i++)
bv.set(i, true);
case 3016: sendDataIlcInfinite(marina); break;
case 3017: testFlagTruthTable(marina); break;
case 3018: sendDataWithPath(marina); break;
+ case 3019: setOlcFromDataLatch(marina); break;
+ case 3020: setIlcFromDataLatch(marina); break;
default:
fatal(true, "Test number: "+testNum+" doesn't exist.");