super(propInst, controlChain, dataChain, reportChain, cc, model, clockHack, indenter);
}
- @Override
public void fill(BitVector instr) {
- // allow user to pass in complete item: data + token + addr
- if (instr.getNumBits()==(37+1+14)) {super.fill(instr); return;}
-
- int n = instr.getNumBits();
- fatal(n!=INSTRUCTION_LENGTH, "InstructionStopper.fill: wrong num bits: "+n+", expect: "+INSTRUCTION_LENGTH);
- fatal(INSTRUCTION_LENGTH>37, "Instructions can't be more than 37 bits");
- if (INSTRUCTION_LENGTH<37) {
+ if (instr.getNumBits()==MarinaPacket.PACKET_WIDTH) {
+ super.fill(instr);
+ } else {
+ MarinaUtils.expectLength(instr, INSTRUCTION_LENGTH);
BitVector pad = new BitVector(37-INSTRUCTION_LENGTH, "pad");
pad.setFromLong(0);
- instr = instr.cat(pad);
+ super.fill(new MarinaPacket(instr.cat(pad), false));
}
- BitVector t = new BitVector(1, "token"); t.setFromLong(1);
- BitVector a = new BitVector(14, "addr"); a.setFromLong(0);
- //super.fill(instr.cat(t).cat(a));
- super.fill(t.cat(a).cat(instr));
}
public BitVector drainNoCheck() {