anchor.diff:        tail[idx] <= new_tail;
         outs1[idx] <= outs1[idx]+1;
         cmdBuf.portA.request.put(BRAMRequest{write:True, responseOnWrite:False, address:tail[idx], datain:cmd});
  +      dynamicAssert(cmd.burstLen>>beat_shift <= maxBurstLen,  "mkMemreadEngineV.store_cmd::unsupportedBurstLen");
         //$display("MemreadEngineV.store_cmd: %d %h", idx, tail[idx]);
      endrule
      
      rule load_ctxt;
         loadIdx <= loadIdx+1;
  -      if (outs1[loadIdx] > 0) begin
  +      if (outs1[loadIdx] > 0 && buffCap[loadIdx] > 0) begin
  +	 buffCap[loadIdx] <= buffCap[loadIdx]-1;
   	 cmdBuf.portA.request.put(BRAMRequest{write:False, responseOnWrite:False, address:head[loadIdx], datain:?});
   	 loadf.enq(loadIdx);
   	 //$display("MemreadEngineV.load_ctxt: %d, %h", loadIdx, head[loadIdx]);
  
positive.code:    
     Vector#(numServers, Server#(MemengineCmd,Bool)) rs;
     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);
  			 outs0[i] <= outs0[i]+1;
  			 cmds_in[i].enq(tuple2(fromInteger(i),c));
   		      endmethod
  		   endinterface
  		   interface Get response;
  		      method ActionValue#(Bool) get;
  			 outfs[i].deq;
  	 		 outs0[i] <= outs0[i]-1;
  			 return True;
  		      endmethod
  		   endinterface
  		endinterface);
     interface readServers = rs;
     interface ObjectReadClient dmaClient;
        interface Get readReq;
  
negative.code:    FunnelPipe#(1, numServers, Tuple2#(Bit#(serverIdxSz), MemengineCmd),bpc) cmds_in_funnel <- mkFunnelPipesPipelined(map(toPipeOut,cmds_in));
     FIFOF#(Tuple2#(Bit#(TLog#(numServers)), Tuple2#(Bit#(dataWidth),Bool))) read_data <- mkFIFOF;
     UnFunnelPipe#(1, numServers, Tuple2#(Bit#(dataWidth),Bool),bpc) read_data_unfunnel <- mkUnFunnelPipesPipelined(cons(toPipeOut(read_data),nil));
     Vector#(numServers, FIFOF#(Tuple2#(Bit#(dataWidth),Bool)))  read_data_unfunnel_buffs <- replicateM(mkSizedBRAMFIFOF(maxBufferedBursts*maxBurstLen));
     Vector#(numServers, PipeIn#(Tuple2#(Bit#(dataWidth),Bool))) foo = map(toPipeIn, read_data_unfunnel_buffs); 
     zipWithM(mkConnection, read_data_unfunnel, foo);
     function PipeOut#(Bit#(dataWidth)) check_out(FIFOF#(Tuple2#(Bit#(dataWidth),Bool)) x, Integer i) = 
        (interface PipeOut;
  	  method Bit#(dataWidth) first;
  	     return tpl_1(x.first);
  