anchor.diff:  instance AxiToMemReadClient#(GetObjId#(32),32,dataWidth);
      module mkMemReadClient#(GetObjId#(32) objId, Axi4MasterBits#(32,dataWidth,MemTagSize,Empty) m)(MemReadClient#(dataWidth));
   
  -      Wire#(Bit#(1)) arready <- mkDWire(0);
  -      Wire#(Bit#(1)) rvalid <- mkDWire(0);
  -      Wire#(Bit#(MemTagSize)) rid <- mkDWire(0);
  -      Wire#(Bit#(2)) rresp <- mkDWire(0);
  -      Wire#(Bit#(dataWidth)) rdata <- mkDWire(0);
  -      Wire#(Bit#(1)) rlast <- mkDWire(0);
  -
  -      FIFOF#(MemRequest)          arfifo <- mkCFFIFOF();
  -      FIFOF#(MemData#(dataWidth))  rfifo <- mkCFFIFOF();
  +      let clock <- exposeCurrentClock();
  +      let mClock = clockOf(m);
  +      let reset <- exposeCurrentReset();
  +      let mReset = resetOf(m);
  +
  +      Wire#(Bit#(1)) arready <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +      Wire#(Bit#(1)) rvalid <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +      Wire#(Bit#(MemTagSize)) rid <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +      Wire#(Bit#(2)) rresp <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +      Wire#(Bit#(dataWidth)) rdata <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +      Wire#(Bit#(1)) rlast <- mkDWire(0, clocked_by mClock, reset_by mReset);
  +
  +      FIFOF#(MemRequest)          arfifo;
  +      FIFOF#(MemData#(dataWidth))  rfifo;
  +      if ( isAncestor(clock, mClock)) begin
  +	 arfifo <- mkCFFIFOF();
  +	 rfifo  <- mkCFFIFOF();
  +      end
  +      else begin
  +	 arfifo <- mkDualClockBramFIFOF(mClock, mReset, clock, reset);
  +	 rfifo  <- mkDualClockBramFIFOF(clock, reset, mClock, mReset);
  +      end
   
         rule rl_araddr if (m.arvalid() == 1);
   	 let addr = m.araddr();
  
positive.code: import MemTypes::*;
  import EHRM::*;
  import Axi4MasterSlave::*;
  
  interface AxiMasterBits#(numeric type addrWidth, numeric type dataWidth, numeric type tagWidth, type extraType);
      method Bit#(addrWidth)     araddr();
  
negative.code: 	 let wdata = md.data;
  	 axiSlave.wdata(wdata);
  	 axiSlave.wlast(pack(wfifo.first.last));
  	 axiSlave.wstrb(wstrbfifo.first);
  	 if (wfifo.first.last)
  	    wstrbfifo.deq();
        endrule
  