move marina/testCode/com to src/com
[fleet.git] / src / com / sun / vlsi / chips / marina / test / MarinaUtils.java
diff --git a/src/com/sun/vlsi/chips/marina/test/MarinaUtils.java b/src/com/sun/vlsi/chips/marina/test/MarinaUtils.java
new file mode 100644 (file)
index 0000000..2ccc8c8
--- /dev/null
@@ -0,0 +1,65 @@
+package com.sun.vlsi.chips.marina.test;
+import com.sun.async.test.BitVector;
+import com.sun.async.test.Infrastructure;
+
+import java.util.List;
+import java.util.Random;
+import java.util.ArrayList;
+
+public class MarinaUtils {
+
+    /**
+     * StateWireState hides whether the state wire being high means FULL 
+     * or whether high means EMPTY
+     */
+    public static enum StateWireState {
+        FULL, EMPTY
+            };
+    
+    public static void fatal(boolean pred, String msg) {
+        if (pred) throw new FailureException(msg);
+    }
+
+    public static class FailureException extends RuntimeException {
+        public FailureException(String s) { super(s); }
+    }
+
+    /**
+     *  Compare two lists of BitVectors
+     */
+    public static void compareItemsOrdered(List<BitVector> din, List<BitVector> dout) {
+        fatal(din.size()!=dout.size(),
+              "in count="+din.size()+" out count="+dout.size());
+        for (int i=0; i<din.size(); i++) {
+            BitVector dI = din.get(i);
+            BitVector dO = dout.get(i);
+            fatal(!dI.equals(dO),
+                  "item mismatch! in:"+dI.getState()+" out:"+dO.getState());
+        }
+    }
+
+    /**
+     *  Convert an edu.berkeley.fleet.api.BitVector to a com.sun.async.test.BitVector
+     */
+    public static BitVector berkToSun(edu.berkeley.fleet.api.BitVector berkBits) {
+        BitVector sunBits = new BitVector(berkBits.length(), "berkToSun()");
+        for(int i=0; i<sunBits.getNumBits(); i++) sunBits.set(i, berkBits.get(i));
+        return sunBits;
+    }
+
+    /**
+     *  Convert an a com.sun.async.test.BitVector to a edu.berkeley.fleet.api.BitVector
+     */
+    public static edu.berkeley.fleet.api.BitVector sunToBerk(BitVector sunBits) {
+        edu.berkeley.fleet.api.BitVector berkBits =
+            new edu.berkeley.fleet.api.BitVector(sunBits.getNumBits());
+        for(int i=0; i<sunBits.getNumBits(); i++) berkBits.set(i, sunBits.get(i));
+        return berkBits;
+    }
+
+
+    public static void expectLength(BitVector bv, int expected) {
+        if (bv.getNumBits()!=expected)
+            throw new RuntimeException("expected BitVector of length " + expected + ", but got " + bv.getNumBits() +" in " + bv);
+    }
+}
\ No newline at end of file