test 3024
authorAdam Megacz <adam.megacz@sun.com>
Mon, 15 Dec 2008 07:08:46 +0000 (07:08 +0000)
committerAdam Megacz <adam.megacz@sun.com>
Mon, 15 Dec 2008 07:08:46 +0000 (07:08 +0000)
testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java

index 05e5975..e56bff3 100644 (file)
@@ -1281,44 +1281,55 @@ public class MarinaTest {
        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) {
@@ -2012,7 +2023,7 @@ public class MarinaTest {
                 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: