anchor.diff:  	     , Bits#(MatrixDescriptor#(UInt#(addrwidth)), mdsz)
   	     , Bits#(Tuple2#(UInt#(addrwidth), UInt#(addrwidth)), tplsz)
   	     , Add#(b__, 20, addrwidth)
  +	     , Add#(a__, addrwidth, 40)
         );
   
      let n = valueOf(N);
  
positive.code:    interface ObjectWriteClient dmaClient = sinkC.dmaClient;
  endmodule
  
  interface DramMatrixMultiply#(numeric type n, numeric type dmasz);
     interface Vector#(TAdd#(K,1), ObjectReadClient#(dmasz)) readClients;
     interface Vector#(1, ObjectWriteClient#(dmasz)) writeClients;
     method Action start(ObjectPointer pointerA, UInt#(ObjectOffsetSize) numRowsA, UInt#(ObjectOffsetSize) numColumnsA,
  		       ObjectPointer pointerB, UInt#(ObjectOffsetSize) numRowsB, UInt#(ObjectOffsetSize) numColumnsB,
  		       ObjectPointer pointerC);
     method ActionValue#(Bool) finish();
     method Bit#(32) dbg();
  
negative.code: 				     Vector#(K, VectorSource#(dsz, Vector#(N, Float))) sourceB,
  				     function Module#(DmaVectorSink#(dsz, Vector#(N, Float))) mkSink(PipeOut#(Vector#(N, Float)) pipe_in)
  				     )(DmaMatrixMultiplyIfc#(addrwidth, dsz))
     provisos (  Add#(N,n__,K)
  	     , Mul#(N,m__,K)
  	     , Add#(1,0,J)
  	     , Log#(N,nshift)
  