main(x -> out) = alu :: Alu2 debug :: Debug fifo1 :: Fifo fifo2 :: Fifo { 0, 1, 2 } --> fifo1.in { 0, 3, 4 } --> fifo2.in fifo1.out --> alu.inOp, alu.in1, alu.in2 alu.out --> debug.in ;; fifo2.out --> alu.inOp, alu.in1, alu.in2 alu.out --> debug.in while alu.out > 3 { 3 --> debug.in } /* double(a -> out) = alu :: Alu2 a --> alu.in1, alu.in2 0 --> alu.inOp alu.out --> out half(a -> out) = shift :: Shift a --> shift.in 1 --> shift.inAmount shift.out --> out thrice(a -> out) = alu :: Alu2 a --> alu.in1, alu.in2, alu.in2 0 -[2]-> alu.inOp { alu.out --> alu.in2 alu.out --> alu.out } */