debug.in: [*] take, deliver;
alu1.in:
literal 9;
- [4] deliver;
+ load repeat counter with 4; deliver;
[*] take, deliver;
alu1.out:
- [4] take, sendto debug.in;
+ load repeat counter with 4; take, sendto debug.in;
sendto alu1.in;
[*] take, sendto debug.in;
literal 1; deliver;
literal 2; deliver;
literal 3; deliver;
- literal 0; [2] deliver;
+ literal 0; load repeat counter with 2; deliver;
== Contributors =========================================================
debug.in: [*] take, deliver;
alu.in1:
- literal 9; [4] deliver;
+ literal 9; load repeat counter with 4; deliver;
alu.in2:
- literal 8; [4] deliver;
+ literal 8; load repeat counter with 4; deliver;
alu.in1: [*] take, deliver;
alu.in2: [*] take, deliver;
bitfifo.in:
literal 10000;
deliver; // deliver a junk word
- [37] deliver; // deliver it 37 times (once per bit)
+ load repeat counter with 37; deliver; // deliver it 37 times (once per bit)
literal 0;
- [38] deliver; // deliver it 37 times
+ load repeat counter with 38; deliver; // deliver it 37 times
// insert bits in lsb order
bitfifo.inOp:
[*] deliver;
bitfifo.out: [*] wait, take, sendto lut3.in2;
-lut3.in2: [4] notify bitfifo.out;
- [74] take, deliver, notify bitfifo.out;
+lut3.in2: load repeat counter with 4; notify bitfifo.out;
+ load repeat counter with 63;
+ take, deliver, notify bitfifo.out;
+ load repeat counter with 11;
+ take, deliver, notify bitfifo.out;
// mux on second input
lut3.inLut: literal 226;
- [74] deliver;
+ [*] deliver;
lut3.in1: literal 18683;
- [37] deliver;
+ load repeat counter with 37; deliver;
literal 0;
- [37] deliver;
+ load repeat counter with 37; deliver;
lut3.in3: literal 12000;
- [37] deliver;
+ load repeat counter with 37; deliver;
literal 0;
- [37] deliver;
+ load repeat counter with 37; deliver;
lut3.out: [*] wait, take, sendto alu3.in2;
alu3.in1: literal 0; deliver; [*] take, deliver;
-alu3.in2: [1] notify lut3.out; [*] take, deliver, notify lut3.out;
+alu3.in2: notify lut3.out; [*] take, deliver, notify lut3.out;
alu3.in3: literal 0; deliver; [*] take, deliver;
-alu3.out1: [74] take, sendto alu3.in1;
-alu3.out2: [74] take, sendto alu3.in3;
alu3.outBits: [*] take, sendto debug.in;
+alu3.out1: [*] take, sendto alu3.in1;
+alu3.out2: [*] take, sendto alu3.in3;
debug.in: [*] take, deliver;
bitfifo.outOp: literal BitFifo.outOp[take=37]; [*] deliver;
bitfifo.out: [*] take, sendto debug.in;
debug.in: [*] take, deliver;
-bitfifo.in: literal 1; [2] deliver;
+bitfifo.in: literal 1; load repeat counter with 2; deliver;
bitfifo.inOp:
literal BitFifo.inOp[take=37];
fifo.in:
literal 9;
deliver;
- [100] take, deliver;
+ load repeat counter with 63;
+ take, deliver;
+ load repeat counter with 37;
+ take, deliver;
+
fifo.out:
- [99] take, sendto fifo.in;
- [1] take, sendto debug.in;
+ load repeat counter with 63;
+ take, sendto fifo.in;
+ load repeat counter with 36;
+ take, sendto fifo.in;
+ take, sendto debug.in;
// cycle through truth tables using alu as INC
alu.inOp:
literal 1;
- [120] deliver;
- [120] deliver;
- [15] deliver;
+ load repeat counter with 63;
+ deliver;
+ load repeat counter with 63;
+ deliver;
+ load repeat counter with 63;
+ deliver;
+ load repeat counter with 63;
+ deliver;
+ load repeat counter with 3;
+ deliver;
alu.in:
literal 0;
deliver;
[*] take, deliver;
alu.out:
clog;
- wait, take, sendto lut.inLut, requeue forever;
- sendto alu.in, requeue forever;
+ load loop counter with 2;
+ wait, take, sendto lut.inLut;
+ sendto alu.in;
unclog;
// acks from debug ship trigger new truth tables
// send write-completion tokens to the fifo output
memory.out:
- [4] take, notify fifo.out;
+ load repeat counter with 4; take, notify fifo.out;
[*] take, sendto debug.in;
// when the write-completion tokens accumulate, unleash
// the read addresses
fifo.out:
- [4] wait;
+ load repeat counter with 4; wait;
take, sendto memory.inAddrRead;
// read addresses
// send write-completion tokens to the fifo output
memory.out:
- [4] take, notify fifo.out;
+ load repeat counter with 4; take, notify fifo.out;
[*] take, sendto debug.in;
memory.inAddrWrite: literal 1; deliver;
// when the write-completion tokens accumulate, unleash
// the read addresses
fifo.out:
- [4] wait;
- [4] take, sendto memory.inAddrRead;
+ load repeat counter with 4; wait;
+ load repeat counter with 4; take, sendto memory.inAddrRead;
fifo.in:
literal 4; deliver;
--- /dev/null
+#expect 3
+#expect 3
+#expect 3
+#expect 3
+#expect 1
+
+#ship debug : Debug
+#ship memory : Memory
+#ship fifo : Fifo
+
+debug.in: [*] take, deliver;
+
+fifo.in:
+ literal 5;
+ deliver;
+
+fifo.out:
+ literal 5;
+ load repeat counter;
+ [*] wait, notify memory.inCBD;
+ literal 3;
+ literal 3;
+ sendto debug.in;
+ literal 1;
+ sendto debug.in;
+
+memory.inCBD:
+ notify fifo.out;
+ take;
+ literal {
+ fifo.out:
+ kill;
+ };
+ deliver;
debug.in:
literal 9;
- [100] deliver;
+ load repeat counter with 63;
+ deliver;
+ load repeat counter with 37;
+ deliver;
#expect 7
#expect 7
#expect 7
-#expect 7
#expect 9
#ship debug : Debug
#ship memory : Memory
#ship fifo : Fifo
-debug.in: [*] take, deliver, notify fifo.in;
+debug.in:
+ load repeat counter with 3; take, deliver, notify fifo.in;
+ [*] take, deliver;
fifo.out:
notify fifo.in;
- [4] take, sendto debug.in;
+ load repeat counter with 4; take, sendto debug.in;
notify memory.inCBD;
[*] take, sendto debug.in;
take;
literal {
fifo.in:
- //take;
+ take;
massacre;
literal 9;
deliver;
debug.in: [*] take, deliver;
+fifo.in:
+ literal 5;
+ deliver;
+
fifo.out:
take;
sendto debug.in;
+ clog;
load loop counter;
literal 0;
sendto debug.in;
take loop counter;
- sendto debug.in;
-
-fifo.in:
literal 5;
- deliver;
+ sendto debug.in;
+ unclog;
--- /dev/null
+#expect 7
+
+#ship debug : Debug
+#ship memory : Memory
+#ship fifo : Fifo
+
+debug.in: [*] take, deliver;
+
+fifo.out:
+ take, sendto debug.in;
+
+fifo.in:
+ clog;
+ load loop counter with 7;
+ literal 3;
+ take loop counter;
+ deliver;
+ unclog;
-#expect 5
+#expect 7
#ship debug : Debug
#ship memory : Memory
debug.in: [*] take, deliver;
fifo.out:
- load loop counter with 5;
+ literal 7;
+ sendto fifo.in;
+ load repeat counter with 2; take, sendto debug.in;
+
+fifo.in:
+ take;
+ load loop counter;
+ literal 0;
take loop counter;
- sendto debug.in;
+ deliver;
--- /dev/null
+#expect 5
+#expect 5
+#expect 5
+#expect 1
+#expect 2
+
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in: [*] take, deliver;
+
+fifo.out: [*] take, sendto debug.in;
+
+fifo.in:
+ literal 5;
+ load repeat counter with 3;
+ deliver;
+ literal 1;
+ deliver;
+ literal 2;
+ deliver;
+
fifo2.out:
literal 7;
- [4] sendto fifo.in;
+ load repeat counter with 4; sendto fifo.in;
#ship fifo : Fifo
fifo.in:
- literal 3; [3] deliver;
- literal 2; [3] deliver;
+ literal 3; load repeat counter with 3; deliver;
+ literal 2; load repeat counter with 3; deliver;
fifo.out:
clog;
- take, sendto debug.in, requeue 9 times;
- notifyLast debug.in, requeue 3 times;
+ load loop counter with 9;
+ take, sendto debug.in;
+ notifyLast debug.in;
+ decrement loop counter;
unclog;
debug.in:
- [4] take;
+ load repeat counter with 4; take;
[*] take, deliver;
#expect 9
+#expect 2
#expect 8
-#expect 8
+#expect 1
+#expect 7
#ship debug : Debug
#ship fifo : Fifo
debug.in:
clog;
- take, requeue 2 times;
- deliver, requeue 3 times;
+ load loop counter with 3;
+ take;
+ deliver;
+ decrement loop counter;
+ take loop counter;
+ deliver;
unclog;
fifo.in:
literal 9;
- [6] deliver;
+ load repeat counter with 6; deliver;
debug.in:
[*] take, deliver;
fifo.out:
clog;
- literal 5, requeue 3 times;
- sendto debug.in, requeue 3 times;
- take, requeue 3 times;
- sendto debug.in, requeue 3 times;
+ load loop counter with 3;
+ literal 5;
+ sendto debug.in;
+ take;
+ sendto debug.in;
unclog;
fifo.out:
notify fifo.in;
- [4] take, sendto debug.in;
+ load repeat counter with 4; take, sendto debug.in;
notify memory.inCBD;
[*] take, sendto debug.in;
fifo.in:
clog;
- take, requeue forever;
- literal 7, requeue forever;
- deliver, requeue forever;
+ load loop counter with 63;
+ take;
+ literal 7;
+ deliver;
unclog;
memory.inCBD:
take;
literal {
fifo.in:
- kill 4; // extra instruction due to literal!
+ massacre; // extra instruction due to literal!
literal 8;
deliver;
notify memory.inCBD;
#expect 6
#expect 6
#expect 6
+#expect 6
+#expect 10
#expect 10
#expect 10
#expect 10
-#expect 14
-#expect 14
#expect 14
#expect 14
#expect 14
#expect 18
#expect 18
#expect 18
-#expect 18
-#expect 18
-#expect 22
#expect 22
#expect 22
#expect 22
#expect 22
-#expect 22
-#expect 26
#expect 26
#expect 26
#expect 26
#expect 26
-#expect 26
-#expect 30
#expect 30
#expect 30
#expect 30
#expect 30
-#expect 30
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
-#expect 34
#expect 34
#expect 34
#expect 34
#expect 34
+#expect 38
+#expect 38
+#expect 38
+#expect 38
+#expect 42
+#expect 42
+#expect 42
+#expect 42
+#expect 46
#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;
-alu.in1: clog;
- take, deliver, requeue forever;
- deliver, requeue forever;
- discard, requeue forever;
- deliver, requeue 4 times ;
- unclog;
-alu.in2: take;
- [*] deliver;
alu.inOp: literal Alu2.inOp[ADD];
[*] deliver;
alu.out: clog;
- take, sendto alu.in1, requeue 40 times;
- sendto debug.in, requeue 50 times;
+ load loop counter with 40;
+ take, sendto alu.in1;
+ sendto debug.in;
+ decrement loop counter;
unclog;
debug.in: [*] take, deliver;
+alu.in2: literal 4;
+ [*] deliver;
+alu.in1: literal 2;
+ load repeat counter with 4; deliver;
+ clog;
+ load loop counter with 2;
+ take, deliver;
+ discard;
+ deliver;
+ unclog;
+