formatting changes
[fleet.git] / testCode / com / sun / vlsi / chips / marina / test / InstructionStopper.java
1 package com.sun.vlsi.chips.marina.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.sun.async.test.BitVector;
7 import com.sun.async.test.ChainControl;
8 import com.sun.async.test.ChipModel;
9
10 import edu.berkeley.fleet.api.Dock;
11 import edu.berkeley.fleet.api.Instruction;
12 import edu.berkeley.fleet.marina.MarinaFleet;
13
14 import static com.sun.vlsi.chips.marina.test.Marina.INSTRUCTION_LENGTH;
15
16 /**
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.
19  */
20 public class InstructionStopper extends ProperStopper {
21
22     public InstructionStopper(String propInst,
23                               String controlChain, String dataChain,
24                               String reportChain,
25                               ChainControls cc, ChipModel model,
26                               boolean clockHack,
27                               Indenter indenter) {
28         super(propInst, controlChain, dataChain, reportChain, cc, model, clockHack, indenter);
29     }
30
31     public void fill(BitVector instr) {
32         if (instr.getNumBits()==MarinaPacket.PACKET_WIDTH) {
33             super.fill(instr);
34         } else {
35             MarinaUtils.expectLength(instr, INSTRUCTION_LENGTH);
36             BitVector pad = new BitVector(MarinaPacket.WORD_WIDTH-INSTRUCTION_LENGTH, "pad");
37             pad.setFromLong(0);
38             super.fill(new MarinaPacket(instr.cat(pad), false));
39         }
40     }
41
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);
46     }
47
48     /** put one Instruction into InstructionStopper */
49     public void fill(Instruction instr) {
50         fill(MarinaUtils.berkToSun(MarinaTest.marinaFleet.encodeInstruction(MarinaTest.marinaFleet.getOnlyInputDock(), instr)));
51     }
52
53     /* put a torpedo into the InstructionStopper */
54     public void fillTorpedo() {
55         throw new RuntimeException("currently not implemented");
56     }
57 }