anchor.diff:        };
   endinstance
   
  -// memory request with "virtual" addresses.
  -// these need to be translated before they can be send to the bus
  -typedef struct {
  -   SGLId sglId;
  -   Bit#(MemOffsetSize) offset;
  -   Bit#(BurstLenSize) burstLen;
  -   Bit#(MemTagSize)  tag;
  -`ifdef BYTE_ENABLES
  -   Bit#(ByteEnableSize) firstbe; // maybe we only need lastbe
  -   Bit#(ByteEnableSize) lastbe;
  -`endif
  -   } MemRequest deriving (Bits);
  -
  -instance DefaultValue#(MemRequest);
  -   defaultValue = MemRequest {
  -      sglId: 0, offset: 0, burstLen: 0, tag: 0
  -`ifdef BYTE_ENABLES
  -      , firstbe: maxBound, lastbe: maxBound
  -`endif
  -      };
  -endinstance
  -
   // memory payload
   typedef struct {
      Bit#(dsz) data;
  
positive.code:    Bool last;
     } MemDataF#(numeric type dsz) deriving (Bits);
  
  typedef struct {
     Bit#(MemTagSize) tag;
     Bit#(32)         cycles;
     } MemRequestCycles deriving (Bits);
  
  //
  ///////////////////////////////////////////////////////////////////////////////////
  
  
  ///////////////////////////////////////////////////////////////////////////////////
  //
  
  interface MemReadClient#(numeric type dsz);
     interface Get#(MemRequest)    readReq;
     interface Put#(MemData#(dsz)) readData;
  endinterface
  
  interface MemWriteClient#(numeric type dsz);
     interface Get#(MemRequest)    writeReq;
     interface Get#(MemData#(dsz)) writeData;
     interface Put#(Bit#(MemTagSize))       writeDone;
  endinterface
  
  interface MemReadServer#(numeric type dsz);
     interface Put#(MemRequest) readReq;
     interface Get#(MemData#(dsz))     readData;
  endinterface
  
  interface MemWriteServer#(numeric type dsz);
     interface Put#(MemRequest) writeReq;
     interface Put#(MemData#(dsz))     writeData;
     interface Get#(Bit#(MemTagSize))           writeDone;
  endinterface
  
  interface MemServer#(numeric type dataWidth);
     interface MemReadServer#(dataWidth) readServer;
     interface MemWriteServer#(dataWidth) writeServer;
  endinterface
  
  //
  ///////////////////////////////////////////////////////////////////////////////////
  
negative.code: 
  //
  ///////////////////////////////////////////////////////////////////////////////////
  
  instance Connectable#(PhysMemReadClient#(asz,dsz), PhysMemReadServer#(asz,dsz));
     module mkConnection#(PhysMemReadClient#(asz,dsz) source, PhysMemReadServer#(asz,dsz) sink)(Empty);
  