anchor.diff:  
      Reg#(SGLId)   pointer <- mkReg(0);
      Reg#(Bit#(32))       numWords <- mkReg(0);
  -   Reg#(Bit#(32))       burstLen <- mkReg(0);
  +   Reg#(Bit#(32))  burstLenBytes <- mkReg(0);
      FIFO#(void)                cf <- mkSizedFIFO(1);
      Reg#(Bit#(32))  itersToFinish <- mkReg(0);
      Reg#(Bit#(32))   itersToStart <- mkReg(0);
      Reg#(Bit#(32))        srcGens <- mkReg(0);
      Reg#(Bit#(32)) mismatchCounts <- mkReg(0);
      MemreadEngine#(64,2,1)        re <- mkMemreadEngine;
  -   Bit#(MemOffsetSize) chunk = extend(numWords)*4;
  +   Bit#(MemOffsetSize) numBytes = extend(numWords)*4;
      
      
      rule start (itersToStart > 0);
  -      re.readServers[0].request.put(MemengineCmd{sglId:pointer, base:0, len:truncate(chunk), burstLen:truncate(burstLen*4)});
  +      re.readServers[0].request.put(MemengineCmd{sglId:pointer, base:0, len:truncate(numBytes), burstLen:burstLenBytes});
         itersToStart <= itersToStart-1;
      endrule
   
  
positive.code: 	 pointer <= rp;
  	 cf.enq(?);
  	 numWords  <= nw;
  	 burstLen  <= bl;
  	 itersToFinish <= ic;
  	 itersToStart <= ic;
  	 mismatchCounts <= 0;
  
negative.code:       let misMatch = v != expectedV;
        mismatchCounts <= mismatchCounts + (misMatch ? 1 : 0);
        let new_srcGens = srcGens+2;
        if (new_srcGens >= truncate(numBytes/4))
  	 new_srcGens = 0;
        srcGens <= new_srcGens;
     endrule
  