updates to MarinaPacket
authorAdam Megacz <adam.megacz@sun.com>
Tue, 24 Mar 2009 17:55:48 +0000 (17:55 +0000)
committerAdam Megacz <adam.megacz@sun.com>
Tue, 24 Mar 2009 17:55:48 +0000 (17:55 +0000)
testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java

index e8bfd07..f92e528 100644 (file)
@@ -14,13 +14,15 @@ public class MarinaPacket {
     public final boolean tokenhood;
     public final BitVector path;
 
-    /** "parse" a token from the raw 37+1+14 bits in the north proper stopper */
+    /** "parse" a token from the raw 1+14+37 bits in the north proper stopper */
     public MarinaPacket(BitVector singleBitVector) {
+        if (singleBitVector.getNumBits()!=1+14+37)
+            throw new RuntimeException("wrong number of bits!");
         this.data = new BitVector(37, "marina packet data");
         this.path = new BitVector(14, "marina packet path");
-        this.tokenhood = singleBitVector.get(37);
-        for(int i=0; i<37; i++) data.set(i, singleBitVector.get(i));
-        for(int i=38; i<38+14; i++) path.set(i-38, singleBitVector.get(i));
+        this.tokenhood = !singleBitVector.get(0);
+        for(int i=0; i<14; i++) path.set(i, singleBitVector.get(i+1));
+        for(int i=0; i<37; i++) data.set(i, singleBitVector.get(i+15));
     }
 
     /** manually assemble a packet */
@@ -32,22 +34,17 @@ public class MarinaPacket {
 
     /** convert a packet into a single BitVector, suitable for insertion in the north proper stopper */
     public BitVector toSingleBitVector() {
-        BitVector bv = new BitVector(37+1+14, "marina packet");
-        for(int i=0; i<37; i++) bv.set(i, data.get(i));
-        bv.set(37, !tokenhood);
-        for(int i=38; i<38+14; i++) bv.set(i, path.get(i-38));
+        BitVector bv = new BitVector(1+14+37, "marina packet");
+        bv.set(0, !tokenhood);
+        for(int i=0; i<14; i++) bv.set(i+1,  path.get(i));
+        for(int i=0; i<37; i++) bv.set(i+15, data.get(i));
         return bv;
     }
 
     public String toString() {
-        StringBuffer ret = new StringBuffer();
-        ret.append("MarinaPacket(");
-        ret.append(data.toString());
-        ret.append(",");
-        ret.append(tokenhood);
-        ret.append(",");
-        ret.append(path);
-        ret.append(")");
-        return ret.toString();
+        return
+            "tokenhood="+(tokenhood ? "token" : "data")
+            + ", path[14:1]=" + path.bitReverse().getState()
+            + ", data[37:1]=" + data.bitReverse().getState();
     }
 }
\ No newline at end of file