%i   "inc4.sfl"

submod_class inc4 {
   input   in<4> ;
   output  out<4> ;
   instrin do ;
   instr_arg do(in) ;
   }

module decimal {
   input      in<4> ;
   output     out<4> ;
   tmp        tmp<4> ;
   reg        r<4> ;
   instrin    start;

   inc4       inc0 ;

   stage_name count {
      task    run() ;
      }

   instruct start generate count.run() ;

   stage   count {
      state_name  st0 ;
      state_name  st1 ;
      first_state st0 ;

      state st0 par {
         tmp = in ;
         r := tmp ;
         out = r ;
         goto st1 ;
         }
      state st1 par {
         tmp = inc0.do(r).out ;
         any {
            tmp == 0xa : 
               par {
                  r := 0x0 ;
                  out = r ;
                  goto st1 ;
                  }
            else :
               par {
                  r := tmp ;
                  out = r ;
                  }
            }
         }
      }
   }