anchor.diff:  import GetPut::*;
   import Connectable::*;
   import Vector::*;
  +import BuildVector::*;
   import MIMO::*;
   import DefaultValue::*;
   import Gearbox::*;
  
positive.code:    return map(pipeSecond,outs);
  endmodule
     
  instance FunnelPipesPipelined#(1,k,a,bpc)
     provisos (Log#(k, logk),
  	     Bits#(a,a__),
  	     Add#(1,b__,k),
  	     Div#(logk,bpc,stages));
     module mkFunnelPipesPipelined#(Vector#(k,PipeOut#(a)) in) (FunnelPipe#(1,k,a,bpc));
        Vector#(stages, Vector#(k, FIFOF#(a))) buffs  <- replicateM(replicateM(mkFIFOF));
        Vector#(TAdd#(stages,1), Vector#(k, PipeOut#(a))) infss = append(map(map(toPipeOut),buffs), cons(in,nil));
        for(Integer j = valueOf(stages); j > 0; j=j-1)
  	 for(Integer i = 0; i < 2**(j*valueOf(bpc)) && i < valueOf(k); i=i+1) 
  	    mkConnection(infss[j][i], toPut(buffs[j-1][i/(2**valueOf(bpc))]));
        return cons(infss[0][0],nil);
     endmodule
     module mkFunnelPipesPipelinedRR#(Vector#(k,PipeOut#(a)) in, Integer c) (FunnelPipe#(1,k,a,bpc));
        Vector#(stages, Vector#(k, FIFOF#(a))) buffs  <- replicateM(replicateM(mkFIFOF));
        Vector#(TAdd#(stages,1), Vector#(k, PipeOut#(a))) infss = append(map(map(toPipeOut),buffs), cons(in,nil));
        for(Integer j = valueOf(stages); j > 0; j=j-1) begin
  	 Vector#(k, FIFOF#(void)) ctrl  <- replicateM(mkFIFOF1());
     	 for(Integer i = 0; i < 2**(j*valueOf(bpc)) && i < valueOf(k); i=i+1) begin
  
negative.code:    	    endrule
     	 end
        end
        return vec(infss[0][0]);
     endmodule
     module mkUnFunnelPipesPipelined#(Vector#(1, PipeOut#(Tuple2#(Bit#(logk),a))) in) (UnFunnelPipe#(1,k,a,bpc));
        let rv <- mkUnFunnelPipesPipelinedInternal(in);
  