anchor.diff:  
         for (Integer i = 0; i < valueOf(n); i = i + 1) begin
   	 Maybe#(Float) accum = tagged Invalid;
  -	 if (!isFirst) begin
  -	    accum = accumFifo[i].first();
  -	    accumFifo[i].deq();
  +	 if (useMac) begin
  +	     if (!isFirst) begin
  +		accum = tagged Valid accumFifo[i].first();
  +		accumFifo[i].deq();
  +	     end
  +            macs[i].request.put(tuple4(accum, x[i], y[i], defaultValue));
  +	 end
  +	 else begin
  +	    muls[i].request.put(tuple3(x[i],y[i],defaultValue));
   	 end
   	 if (verbose) $display($format(fshow("label=")+fshow(label)+fshow(" dotprod x=") + fshow(x) + fshow(" y=") + fshow(y) + fshow(" accum=")+fshow(pack(accum))));
  -         macs[i].request.put(tuple4(accum, x[i], y[i], defaultValue));
  +      end
  +   endrule
  +
  +   rule add;
  +      if (!useMac) begin
  +	 Float accum = unpack(0);
  +	 let isFirst = firstFifo.first();
  +	 firstFifo.deq();
  +	 for (Integer i = 0; i < valueOf(n); i = i + 1) begin
  +	    if (!isFirst) begin
  +	       accum = accumFifo[i].first();
  +	       accumFifo[i].deq();
  +	    end
  +	    let resp <- adders[i].response.get();
  +	    adders[i].request.put(tuple3(accum,tpl_1(resp),defaultValue));	 
  +	 end
         end
      endrule
   
  
positive.code:       xpipe.deq();
        ypipe.deq();
        xyfifo.enq(tuple3(isFirst,xpipe.first(), ypipe.first()));
        lastFifo.enq(isLast);
     endrule
  
     Vector#(n, Server#(Tuple4#(Maybe#(Float), Float, Float, RoundMode), Tuple2#(Float,Exception))) macs <- replicateM(mkFloatMac);
     Vector#(n, FIFO#(Maybe#(Float))) accumFifo <- replicateM(mkFIFO());
     FIFOF#(Vector#(n,Float)) resultFifo <- mkFIFOF();
  
     rule mul;
  
negative.code: 
     DramMatrixMultiply#(N, TMul#(N,32)) dmaMMF <- mkDramMatrixMultiply();
  
     Reg#(Bit#(64)) mmfCycles <- mkReg(0);
     rule countMmfCycles;
        mmfCycles <= mmfCycles + 1;
     endrule
  
     FIFOF#(Bool) busyFifo <- mkFIFOF();
     rule mmfDone;
        let d <- dmaMMF.finish();
        busyFifo.deq();
        ind.mmfDone(mmfCycles);
     endrule
  
     FIFOF#(Bool) timerRunning <- mkFIFOF();
  