anchor.diff:                      if (nextFree[addrIdx] != 0)
                       begin
                           Bit#(3) index = priority_encoder(nextFree[addrIdx]);
  -                        nextFree[addrIdx] <= flip_bit_at_pos(index, addrIdx);
  +                        putFIFO.enq(flip_bit_at_pos(index, addrIdx));
  +                        temp <= addrIdx;
                           hTable[index].request.put(currReq);
                       end
                       else
  
positive.code:     FIFOF#(ResponseType) responseFIFO <- mkBypassFIFOF;
  
      Vector#(3, Reg#(RequestType)) currReq <- replicateM(mkReg(defaultValue));
  
      for (Integer i = 0; i < fromInteger(valueof(MATCH_TABLE_ASSOCIATIVITY)); i = i + 1)
      begin
  
negative.code:          endcase             
      endrule
  
      rule update_nextFree_for_PUT;
          let x <- toGet(putFIFO).get;
          nextFree[temp] <= x;
      endrule
      
      rule update_nextFree_for_REM;
          let x <- toGet(remFIFO).get;
          nextFree[temp] <= x;
      endrule
  
      interface Put request = toPut(requestFIFO);
      interface Get response = toGet(responseFIFO);
  endmodule
  