anchor.diff:     a xstep;
   } IteratorConfig#(type a) deriving (Bits, FShow);
   
  +typedef struct {
  +   a value;
  +   Bool first;
  +   Bool last;
  +} IteratorValue#(type a) deriving (Bits);
  +
   interface IteratorWithContext#(type a, type c);
      interface PipeOut#(a) pipe;
  +   interface PipeOut#(IteratorValue#(a)) ivpipe;
      method a count();
      method Bool isFirst();
      method Bool isLast();
  
positive.code: 	 return (x < xlimit);
        endmethod
     endinterface
     method Action start(IteratorConfig#(a) cfg, c ctxt) if (idle);
        countReg <= 0;
        x <= cfg.xbase;
  
negative.code: 
  interface IteratorIfc#(type a);
     interface PipeOut#(a) pipe;
     interface PipeOut#(IteratorValue#(a)) ivpipe;
     method a count();
     method Bool isFirst();
     method Bool isLast();
  