code: def cla_adder(a, b, cin=0, la_unit_len=4):
      
      a, b = pyrtl.match_bitwidth(a, b)
      if len(a) <= la_unit_len:
          sum, cout = _cla_adder_unit(a, b, cin)
          return pyrtl.concat(cout, sum)
      else:
          sum, cout = _cla_adder_unit(a[0:la_unit_len], b[0:la_unit_len], cin)
          msbits = cla_adder(a[la_unit_len:], b[la_unit_len:], cout, la_unit_len)
          return pyrtl.concat(msbits, sum)
docs: Carry Lookahead Adder
      :param int la_unit_len: the length of input that every unit processes
  
      A Carry LookAhead Adder is an adder that is faster than
      a ripple carry adder, as it calculates the carry bits faster.
      It is not as fast as a Kogge-Stone adder, but uses less area.