anchor.diff:     Reg#(Bit#(32))                                   iterCnt <- mkReg(0);
      Reg#(Bit#(32))                                readOffset <- mkReg(0);
      Vector#(NumEngineServers, Reg#(Bit#(32)))       iterCnts <- replicateM(mkReg(0));
  -   Vector#(NumEngineServers, Reg#(Bit#(32)))   valuesToRead <- replicateM(mkReg(0));
  +   Vector#(NumEngineServers, Reg#(Bit#(32)))    wordsToRead <- replicateM(mkReg(0));
      Vector#(NumEngineServers, Reg#(Bit#(32))) mismatchCounts <- replicateM(mkReg(0));
      MemreadEngineV#(DataBusWidth,NumOutstandingRequests,NumEngineServers) re <- mkMemreadEngineBuff(memreadEngineBufferSize);
      Vector#(NumEngineServers, FIFOF#(Bit#(32))) mismatchFifos <- replicateM(mkFIFOF);
  -   Bit#(MemOffsetSize) chunk = (extend(numWords)/fromInteger(valueOf(NumEngineServers)))*4;
  +   Bit#(MemOffsetSize) chunkBytes = (extend(numWords)/fromInteger(valueOf(NumEngineServers)))*4;
      
      Vector#(NumEngineServers, RangePipeIfc#(Bit#(32)))     rangePipeIfcs <- replicateM(mkRangePipeOut);
      function PipeOut#(a) getRangePipePipe(RangePipeIfc#(a) rpi); return rpi.pipe; endfunction
  
positive.code: 	 for(Integer i = 0; i < valueOf(NumEngineServers); i=i+1) begin
  	    iterCnts[i] <= ic;
  	    mismatchCounts[i] <= 0;
  	    valuesToRead[i] <= truncate(chunk/4);
  	    finishedReg[i] <= False;
  	 end
  	 reportStateFifo.enq(0);
  
negative.code: 
     for(Integer i = 0; i < valueOf(NumEngineServers); i=i+1) begin
        rule start (iterCnts[i] > 0);
  	 re.readServers[i].request.put(MemengineCmd{sglId:pointer, base:extend(readOffset)+(fromInteger(i)*chunkBytes), len:truncate(chunkBytes), burstLen:truncate(burstLen*4)});
  	 iterCnts[i] <= iterCnts[i]-1;
  	 Bit#(32) base = (readOffset/4)+(fromInteger(i)*(truncate(chunkBytes)/4));
  	 Bit#(32) limit = base + truncate(chunkBytes)/4;
  	 let rangeConfig = RangeConfig { xbase: base, xlimit: limit, xstep: 1 };
  	 rangePipeIfcs[i].start(rangeConfig);
  	 $display("start %d, %d, %h", i, iterCnts[i], readOffset);
  