anchor.diff:        end
   
         chanFifos[0].enq(chan);
  -      chanFifos[1].enq(chan);
         chanReg <= (chan + 1);
         let a <- toGet(aFunnel).get();
         let b <- toGet(bFunnel).get();
   
         let first <- toGet(firstPipe).get();
  -      if (first)
  -	 accumFifos[chan].enq(unpack(0));
         //if (label == 0) $display("%08d label=%d mulin chan=%d first=%d", cycles, label, chan, first);
         mul.request.put(tuple2(a, b));
      endrule
   
      rule mulout;
         let chan <- toGet(chanFifos[0]).get();
  +      chanFifos[1].enq(chan);
         //if (label == 0) $display("%08d label=%d mulout chan=%d", cycles, label, chan);
         match {.resp,.*} <- mul.response.get();
         let acc <- toGet(accumFifos[chan]).get();
  
positive.code:       adder.request.put(tuple2(resp,acc));
     endrule
  
     rule accout;
        let chan <- toGet(chanFifos[1]).get();
        //if (label == 0) $display("%08d label=%d accout chan=%d", cycles, label, chan);
        let last <- toGet(lastPipe).get;
        match {.acc,.*} <- adder.response.get();
        if (last)
  	 dotfifos[chan].enq(acc);
        else
  	 accumFifos[chan].enq(acc);
     endrule
  
     Vector#(K,PipeOut#(Float)) dotpipes = map(toPipeOut, dotfifos);
  
negative.code:       endrule
  
        rule sinkDone;
  	 $dumpoff();
  	 // each time we write a burst of k values via sinks
  	 //let index <- toGet(indexpipes[jj+kk+1]).get();
  	 let b <- sinks[j].vector.finish();
  