anchor.diff:  
      XYRangePipeIfc#(UInt#(addrwidth)) xypipeifc <- mkXYRangePipeOut();
   
  -   Vector#(TAdd#(n,1), PipeOut#(Tuple2#(UInt#(addrwidth),UInt#(addrwidth)))) xypipes <- mkForkVector(xypipeifc.pipe);
  +   Vector#(TAdd#(n,2), PipeOut#(Tuple2#(UInt#(addrwidth),UInt#(addrwidth)))) xypipes <- mkForkVector(xypipeifc.pipe);
   
      Reg#(Bool) running <- mkReg(False);
      FIFOF#(Bool) doneFifo <- mkFIFOF();
  
positive.code: 				     )(DmaMatrixMultiplyIfc#(addrwidth, dsz))
     provisos (Add#(a__,ObjectOffsetSize,addrwidth)
  	     , Add#(N,0,n)
  	     , FShow#(Float)
  	     , Arith#(Float)
  	     , Bits#(Vector#(N, Float), dsz));
  
     let n = valueOf(n);
     Bool verbose = True;
  
     Reg#(Bool) doneReg <- mkReg(False);
  
negative.code: 
     rule sinkDone;
        // each time we write a burst of k values via sinkC
        let xy = xypipes[n+1].first;
        xypipes[n+1].deq;
        let b <- sinkC.vector.finish();
        let c = dotprodCount-fromInteger(n);
        $display($format(fshow(cycles)+fshow("    sinkDone c")+fshow(c)+fshow("    xy=")+fshow(xy)));
        dotprodCount <= c;
        if (c == 0) begin
  	 running <= False;
  