anchor.diff:  	 for(Integer i = 0; i < valueOf(NumEngineServers); i=i+1) begin
   	    iterCnts[i] <= ic;
   	    mismatchCounts[i] <= 0;
  -	    valuesToRead[i] <= truncate(chunk/4);
  +	    wordsToRead[i] <= truncate(chunkBytes/4);
   	    finishedReg[i] <= False;
   	 end
   	 reportStateFifo.enq(0);
  
positive.code: 	 if (mismatch) $display("mismatch bv[0] %d bv[1] %d\n", bv[0], bv[1]);
  	 let mc = mismatchCounts[i] + (mismatch ? 1 : 0);
  
  	 let newValuesToRead = valuesToRead[i] - fromInteger(valueOf(DataBusWords));
  
  	 if (valuesToRead[i] <= fromInteger(valueOf(DataBusWords))) begin
  	    $display("mismatch count %d", mc);
  	    mismatchFifos[i].enq(mc);
  	    mc = 0; // restart count
  	    newValuesToRead = truncate(chunk/4);
  	 end
  	 mismatchCounts[i] <= mc;
  	 valuesToRead[i] <= newValuesToRead;
  
        endrule
     end
  
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);
  