%i "add4.sfl"

submod_class add4 {
     input   a<4>,b<4>,ci ;
     output  s<4>,co ;
     instrin do ;
     instr_arg do(a,b,ci) ;
}

module add8 {
     input   a<8>,b<8>,ci ;
     output  s<8>,co ;
     sel     c ;
     instrin do ;
     add4 add_l,add_h ;

     instruct do par {
          add_l.do(a<3:0>,b<3:0>,ci) ;
          c = add_l.co ;
          add_h.do(a<7:4>,b<7:4>,c) ;
          s = add_h.s || add_l.s ;
          co = add_h.co ;
     }
}