anchor.diff:  
   interface VectorSink#(numeric type dsz, type a);
      interface PipeOut#(Bool) pipe;
  -   method Action start(DmaPointer h, Bit#(DmaOffsetSize) a, Bit#(DmaOffsetSize) l);
  +   method Action start(ObjectPointer h, Bit#(ObjectOffsetSize) a, Bit#(ObjectOffsetSize) l);
   endinterface
   interface DmaVectorSink#(numeric type dsz, type a);
  -   interface DmaWriteClient#(dsz) dmaClient;
  +   interface ObjectWriteClient#(dsz) dmaClient;
      interface VectorSink#(dsz, a) vector;
   endinterface
   
  
positive.code: 
  module [Module] mkBramVectorSource(BramVectorSource#(addrsz, dsz, dtype))
     provisos (Bits#(dtype,dsz),
  	     Add#(a__, addrsz, DmaOffsetSize)
  	     );
  
     Bool verbose = False;
  
negative.code: 
  interface VectorSource#(numeric type dsz, type a);
     interface PipeOut#(a) pipe;
     method Action start(ObjectPointer h, Bit#(ObjectOffsetSize) a, Bit#(ObjectOffsetSize) l);
  endinterface
  
  interface DmaVectorSource#(numeric type dsz, type a);
     interface ObjectReadClient#(dsz) dmaClient;
     interface VectorSource#(dsz, a) vector;
  endinterface
  
  function ObjectReadClient#(asz) getSourceReadClient(DmaVectorSource#(asz,a) s); return s.dmaClient; endfunction
  function ObjectWriteClient#(asz) getSinkWriteClient(DmaVectorSink#(asz,a) s); return s.dmaClient; endfunction
  function VectorSource#(dsz, dtype) dmaVectorSourceVector(DmaVectorSource#(dsz,dtype) dmavs); return dmavs.vector; endfunction
  
  module [Module] mkDmaVectorSource(DmaVectorSource#(asz, a))
     provisos (Bits#(a,asz),
  	     Div#(asz,8,abytes),
  	     Log#(abytes,ashift),
  	     Mul#(abytes, 8, asz)
  	     );
  
     Bool verbose = True;
  
     let asz = valueOf(asz);
     let abytes = valueOf(abytes);
     let ashift = valueOf(ashift);
     let burstLen = 1;
  
     FIFOF#(Bit#(asz)) dfifo <- mkFIFOF();
     MemreadEngine#(asz) memreadEngine <- mkMemreadEngine(2, dfifo);
  
     interface ObjectReadClient dmaClient = memreadEngine.dmaClient;
     interface VectorSource vector;
         method Action start(ObjectPointer p, Bit#(ObjectOffsetSize) a, Bit#(ObjectOffsetSize) l);
  	  if (verbose) $display("DmaVectorSource.start h=%d a=%h l=%h ashift=%d", p, a, l, ashift);
            memreadEngine.start(p, a, truncate(l << ashift), 8);
         endmethod
         interface PipeOut pipe;
  	  method first();
  	     return unpack(dfifo.first());
  	  endmethod
  	  method Action deq();
  	     if (verbose) $display("ObjectReadClient pipe.deq() data=%h", dfifo.first);
  	     dfifo.deq;
  	  endmethod
  	  method notEmpty = dfifo.notEmpty;
  