anchor.diff:        rule finishSourceB;
   	 UInt#(TLog#(K)) in = fromInteger(k);
   	 int kint = fromInteger(k);
  -	 if (verbose || verbose1) $display($format(fshow(cycles)+fshow("    sourceB[")+fshow(kint)+fshow("].finish")));
  +	 if (timing || verbose || verbose1) $display($format(fshow(cycles)+fshow("    sourceB[")+fshow(kint)+fshow("].finish")));
   	 let b <- sourceB[k].finish();
         endrule
      end
  
positive.code:       endcase
  `endif
        if (last) begin
  	 lastCnt <= lastCnt+1;
  	 if (verbose) $display("accout lastCnt=%d, K=%d", lastCnt, valueOf(K));
        end
     endrule
     
     rule gatherA if (gather_phase && gatherCntA < fromInteger(valueOf(gatherSz)));
        let chan = chanReg;
        chanReg <= chan+1;
        let last_chan = chan == fromInteger(valueOf(K)-1);
        let last_pass = gatherCntA+1 == fromInteger(valueOf(gatherSz));
        if (!last_pass) begin
  	 chanFifos[1].enq(chan);
  	 let x <- toGet(accumFifos[chan][gatherCntA+0]).get;
  	 let y <- toGet(accumFifos[chan][gatherCntA+1]).get;
  	 adder.request.put(tuple2(x,y));
  
negative.code: 	 for(Integer i = 0; i < valueOf(N); i=i+1)
  	    rv[i] = Token{v:vs.pipe.first[i], first:False, last:False};
  `endif
  	 if (countReg==0)
  	    rv[0].first = True;
  	 if (countReg+1==cmdFifo.first)
  	    rv[valueOf(N)-1].last = True;
  	 return rv;
        endmethod
        method Action deq;
  	 vs.pipe.deq;
  	 if(countReg+1==cmdFifo.first) begin
  	    countReg <= 0;
  	    cmdFifo.deq;
  `ifdef TAGGED_TOKENS
  	    tagFifo.deq;
  	    row <= 0;
  `endif      
  	 end
  	 else begin
  `ifdef TAGGED_TOKENS
  	    row <= row+fromInteger(valueOf(N));
  `endif
  	    countReg <= countReg+1;
  	 end
        endmethod
        method Bool notEmpty;
  `ifdef TAGGED_TOKENS
  