add tests 3019 and 3020
authorAdam Megacz <adam.megacz@sun.com>
Mon, 24 Nov 2008 00:44:41 +0000 (00:44 +0000)
committerAdam Megacz <adam.megacz@sun.com>
Mon, 24 Nov 2008 00:44:41 +0000 (00:44 +0000)
testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java

index aef4aee..5933fde 100644 (file)
@@ -1249,6 +1249,57 @@ public class MarinaTest {
        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);
@@ -1420,10 +1471,10 @@ public class MarinaTest {
 
         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);
 
@@ -1693,6 +1744,8 @@ public class MarinaTest {
                 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.");