From: rkao Date: Tue, 28 Oct 2008 22:18:15 +0000 (+0000) Subject: First merge with Adam X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=a2d7a2d49a8e9c14764b66c21c5a28f006e98009;p=fleet.git First merge with Adam --- diff --git a/testCode/com/sun/vlsi/chips/marina/test/InstructionStopper.java b/testCode/com/sun/vlsi/chips/marina/test/InstructionStopper.java new file mode 100644 index 0000000..7e1b26b --- /dev/null +++ b/testCode/com/sun/vlsi/chips/marina/test/InstructionStopper.java @@ -0,0 +1,35 @@ +package com.sun.vlsi.chips.marina.test; + +import com.sun.async.test.BitVector; +import com.sun.async.test.ChainControl; +import com.sun.async.test.ChipModel; + +/** InstructionStopper is a scaffold that lets us create a 37 bit propperStopper + * by using a 52 bit propperStopper and throwing away the unused bits. */ +public class InstructionStopper extends ProperStopper { + public InstructionStopper(String propInst, + String controlChain, String dataChain, + String reportChain, + ChainControl cc, ChipModel model, + Indenter indenter) { + super(propInst, controlChain, dataChain, reportChain, cc, model, indenter); + + } + @Override + public void fill(BitVector instr) { + int n = instr.getNumBits(); + fatal(n!=37, "InstructionStopper.fill: wrong num bits: "+n+", expect: 37"); + BitVector t = new BitVector(1, "token"); t.setFromLong(0); + BitVector a = new BitVector(14, "addr"); a.setFromLong(0); + super.fill(instr.cat(t).cat(a)); + } + @Override + public BitVector drain() { + BitVector dta = super.drain(); + return dta.get(0, 37); + } + @Override + public String formatDataTokAddr(BitVector dta) { + return dta.get(0, 37).getState(); + } +} diff --git a/testCode/com/sun/vlsi/chips/marina/test/IsolatedInDock.java b/testCode/com/sun/vlsi/chips/marina/test/IsolatedInDock.java index dccf73f..d0f699c 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/IsolatedInDock.java +++ b/testCode/com/sun/vlsi/chips/marina/test/IsolatedInDock.java @@ -32,7 +32,7 @@ public class IsolatedInDock implements Design { DATA_CHAIN, REPORT_CHAIN, cc, model, indenter); - insIn = new ProperStopper("insIn", + insIn = new InstructionStopper("insIn", CONTROL_CHAIN, DATA_CHAIN, REPORT_CHAIN, diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java index e766b0d..33795fc 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java @@ -4,6 +4,9 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import edu.berkeley.fleet.marina.*; +import edu.berkeley.fleet.api.*; + import com.sun.async.test.BitVector; import com.sun.async.test.ChainControl; import com.sun.async.test.ChainTest; @@ -330,12 +333,52 @@ public class MarinaTest { prln("Begin sendInstructions"); adjustIndent(2); - List din = makeIncrDataConstAdr(3, 0); + List din = new ArrayList(); + + BitVector count = new BitVector(37,"count"); + BitVector one = new BitVector(37, "one"); + count.setFromLong(0); + one.setFromLong(1); + for (int i=0; i<3; i++) { + din.add(count); + count = count.add(one); + } + inDock.insIn.fillMany(din); adjustIndent(-2); prln("End sendInstructions"); } + private void sendToken(IsolatedInDock inDock) { + prln("Begin sendToken"); + adjustIndent(2); + + MarinaFleet marina = new MarinaFleet(); + Dock dock = marina.getOnlyInputDock(); + Instruction sendTokenInstruction = + new Instruction.Move(dock, + null, /* path */ + false, /* tokenIn */ + false, /* dataIn */ + false, /* latchData */ + false, /* latchPath */ + false, /* dataOut */ + true /* tokenOut */ + ); + edu.berkeley.fleet.api.BitVector bits = + marina.encodeInstruction(dock, /* dispatch dock -- irrelevant for MARINA */ + sendTokenInstruction); + + BitVector bitVector = new BitVector(bits.length(), "instr"); + for(int i=0; i