anchor.diff:        end
      endrule
   
  +   Reg#(Bit#(32)) crrCount <- mkReg(0);
      rule convRowRule;
         let rowNumber = convIterator.ctxt();
         let colNumber <- toGet(convIterator.pipe).get();
         let req = IteratorConfig { xbase: colNumber, xlimit: colNumber+kernelHeight, xstep: 1 };
         //fixme: this should be a 2D iterator
         ipIterator.start(req, rowNumber);
  -      $display("range startRule row=%d col=%d", rowNumber, colNumber);
  +      $display("range startRule row=%d col=%d crrCount=%d", rowNumber, colNumber, crrCount);
  +      crrCount <= crrCount + 1;
  +      rowWriteBackIterator.start(IteratorConfig {xbase: 0, xlimit: fromInteger(valueOf(NumTiles)/valueOf(TDiv#(DataBusWidth,8))), xstep: 1 });
      endrule
   
      rule issueBramReadRequest;
  
positive.code:    endrule
     Reg#(Bit#(32)) wdoneCount <- mkReg(0);
     rule writeDone;
        $display("writeDone: wdoneCount=%d", wdoneCount);
        wdoneCount <= wdoneCount + 1;
        let tag <- toGet(writeDoneFifo).get();
     endrule
  
negative.code:    IteratorIfc#(Bit#(16)) colIterator <- mkIterator();
     IteratorWithContext#(Bit#(16),Bit#(16)) bramWriteIterator <- mkIteratorWithContext();
  
     IteratorIfc#(Bit#(16)) imageWriteBackIterator <- mkIterator();
     IteratorIfc#(Bit#(16)) rowWriteBackIterator <- mkIterator();
     IteratorIfc#(Bit#(16)) colWriteBackIterator <- mkIterator();
     IteratorIfc#(Bit#(LineBufferAddrSize)) topBufferReadIterator <- mkIterator();
  