flush();
}
- public void sendToken(Destination d) { sendWord(d, new BitVector(fpga.getWordWidth()), true); }
- public void sendWord(Destination d, BitVector word) { sendWord(d, word, false); }
- private void sendWord(Destination d, BitVector word, boolean token) {
+ public void sendToken(Destination d) { sendWord(d, new BitVector(fpga.getWordWidth()), null, true); }
+ public void sendWord(Destination d, BitVector word) { sendWord(d, word, null, false); }
+ public void sendWord(Destination d, BitVector word, BitVector signal) { sendWord(d, word, signal, false); }
+ private void sendWord(Destination d, BitVector word, BitVector signal, boolean token) {
try {
Dock dispatchFrom = fpga.debugShip.getDock("in");
long out = 0;
out = fpga.PACKET_DATA.setval(out, word);
out = fpga.PACKET_TOKEN.setval(out, token ? 1 : 0);
- out = fpga.PACKET_SIGNAL.setval(out, 0);
+ if (signal==null)
+ out = fpga.PACKET_SIGNAL.setval(out, 0);
+ else
+ out = fpga.PACKET_SIGNAL.setval(out, signal);
out = fpga.PACKET_DEST.setval(out, ((FpgaPath)dispatchFrom.getPath(d, null)).toLong());
synchronized(this) {
for(int i=9; i>=0; i--)
new BitVector(fpga.getWordWidth()).set(fpga.writeInstruction(inst, dispatchFrom)));
}
- private static Move discard(Dock dock) { return new Move(dock, false, IgnoreFlagD, false, null, false, true, false, false, false, false); }
- private static Move deliver(Dock dock) { return new Move(dock, false, IgnoreFlagD, false, null, false, false, false, false, true, false); }
- private static Move wait(Dock dock) { return new Move(dock, false, IgnoreFlagD, false, null, true, false, false, false, false, false); }
- private static Move sendto(Dock dock, Path path) { return new Move(dock, false, IgnoreFlagD, false, path, false, false, false, false, true, false); }
+ private static Move discard(Dock dock) { return new Move(dock, IgnoreFlagD, false, null, false, true, false, false, false, false); }
+ private static Move deliver(Dock dock) { return new Move(dock, IgnoreFlagD, false, null, false, false, false, false, true, false); }
+ private static Move wait(Dock dock) { return new Move(dock, IgnoreFlagD, false, null, true, false, false, false, false, false); }
+ private static Move sendto(Dock dock, Path path) { return new Move(dock, IgnoreFlagD, false, path, false, false, false, false, true, false); }
}