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:    for(Integer i = 0; i < valueOf(numServers); i=i+1)
        rs[i] = (interface Server#(MemengineCmd,Bool);
  		  interface Put request;
  		     method Action put(MemengineCmd c) if (outs0[i] < cmd_q_depth);
  			Bit#(32) bsb = fromInteger(bufferSizeBytes);
  `ifdef BSIM	 
  			Bit#(32) dw = fromInteger(valueOf(dataWidthBytes));
  			let mdw = ((c.len)/dw)*dw != c.len;
  			let bbl = extend(c.burstLen) > bsb;
  			if(bbl || mdw) begin
  			   if (bbl)
  			      $display("XXXXXXXXXX mkMemreadEngineBuff::unsupported burstLen %d %d", bsb, c.burstLen);
  			   if (mdw)
  			      $display("XXXXXXXXXX mkMemreadEngineBuff::unsupported len %d", c.len);
  			end
  			else begin
  `endif
  	 		   outs0[i] <= outs0[i]+1;
  			   cmds_in[i].enq(tuple2(fromInteger(i),c));
  `ifdef BSIM
  			end
  `endif
  
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));
     
  