anchor.diff:  	 $display("bramWriteRule: islast rowNumber=%d bramAddr=%d kernelHeight=%d enoughRowsCached=%d", rowNumber, bramAddr, kernelHeight, enoughRowsCached);
   	 if (enoughRowsCached) begin
   	    convRangePipe.start(XYRangeConfig {
  -					       xbase: truncate(rowNumber), xlimit: truncate(rowNumber+1), xstep: 1,
  -					       ybase: 0, ylimit: 1, ystep: 1
  +					       xbase: truncate(rowNumber-kernelHeight+1), xlimit: truncate(rowNumber-kernelHeight+2), xstep: 1,
  +					       ybase: 0, ylimit: (truncate(rowLenBytes>>1)-kernelWidth), ystep: 1
   					       });
   	 end
         end
  
positive.code: 
     // fixme
     let kernelHeight = 4;
     let kernelColAddrBits = 2;
     Reg#(Bit#(16))           rowLenBytes <- mkReg(16);
     Reg#(Bit#(BurstLenSize)) burstLenBytes <- mkReg(16);
  
negative.code:    rule convRowRule;
        match { .rowNumber, .colNumber } <- toGet(convRangePipe.pipe).get();
        let req = XYRangeConfig {
  			       xbase: truncate(rowNumber), xlimit: truncate(rowNumber+1), xstep: 1,
  			       ybase: colNumber, ylimit: colNumber+kernelHeight, ystep: 1
  			       };
        ipRangePipe.start(req);
  