anchor.diff:     FIFO#(Tuple2#(Bit#(serverIdxSz),Bool))           donef <- mkSizedBRAMFIFO(32); // is this the right size?
      
      Vector#(numServers, FIFO#(Bool))              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));
  +   Vector#(numServers, FIFOF#(MemengineCmd))    cmds_in <- replicateM(mkSizedFIFOF(1));
      Vector#(numServers, FIFOF#(Bit#(dataWidth)))  write_data_buffs <- replicateM(mkSizedBRAMFIFOF(bufferSizeBeats));
      Vector#(numServers, PipeOut#(Bit#(dataWidth))) foo = map(toPipeOut, write_data_buffs); 
      BurstFunnel#(numServers,dataWidth) write_data_funnel <- mkBurstFunnel(bufferSizeBeats);
  
positive.code:    
     
     Integer bufferSizeBeats = bufferSizeBytes/valueOf(dataWidthBytes);
     Vector#(numServers, Reg#(Bit#(outCntSz)))     outs1 <- replicateM(mkReg(0));
     Vector#(numServers, Reg#(Bit#(outCntSz)))     outs0 <- replicateM(mkReg(0));
     Vector#(numServers, ConfigCounter#(16))           buffCap <- replicateM(mkConfigCounter(0));
     UGBramFifos#(numServers,cmdQDepth,MemengineCmd) cmdBuf <- mkUGBramFifos;
  
     Reg#(Bool) load_in_progress <- mkReg(False);
     FIFO#(Tuple3#(MemengineCmd,Bool,Bool))         loadf_b <- mkSizedFIFO(1);
  
negative.code: 	  loadIdx <= loadIdx+1;
         endaction);
  
     for (Integer idx = 0; idx < valueOf(numServers); idx = idx + 1)
        rule store_cmd if (!outs1[idx]);
  	 let cmd <- toGet(cmds_in[idx]).get();
  	 outs1[idx] <= True;
  	 cmdRegs[idx] <= cmd;
        endrule
  
     rule load_ctxt_a if (!load_in_progress);
        if (outs1[loadIdx]) begin
  	 load_in_progress <= True;
  	 let cmd = cmdRegs[loadIdx];
  	 let cond0 <- buffCap[loadIdx].maybeDecrement(unpack(extend(cmd.burstLen>>beat_shift)));
  	 let cond1 = cmd.len <= extend(cmd.burstLen);
  	 loadf_b.enq(tuple3(cmd,cond0,cond1));
        end
        else begin
  	 incr_loadIdx;
        end
     endrule
     
     rule load_ctxt_b if (load_in_progress);
        load_in_progress <= False;
        incr_loadIdx;
        match {.cmd,.cond0,.cond1} <- toGet(loadf_b).get;
  