1 package com.sun.vlsi.chips.marina.test;
3 import java.util.ArrayList;
6 import com.sun.async.test.BitVector;
7 import com.sun.async.test.ChainControl;
8 import com.sun.async.test.ChipModel;
10 import edu.berkeley.fleet.api.Dock;
11 import edu.berkeley.fleet.api.Instruction;
12 import edu.berkeley.fleet.marina.MarinaFleet;
14 import static com.sun.vlsi.chips.marina.test.Marina.INSTRUCTION_LENGTH;
17 * InstructionStopper is a scaffold that lets us create a 36 bit propperStopper
18 * by using a 52 bit propperStopper and throwing away the unused bits.
20 public class InstructionStopper extends ProperStopper {
22 public InstructionStopper(String propInst,
23 String controlChain, String dataChain,
25 ChainControls cc, ChipModel model,
28 super(propInst, controlChain, dataChain, reportChain, cc, model, clockHack, indenter);
31 public void fill(BitVector instr) {
32 if (instr.getNumBits()==MarinaPacket.PACKET_WIDTH) {
35 MarinaUtils.expectLength(instr, INSTRUCTION_LENGTH);
36 BitVector pad = new BitVector(MarinaPacket.WORD_WIDTH-INSTRUCTION_LENGTH, "pad");
38 super.fill(new MarinaPacket(instr.cat(pad), false));
42 // FIXME: I really don't like this --Adam
43 public BitVector drainNoCheck() {
44 BitVector dta = super.drainNoCheck();
45 return dta.get(15, INSTRUCTION_LENGTH);
48 /** put one Instruction into InstructionStopper */
49 public void fill(Instruction instr) {
50 fill(MarinaUtils.berkToSun(MarinaTest.marinaFleet.encodeInstruction(MarinaTest.marinaFleet.getOnlyInputDock(), instr)));
53 /* put a torpedo into the InstructionStopper */
54 public void fillTorpedo() {
55 throw new RuntimeException("currently not implemented");