#ship debug : Debug
-25: sendto debug.in;
-debug.in: take, deliver;
+debug.in:
+ literal 25;
+ deliver;
== Contributors =========================================================
Adam Megacz <megacz@cs.berkeley.edu>
#ship fifo : Fifo
debug.in: [*] take, deliver;
-9: sendto fifo.in;
fifo.in:
+ literal 9;
+ deliver;
[100] take, deliver;
fifo.out:
[99] take, sendto fifo.in;
#skip
#ship debug : Debug
#expect 0
-0: sendto debug.in;
+
== Contributors =========================================================
#ship lut : Lut3
#ship alu : Alu1
-// constant inputs
-85: sendto lut.in1;
-51: sendto lut.in2;
-15: sendto lut.in3;
-
-lut.in1: take; [*] deliver;
-lut.in2: take; [*] deliver;
-lut.in3: take; [*] deliver;
-lut.inLut: [*] take, deliver;
+lut.in1: literal 85; [*] deliver;
+lut.in2: literal 51; [*] deliver;
+lut.in3: literal 15; [*] deliver;
lut.out: [*] take, sendto debug.in;
// cycle through truth tables using alu as INC
-1: sendto alu.inOp;
alu.inOp:
- take;
+ literal 1;
[120] deliver;
[120] deliver;
[15] deliver;
-alu.in: [*] take, deliver;
-0: sendto alu.in;
+alu.in:
+ literal 0;
+ deliver;
+ [*] take, deliver;
alu.out:
[*] nop;
(*) wait, take, sendto lut.inLut;
// acks from debug ship trigger new truth tables
debug.in: [*] take, deliver, notify alu.out;
-// kickoff
-0: sendto lut.inLut;
+lut.inLut:
+ literal 0;
+ deliver;
+ [*] take, deliver;
#expect 0
debug.in: [*] take, deliver;
-stack.push: [5] take, deliver; notify stack.pop;
stack.pop: wait; [*] take, sendto debug.in;
-0: sendto stack.push;
-1: sendto stack.push;
-2: sendto stack.push;
-3: sendto stack.push;
-4: sendto stack.push;
+stack.push:
+ literal 0; deliver;
+ literal 1; deliver;
+ literal 2; deliver;
+ literal 3; deliver;
+ literal 4; deliver;
+ notify stack.pop;
+#skip
#expect -1
#ship debug : Debug
--1: sendto debug.in;
-debug.in: take, deliver;
+debug.in:
+// literal -1;
+ deliver;
// dumb configurations
debug.in: [*] take, deliver;
memory.inAddrRead: [*] take, deliver;
-memory.inAddrWrite: [*] take, deliver;
-memory.inDataWrite: [*] take, deliver;
-fifo.in: [*] take, deliver;
// send write-completion tokens to the fifo output
memory.out:
[4] take, notify fifo.out;
[*] take, sendto debug.in;
-// addresses and values to initialize the memory with
-1: sendto memory.inAddrWrite;
-2: sendto memory.inAddrWrite;
-3: sendto memory.inAddrWrite;
-4: sendto memory.inAddrWrite;
-11: sendto memory.inDataWrite;
-12: sendto memory.inDataWrite;
-13: sendto memory.inDataWrite;
-14: sendto memory.inDataWrite;
+memory.inAddrWrite: literal 1; deliver;
+memory.inDataWrite: literal 11; deliver;
+
+memory.inAddrWrite: literal 2; deliver;
+memory.inDataWrite: literal 12; deliver;
+
+memory.inAddrWrite: literal 3; deliver;
+memory.inDataWrite: literal 13; deliver;
+
+memory.inAddrWrite: literal 4; deliver;
+memory.inDataWrite: literal 14; deliver;
// when the write-completion tokens accumulate, unleash
// the read addresses
[4] wait;
[4] take, sendto memory.inAddrRead;
-// read addresses
-4: sendto fifo.in;
-3: sendto fifo.in;
-2: sendto fifo.in;
-1: sendto fifo.in;
+fifo.in:
+ literal 4; deliver;
+ literal 3; deliver;
+ literal 2; deliver;
+ literal 1; deliver;
+
+
#ship fifo2 : Fifo
debug.in: [*] take, deliver;
-fifo.in: [*] take, deliver;
+fifo.in:
+ literal 1;
+ deliver;
+ [*] take, deliver;
-1: sendto fifo.in;
+fifo2.in:
+ literal 2;
+ deliver;
+ [*] take, deliver;
-2: sendto fifo2.in;
-fifo2.in: [*] take, deliver;
fifo2.out: wait, take, sendto fifo.in;
fifo.out:
// ships required in order to run this code
#ship debug : Debug
-debug.in: take; [100] deliver;
-9: sendto debug.in;
+debug.in:
+ literal 9;
+ [100] deliver;
+
#ship debug : Debug
#ship fifo : Fifo
-9: sendto debug.in;
-8: sendto debug.in;
-7: sendto debug.in;
+fifo.in: literal 9; deliver;
+fifo.in: literal 8; deliver;
+fifo.in: literal 7; deliver;
+fifo.out: [*] take, sendto debug.in;
+
debug.in:
[*] nop;
(2) take;
#ship alu : Alu2
#ship debug : Debug
+#ship f : Fifo
+
+f.in: literal 2; deliver; literal 4; deliver;
+f.out: take, sendto alu.in1;
+ take, sendto alu.in2;
-2: sendto alu.in1;
-4: sendto alu.in2;
Alu2.inOp[ADD]: sendto alu.inOp;
alu.in1: [*] nop;
(*) take, deliver;