anchor.diff:     interface PipeOut#(Float) pipe;
   endinterface
   
  -(* synthesize *)
  +//(* synthesize *)
   module [Module] mkDotProdServer#(UInt#(TLog#(TMul#(J,K))) label)(DotProdServer#(N));
   
      let n = valueOf(N);
  
positive.code:    Vector#(K, Reg#(Bit#(32))) lastMulin <- replicateM(mkReg(0));
     Vector#(12, Reg#(Bool))   latencyReported <- replicateM(mkReg(False));
  
     (* descending_urgency = "mulin,accout" *)
     rule mulin;
        let chan = chanReg;
  
  
negative.code:    PipeOut#(Bool) firstPipe <- mkRepeat(repetitions, toPipeOut(firstFifo));
     PipeOut#(Bool) lastPipe <- mkRepeat(repetitions,  toPipeOut(lastFifo));
  
     Vector#(K,FIFOF#(Float)) accumFifos <- replicateM(mkFIFOF1);
     Vector#(K,FIFOF#(Float)) dotfifos   <- replicateM(mkFIFOF1);
  
     Reg#(Bit#(TLog#(K))) chanReg <- mkReg(0);
     Vector#(2,FIFO#(Bit#(TLog#(K)))) chanFifos <- replicateM(mkSizedFIFO(valueOf(K)*2));
  
     function Bit#(TLog#(N)) i_v(Integer i) = fromInteger(i);
  
  