%i   "dec1.sfl"

submod_class   dec1 {
   input     a,ci ;
   output    s,co ;
   instrin   do ;
   instr_arg do(a,ci) ;
   }

module   dec8 {
   input     a<8> ;
   output    s<8> ;
   tmp       c0,c1,c2,c3,c4,c5,c6 ;
   tmp       s0,s1,s2,s3,s4,s5,s6,s7 ;
   instrin   do ;
   dec1      deca,decb,decc,decd,dece,decf,decg ;

   instruct do
      par {
         s0 = ^a<0> ;
         c0   = a<0> ;
         s1 = deca.do(a<1>,c0).s ;
         c1   = deca.do(a<1>,c0).co ;
         s2 = decb.do(a<2>,c1).s ;
         c2   = decb.do(a<2>,c1).co ;
         s3 = decc.do(a<3>,c2).s ;
         c3   = decc.do(a<3>,c2).co ;
         s4 = decd.do(a<4>,c3).s ;
         c4   = decd.do(a<4>,c3).co ;
         s5 = dece.do(a<5>,c4).s ;
         c5   = dece.do(a<5>,c4).co ;
         s6 = decf.do(a<6>,c5).s ;
         c6   = decf.do(a<6>,c5).co ;
         s7 = decg.do(a<7>,c6).s ;
         s = s7 || s6 || s5 || s4 || s3 || s2 || s1 || s0 ;
         }
      }