anchor.diff:        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);
      endrule
  
positive.code:       $display("writeDataRule: data=%h", v);
        writeDataFifo.enq(MemData { data: v, tag: tag });
     endrule
     rule writeDone;
        let tag <- toGet(writeDoneFifo).get();
     endrule
  
  
negative.code: 
     Reg#(Bit#(TileNumSize)) responseCountReg <- mkReg(0);
     rule innerProdResponseRule;
        // gets back one response for each tile for each conv started
        let responseCount = responseCountReg;
        if (responseCount == 0)
  	 responseCount = fromInteger(valueOf(NumTiles));
  