anchor.diff:  
      rule handle_bcam_response;
         let v <- bcam.readServer.response.get;
  -      //if (verbose) $display("matchTable %d: recv bcam response ", cycle, fshow(v));
  +      if (verbose) $display("(%0d) matchTable recv bcam response ", $time, fshow(v));
         if (isValid(v)) begin // if match
            let address = fromMaybe(?, v);
            ram.portA.request.put(BRAMRequest{write:False, responseOnWrite: False, address: address, datain:?});
  
positive.code:             Add#(TAdd#(TLog#(c__), 4), i__, TLog#(depth)));
  
     MatchTable#(depth, keySz, actionSz) ret_ifc;
  `ifdef SIMULATION
     ret_ifc <- mkMatchTableBluesim();
  `else
     ret_ifc <- mkMatchTableSynth();
  `endif
     return ret_ifc;
  endmodule
  
  
negative.code:    interface Put add_entry;
        method Action put (Tuple2#(Bit#(keySz), Bit#(actionSz)) v);
           BcamWriteReq#(Bit#(depthSz), Bit#(keySz)) req_bcam = BcamWriteReq{addr: addrIdx, data: pack(tpl_1(v))};
           BRAMRequest#(Bit#(depthSz), Bit#(actionSz)) req_ram = BRAMRequest{write: True, responseOnWrite: False, address: addrIdx, datain: pack(tpl_2(v))};
           bcam.writeServer.put(req_bcam);
           ram.portA.request.put(req_ram);
           $display("(%0d) match_table: add flow %x %x %x", $time, addrIdx, tpl_1(v), tpl_2(v));
           addrIdx <= addrIdx + 1; //FIXME: currently no reuse of address.
        endmethod
     endinterface
  