void->int filter Generate{ int x=0; work push 1{ push(x); x = x+1; } } int->void filter Read{ work pop 1{ print( pop() ); } } bit->bit filter Gen{ work push 1{ //If pop rate is not defined, it is assumed to be zero. push( (bit) 1 ); } } bit->bit splitjoin Interleave{ split roundrobin( 1, 0); add Identity(); add Gen(); //Gen gets 0 bits of input, and produces 1 bit. join roundrobin( 1, 1); } void->void pipeline merging1{ add Generate(); add Interleave(); add Read(); }