anchor.diff:     method ActionValue#(Bit#(TLog#(numTags))) complete;
   endinterface
   
  +//(* synthesize *)
  +module mkTagEHR (EHR2BSV#(Bit#(numTags)));
  +   EHR#(2,Bit#(numTags)) ehr <- mkEHR(0);
  +   interface r1 = ehr[0];
  +   interface r2 = ehr[1];
  +endmodule
  +
   module mkTagGen(TagGen#(numTags))
      provisos(Log#(numTags,tsz));
      
      BRAM_Configure cfg = defaultValue;
      cfg.outFIFODepth = 1;
      //BRAM2Port#(Bit#(tsz),Bool) tags <- mkBRAM2Server(cfg);
  -   Vector#(numTags, Reg#(Bool)) tags <- replicateM(mkReg(False));
  -   //RegFile#(Bit#(tsz),Bool)     tags <- mkRegFile(0, fromInteger(valueOf(numTags)-1));
  +   //Vector#(numTags, Reg#(Bool)) tags <- replicateM(mkReg(False));
  +   EHR2BSV#(Bit#(numTags)) tags <- mkTagEHR();
      Reg#(Bit#(tsz))        head_ptr <- mkReg(0);
      Reg#(Bit#(tsz))        tail_ptr <- mkReg(0);
      Reg#(Bool)               inited <- mkReg(False);
  
positive.code:    
     rule tag_rule if (inited && counter.positive);
        //tags.portA.request.put(BRAMRequest{write:True, responseOnWrite:False, address:head_ptr, datain:True});
        //tags.upd(head_ptr, True);
        tags[head_ptr] <= True;
        head_ptr <= head_ptr+1;
        tagFifo.enq(head_ptr);
        counter.decrement(1);
  
negative.code: import Assert::*;
  import BRAM::*;
  import RegFile::*;
  import EHR::*;
  
  // CONNECTAL Libraries
  import MemTypes::*;
  