more tests pass now
authorAdam Megacz <adam.megacz@sun.com>
Tue, 21 Apr 2009 06:23:02 +0000 (06:23 +0000)
committerAdam Megacz <adam.megacz@sun.com>
Tue, 21 Apr 2009 06:23:02 +0000 (06:23 +0000)
testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java

index cc2d2b9..234a611 100644 (file)
@@ -99,7 +99,7 @@ public class MarinaTest {
     private static final int MORE_THAN_DATA_OUT_SATURATION_AMOUNT = 10;
         
     // Nominal cycle time assuming 4 GHz throughput
-    private static final double CYCLE_TIME_NS = 0.250;
+    private static double CYCLE_TIME_NS;
 
     //--------------------------------  types ---------------------------------
 
@@ -220,7 +220,8 @@ public class MarinaTest {
                 return;
         }
         model = cmdArgs.useVerilog ? new VerilogModel() : new NanosimModel();
-        
+        CYCLE_TIME_NS = cmdArgs.useVerilog ? (100*20) : 0.250;
+
         //tester = ((SimulationModel)model).createJtagTester("TCK", "TMS", "TRSTb", "TDI", "TDO");
         ChainControls ccs = new ChainControls();
         JtagTester testerD, testerR, testerC;
@@ -543,8 +544,7 @@ public class MarinaTest {
         MarinaPath path = new MarinaPath((MarinaFleet)dock.getShip().getFleet(), bv);
 
         prln("send data");
-        marina.instrIn.fill(
-                            new Instruction.Move(dock,
+        marina.instrIn.fill(new Instruction.Move(dock,
                                                  Predicate.IgnoreFlagD, /* predicate   */
                                                  false,                 /* torpedoable */
                                                  path,                  /* path        */
@@ -716,13 +716,8 @@ public class MarinaTest {
         prln("ILC.done=="+ilc.getDone()+
              " ILC.infinity=="+ilc.getInfinity()+
              " ILC.count=="+ilc.getCount());
-        
-        boolean a = marina.getFlagA();
-        prln("flagA=="+a);
-        
-        boolean b = marina.getFlagB();
-        prln("flagB=="+b);
-        
+        prln("flagA=="+marina.getFlagA());
+        prln("flagB=="+marina.getFlagB());
         adjustIndent(-2);
         prln("end getCtrsFlags");
     }
@@ -730,10 +725,9 @@ public class MarinaTest {
         prln("Begin walkOneOLC");
         adjustIndent(2);
         for (int i=6; i>=0; i--) {
-            int inOlc = 0x20 >> i;
+            int inOlc = 1<<i;
             prln("Set inOlc="+inOlc);
-            marina.instrIn.fill(new 
-                                Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.OuterLoopCounter, inOlc));
+            marina.instrIn.fill(new Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.OuterLoopCounter, inOlc));
             int outOlc = marina.getOLC();
             fatal(outOlc!=inOlc, "walkOneOLC: got="+outOlc+" expected="+inOlc);
             prln("walkOneOLC: "+inOlc+" checks out");
@@ -748,19 +742,14 @@ public class MarinaTest {
             // Mask off the "zero" bit position
             int inIlc = 1 << i;
             prln("inIlc="+inIlc);
-
-            marina.instrIn.fill(new 
-                                Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.InnerLoopCounter, inIlc));
-
+            marina.instrIn.fill(new Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.InnerLoopCounter, inIlc));
             Ilc ilc = marina.getILC();
             int outIlc = ilc.getCount();
             fatal(outIlc!=inIlc, "bad ILC count: "+outIlc+" expected: "+outIlc);
-
             fatal(ilc.getInfinity(), "bad Infinity bit: true");
         }
         prln("Now test the infinity bit");
-        marina.instrIn.fill(new 
-                            Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.InnerLoopCounter, SetSource.Infinity));
+        marina.instrIn.fill(new Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.InnerLoopCounter, SetSource.Infinity));
         Ilc ilc = marina.getILC();
         fatal(!ilc.getInfinity(), "bad Infinity bit: false");
         adjustIndent(-2);
@@ -779,21 +768,23 @@ public class MarinaTest {
         fatal(ilc!=maxIlc, "bad ILC count: "+ilc+" expected: "+maxIlc);
                 
         prln("execute a move instruction that does nothing except decrement the ILC to zero");
+
         marina.instrIn.fill(
                             new Instruction.Move(dock,
-                                                 Predicate.IgnoreFlagD, /* predicate   */
-                                                 false,                 /* torpedoable */
-                                                 null,                  /* path        */
-                                                 false,                 /* tokenIn     */
-                                                 false,                 /* dataIn      */
-                                                 false,                 /* latchData   */
-                                                 false,                 /* latchPath   */
-                                                 false,                 /* dataOut     */
-                                                 false                  /* tokenOut    */
+                                                 Predicate.IgnoreFlagD, // predicate   
+                                                 false,                 // torpedoable 
+                                                 null,                  // path        
+                                                 false,                 // tokenIn     
+                                                 false,                 // dataIn      
+                                                 false,                 // latchData   
+                                                 false,                 // latchPath   
+                                                 false,                 // dataOut     
+                                                 false                  // tokenOut    
                                                  ));
         
         // wait for ILC to count from 63 to 0
-        model.waitNS(64 * CYCLE_TIME_NS);
+        //model.waitNS(64 * CYCLE_TIME_NS);
+        model.waitNS(10000);
 
         prln("Check that ILC==0");
         ilc = marina.getILC().getCount();
@@ -842,6 +833,9 @@ public class MarinaTest {
         prln("Successfully inserted " + i + " instructions");
     }
 
+    private static MarinaPath null_path = new MarinaPath((MarinaFleet)dock.getShip().getFleet(),
+                                                         MarinaUtils.sunToBerk(MarinaPacket.null_path));
+
     private static final Instruction NOP =
         new Instruction.Move(dock,
                              Predicate.IgnoreFlagD,   /* predicate   */
@@ -872,7 +866,7 @@ public class MarinaTest {
         new Instruction.Move(dock,
                              Predicate.IgnoreFlagD,   /* predicate   */
                              false,                 /* torpedoable */
-                             null,                  /* path        */
+                             null_path,                  /* path        */
                              false,                 /* tokenIn     */
                              false,                 /* dataIn      */
                              false,                 /* latchData   */
@@ -898,7 +892,7 @@ public class MarinaTest {
         new Instruction.Move(dock,
                              Predicate.IgnoreFlagD,   /* predicate   */
                              false,                 /* torpedoable */
-                             null,                  /* path        */
+                             null_path,                  /* path        */
                              false,                 /* tokenIn     */
                              false,                 /* dataIn      */
                              false,                 /* latchData   */
@@ -922,9 +916,9 @@ public class MarinaTest {
 
     private static final Instruction REQUEUEING_SEND_DATA =
         new Instruction.Move(dock,
-                             Predicate.IgnoreFlagD,   /* predicate   */
+                             Predicate.IgnoreFlagD, /* predicate   */
                              false,                 /* torpedoable */
-                             null,                  /* path        */
+                             null_path,             /* path        */
                              false,                 /* tokenIn     */
                              false,                 /* dataIn      */
                              false,                 /* latchData   */
@@ -1456,7 +1450,7 @@ public class MarinaTest {
         prln("Begin testSignExtendedLiteral");
         adjustIndent(2);
 
-        for(long val : new long[] { -1, 0, 1, (-1L << 14) }) {
+        for(long val : new long[] { (-1L << 14), -1, 0, 1 }) {
             prln("inserting Set Data Latch (sign-extended) 37'b" + Long.toString(val, 1));
             marina.instrIn.fill(new Instruction.Set(dock,Predicate.IgnoreFlagD,
                                                     Instruction.Set.SetDest.DataLatch,
@@ -1901,7 +1895,7 @@ public class MarinaTest {
              "Check correct setting of the ILC zero bit");
 
         for (int i=0; i<6; i++) {
-            int notZero = 32 >> i;
+            int notZero = 1<<i;
             prln("Set ILC=0");
             marina.instrIn.fill(new 
                                 Instruction.Set(dock,Predicate.IgnoreFlagD,SetDest.InnerLoopCounter, 0));
@@ -2047,13 +2041,18 @@ public class MarinaTest {
                 // these tests run fairly quickly
                 doOneTest(1);
                 doOneTest(2);
+                doOneTest(4);
+                doOneTest(1001);
                 doOneTest(3000);
                 doOneTest(3001);
                 doOneTest(3006);
+                doOneTest(3013);
+                doOneTest(3014);
                 doOneTest(3018);
-                //doOneTest(1000);
 
                 // these tests take a while and usually pass
+                doOneTest(1000);
+                doOneTest(1004);
                 doOneTest(1006);
 
                 break;
@@ -2061,17 +2060,17 @@ public class MarinaTest {
             case 1:    testProperStoppers(marina);             break; // passes, 24-Mar (+verilog)
             case 2:    sendInstructions(marina);               break; // passes, 24-Mar (+verilog)
 
-            case 4:    getCtrsFlags(marina);                   break;
+            case 4:    getCtrsFlags(marina);                   break; //         20-Apr (+verilog)
             case 5:    walkOneOLC(marina);                     break;
                 
                 // Russell's tests begin with 1000
             case 1000: walkOneILC(marina);                     break; //         20-Apr (+verilog)
-            case 1001: countIlc(marina);                       break;
+            case 1001: countIlc(marina);                       break; //         20-Apr (+verilog)
             case 1002: countOlc(marina);                       break;
 
             case 1003: sendTorpedo(marina);                    break;
 
-            case 1004: flipIlcBit(marina);                     break;
+            case 1004: flipIlcBit(marina);                     break; //         20-Apr (+verilog)
             case 1005: flipOlcBit(marina);                     break;
 
             case 1006: testSouthRecirculate(marina);           break; // passes, 24-Mar (+verilog)
@@ -2090,8 +2089,8 @@ public class MarinaTest {
             case 3010: testRequeueStage0to2to3to0(marina);     break;
             case 3011: recvData(marina);                       break;
             case 3012: testFlagC(marina);                      break;
-            case 3013: testSignExtendedLiteral(marina);        break;
-            case 3014: testShiftedLiteral(marina);             break; // fails, 09-Apr
+            case 3013: testSignExtendedLiteral(marina);        break; //         20-Apr (+verilog)
+            case 3014: testShiftedLiteral(marina);             break; //         20-Apr (+verilog)
             case 3015: testSendAndRecvToken(marina);           break;
             case 3016: sendDataIlcInfinite(marina);            break;
             case 3017: testFlagTruthTable(marina);             break;