anchor.diff:  
      FIFOF#(Bool) busyFifo <- mkFIFOF();
      rule mmfDone;
  -      $display("mmfDone");
         let d <- dmaMMF.finish();
         busyFifo.deq();
         ind.mmfDone();
  
positive.code: 
     let n = valueOf(n);
     let nshift = valueOf(nshift);
     Bool verbose = True;
  
     Reg#(Bool) doneReg <- mkReg(False);
     Reg#(MatrixDescriptor#(UInt#(addrwidth))) descriptorA <- mkReg(unpack(0));
  
negative.code:       descriptorC <= MatrixDescriptor { pointer: pointerC, base: 0, numRows: numRowsA, numColumns: numRowsB};
        dotprodCount <= numRowsA*numRowsB;
  
        if (verbose) $display("mm pointerA=%d pointerB=%d pointerC=%d\n", pointerA, pointerB, pointerC);
        if (verbose) $display("mm.start ra=%d ca=%d rb=%d cb=%d dotprodCount=%d", numRowsA, numColumnsA, numRowsB, numColumnsB, dotprodCount);
        if (verbose) $display($format(fshow("mm.start ")+fshow(xycfg)));
        xypipeifc.start(xycfg);
     endmethod
     method ActionValue#(Bool) finish();
        if (verbose) $display("mm.finish()");
        doneFifo.deq();
        return True;
     endmethod
  