From: Adam Megacz Date: Tue, 24 Mar 2009 18:22:12 +0000 (+0000) Subject: refactor MarinaPacket X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=21348ac38520763c59ec44164bbe6303efb303f0;p=fleet.git refactor MarinaPacket --- diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java index f92e528..ecc531f 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java @@ -6,27 +6,37 @@ import com.sun.async.test.ChipModel; import com.sun.async.test.JtagTester; import com.sun.async.test.NanosimModel; -/** This class encapsulates a "packet" -- a data item in flight plus - * its tokenhood and path */ +/** + * This class encapsulates a "packet" -- a data item in flight plus + * its tokenhood and path. + * + * This should be the only class that knows how to turn a packet into + * its constituent parts and vice versa. + */ public class MarinaPacket { + public static final int PATH_WIDTH = 14; + public static final int WORD_WIDTH = 37; + public static final int PACKET_WIDTH = PATH_WIDTH+WORD_WIDTH+1; + public final BitVector data; public final boolean tokenhood; public final BitVector path; - /** "parse" a token from the raw 1+14+37 bits in the north proper stopper */ + /** "parse" a token from the raw 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"); + MarinaUtils.expectLength(singleBitVector,PACKET_WIDTH); + this.data = new BitVector(WORD_WIDTH, "marina packet data"); + this.path = new BitVector(PATH_WIDTH, "marina packet path"); 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)); + for(int i=0; i