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: 	     Add#(e__, TLog#(numServers), TAdd#(1, cmdBuffAddrSz)),
  	     Add#(a__, serverIdxSz, cmdBuffAddrSz),
  	     Min#(2,TLog#(numServers),bpc),
  	     FunnelPipesPipelined#(1,numServers,Tuple2#(Bit#(serverIdxSz),MemengineCmd),bpc),
  	     Add#(d__, TLog#(numServers), TAdd#(1, serverIdxSz)),
  	     Add#(f__, serverIdxSz, 6));
     
  
negative.code: 	  loadIdx <= loadIdx+1;
         endaction);
           
     for (Integer idx = 0; idx < valueOf(numServers); idx = idx + 1)
        rule store_cmd;
  	 let cmd <- toGet(cmds_in[idx]).get();
  	 outs1[idx] <= True;
  	 cmdBuf.enq(fromInteger(idx),cmd);
  	 if (verbose) $display("mkMemreadEngineBuff::store_cmd %d %d", idx, buffCap[idx].read);
        endrule
     
     rule load_ctxt_a (!load_in_progress);
        if (outs1[loadIdx]) begin
  