anchor.diff:  `ifdef TAGGED_TOKENS
   	 row <= row+fromInteger(valueOf(N));
   `endif
  +	 firstReg <= False;
  +	 lastReg <= (countReg == 2); // ((countReg - 1) == 1);
  +	 countReg <= countReg - 1;
  +	 $display("mkColSource count=%d first=%d last=%d", countReg, firstReg, lastReg);
         endmethod
         method Bool notEmpty;
   `ifdef TAGGED_TOKENS
  
positive.code:       let a <- toGet(aFunnel).get();
        let b <- toGet(bFunnel).get();
              
        let first <- toGet(firstPipe).get();
        if (verbose) $display("%08d label=%d mulin chan=%d first=%d", cycles-lastMulin[chan], label, chan, first);
        mul.request.put(tuple2(a.v, b.v));
  `ifdef TAGGED_TOKENS
        // if (a.row==2 && b.col==0)
  
negative.code:    UInt#(32) col;
  `endif
     Float v;
     Bool first;
     Bool last;
     } Token deriving (Eq,Bits);
  
  interface SharedDotProdServer#(numeric type k);
     interface Put#(Token)                 aInput;
     interface Put#(Token)                 bInput;
     interface Vector#(k, PipeOut#(Token)) pipes;
  