anchor.diff:     provisos( Mul#(TDiv#(dataWidth, 8), 8, dataWidth)
   	    ,Add#(1, a__, numServers)
   	    ,Add#(b__, TLog#(numServers), TAdd#(1, TLog#(TMul#(cmdQDepth,numServers))))
  -	    ,Pipe::FunnelPipesPipelined#(1, numServers,Tuple2#(Bit#(TLog#(numServers)), MemTypes::MemengineCmd), TMin#(2,TLog#(numServers)))
   	    ,Add#(c__, TLog#(numServers), TLog#(TMul#(cmdQDepth, numServers)))
   	    ,Add#(d__, TLog#(numServers), 6)
   	    );
  
positive.code:    
  
     Vector#(numServers, FIFO#(void))              outfs <- replicateM(mkSizedFIFO(1));
     Vector#(numServers, FIFOF#(Tuple2#(Bit#(serverIdxSz), MemengineCmd))) cmds_in <- replicateM(mkSizedFIFOF(1));
     FunnelPipe#(1, numServers, Tuple2#(Bit#(serverIdxSz), MemengineCmd),bpc) cmds_in_funnel <- mkFunnelPipesPipelined(map(toPipeOut,cmds_in));
  
     FIFOF#(MemData#(dataWidth))                             read_data <- mkFIFOF;
     Vector#(numServers, FIFOF#(MemData#(dataWidth)))  read_data_buffs <- replicateM(mkSizedBRAMFIFOF(bufferSizeBeats));
  
negative.code: 	     Add#(e__, TLog#(numServers), TAdd#(1, cmdBuffAddrSz)),
  	     Add#(a__, serverIdxSz, cmdBuffAddrSz),
  	     Min#(2,TLog#(numServers),bpc),
  	     Add#(d__, TLog#(numServers), TAdd#(1, serverIdxSz)),
  	     Add#(f__, serverIdxSz, 6));
     
  