anchor.diff:     interface ObjectWriteClient dmaClient = sinkC.dmaClient;
   endmodule
   
  +typedef 20 MMSize;
  +
   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,
  +   method Action start(ObjectPointer pointerA, UInt#(MMSize) numRowsA, UInt#(MMSize) numColumnsA,
  +		       ObjectPointer pointerB, UInt#(MMSize) numRowsB, UInt#(MMSize) numColumnsB,
   		       ObjectPointer pointerC);
      method ActionValue#(Bool) finish();
      method Bit#(32) dbg();
  
positive.code:       method Action mmf(Bit#(32) h1, Bit#(32) r1, Bit#(32) c1,
  			Bit#(32) h2, Bit#(32) r2, Bit#(32) c2,
  			Bit#(32) h3);
  	 dmaMMF.start(h1, unpack(extend(r1)), unpack(extend(c1)),
  		      h2, unpack(extend(r2)), unpack(extend(c2)),
  		      h3);
  	 mmfCycles <= 0;
  	 busyFifo.enq(True);
  
negative.code:    endrule
  
     for (Integer i = 0; i < k; i = i + 1) begin
        FIFO#(UInt#(addrwidth)) startAFifo <- mkFIFO();
        //FIFO#(UInt#(addrwidth)) startBFifo <- mkFIFO();
        FIFO#(UInt#(addrwidth)) startCFifo <- mkFIFO();
        FIFO#(UInt#(addrwidth))    colFifo <- mkFIFO();
        rule startDotProd1;
  	 Tuple2#(UInt#(addrwidth),UInt#(addrwidth)) xy = xypipes[i].first;
  	 xypipes[i].deq();
  	 
  