anchor.diff:  
      let n = valueOf(n);
   
  -   DramMatrixMultiply#(N, TMul#(N,32)) dmaMMF <- mkDramMatrixMultiply(mmDebugIndication);
  +   DramMatrixMultiply#(N, TMul#(N,32)) dmaMMF <- mkDramMatrixMultiply();
   
      Reg#(Bit#(64)) mmfCycles <- mkReg(0);
      rule countMmfCycles;
  
positive.code:    method Action start(ObjectPointer pointerA, UInt#(addrwidth) numRowsA, UInt#(addrwidth) numColumnsA,
  		       ObjectPointer pointerB, UInt#(addrwidth) numRowsB, UInt#(addrwidth) numColumnsB,
  		       ObjectPointer pointerC) if (!running);
        mmDebugIndication.started();
        XYRangeConfig#(UInt#(addrwidth)) indexcfg  = XYRangeConfig {xbase: 0, xlimit: numRowsA, xstep: fromInteger(jj),
  								  ybase: 0, ylimit: numRowsB, ystep: fromInteger(kk) };
        XYRangeConfig#(UInt#(addrwidth)) offsetcfgA = XYRangeConfig {xbase: 0, xlimit: numRowsA*numColumnsA, xstep: numColumnsA*fromInteger(jj),
  
negative.code:    method Bit#(32) dbg();
  endinterface
  
  (* synthesize *)
  module [Module] mkDramMatrixMultiply(DramMatrixMultiply#(N,TMul#(N,32)));
     Vector#(TAdd#(K,J), DmaVectorSource#(DmaSz, Vector#(N,Float))) vfsources <- replicateM(mkDmaVectorSource());
     Vector#(J, VectorSource#(DmaSz, Vector#(N,Float))) xvfsources = takeAt(0,          map(dmaVectorSourceVector, vfsources));
     Vector#(K, VectorSource#(DmaSz, Vector#(N,Float))) yvfsources = takeAt(valueOf(J), map(dmaVectorSourceVector, vfsources));
     DmaMatrixMultiplyIfc#(MMSize,DmaSz) dmaMMF <- mkDmaMatrixMultiply(xvfsources, yvfsources, mkDmaVectorSink);
     interface Vector readClients = map(getSourceReadClient, vfsources);
     interface Vector writeClients = dmaMMF.writeClients;
     method start = dmaMMF.start;
  