anchor.diff:     MemreadEngineV#(TMul#(N,32), 1, J) rowReadEngine <- mkMemreadEngineV();
      MemreadEngineV#(TMul#(N,32), 1, K) colReadEngine <- mkMemreadEngineV();
      Vector#(J, VectorSource#(DmaSz, Vector#(N,Float))) xvfsources <- mapM(uncurry(mkMemreadVectorSource), zip(rowReadEngine.readServers, rowReadEngine.dataPipes));
  -   Vector#(J, VectorSource#(DmaSz, Vector#(N,Float))) yvfsources <- mapM(uncurry(mkMemreadVectorSource), zip(colReadEngine.readServers, colReadEngine.dataPipes));
  +   Vector#(K, VectorSource#(DmaSz, Vector#(N,Float))) yvfsources <- mapM(uncurry(mkMemreadVectorSource), zip(colReadEngine.readServers, colReadEngine.dataPipes));
      DmaMatrixMultiplyIfc#(MMSize,DmaSz) dmaMMF <- mkDmaMatrixMultiply(xvfsources, yvfsources, mkDmaVectorSink);
      interface Vector readClients = cons(rowReadEngine.dmaClient, cons(colReadEngine.dmaClient, nil));
      interface Vector writeClients = dmaMMF.writeClients;
      method start = dmaMMF.start;
      method finish = dmaMMF.finish;
  -   method Tuple6#(Bit#(J),Bit#(K),Bit#(32),Bit#(J),Bit#(K),Bit#(32)) dbg();
  +   method Tuple6#(Bit#(J),Bit#(K),Bit#(32),Bit#(J),Bit#(J),Bit#(32)) dbg();
         return dmaMMF.dbg();
      endmethod
   endmodule
  
positive.code: 		       ObjectPointer pointerB, UInt#(MMSize) numRowsB, UInt#(MMSize) numColumnsB,
  		       ObjectPointer pointerC);
     method ActionValue#(Bool) finish();
     method Tuple6#(Bit#(J),Bit#(K),Bit#(32),Bit#(J),Bit#(K),Bit#(32)) dbg();
  endinterface
  
  (* synthesize *)
  
negative.code:    interface PipeOut#(Bit#(32)) macCount;
     method Bit#(RowsPerTile) aNotEmpty;
     method Bit#(RowsPerTile) bNotEmpty;
     method Vector#(RowsPerTile, Bit#(TLog#(K))) dotProdChan();
  endinterface
  
  (* synthesize *)
  