From: Adam Megacz Date: Sun, 23 Nov 2008 22:44:19 +0000 (+0000) Subject: add MarinaPacket class and use it X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=bf55d60353f892830d173d11f8da212d6b40e4b5;p=fleet.git add MarinaPacket class and use it --- diff --git a/testCode/com/sun/vlsi/chips/marina/test/Marina.java b/testCode/com/sun/vlsi/chips/marina/test/Marina.java index 3de790a..b23f00a 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/Marina.java +++ b/testCode/com/sun/vlsi/chips/marina/test/Marina.java @@ -192,13 +192,8 @@ public class Marina { return count.bitReverse().toLong(); } /** Fill the "North" Fifo ring */ - public void fillNorthProperStopper(BitVector data, boolean tokenhood, BitVector address) { - int len = 37+1+14; - BitVector bv = new BitVector(len, "empty"); - 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, address.get(i-38)); - this.data.fill(bv); + public void fillNorthProperStopper(MarinaPacket mp) { + this.data.fill(mp.toSingleBitVector()); } /** Enable the transmission of instructions from the instruction * ring test structure to the EPI FIFO. */ diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java new file mode 100644 index 0000000..e8bfd07 --- /dev/null +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaPacket.java @@ -0,0 +1,53 @@ +package com.sun.vlsi.chips.marina.test; +/* -*- tab-width: 4 -*- */ +import com.sun.async.test.BitVector; +import com.sun.async.test.ChainControl; +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 */ +public class MarinaPacket { + + public final BitVector data; + public final boolean tokenhood; + public final BitVector path; + + /** "parse" a token from the raw 37+1+14 bits in the north proper stopper */ + public MarinaPacket(BitVector singleBitVector) { + 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)); + } + + /** manually assemble a packet */ + public MarinaPacket(BitVector data, boolean tokenhood, BitVector path) { + this.data = data; + this.tokenhood = tokenhood; + this.path = path; + } + + /** 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)); + 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(); + } +} \ No newline at end of file diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java index f8fd31e..09036e9 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java @@ -594,6 +594,8 @@ public class MarinaTest { prln("End testPredicationOnAB"); } + + private void getCtrsFlags(Marina marina) { prln("begin getCtrsFlags"); adjustIndent(2); @@ -1164,7 +1166,7 @@ public class MarinaTest { for(int i=0; i