code: def concat(*args):
      
      if len(args) <= 0:
          raise PyrtlError('error, concat requires at least 1 argument')
      if len(args) == 1:
          return as_wires(args[0])
  
      arg_wirevectors = tuple(as_wires(arg) for arg in args)
      final_width = sum(len(arg) for arg in arg_wirevectors)
      outwire = WireVector(bitwidth=final_width)
      net = LogicNet(
          op='c',
          op_param=None,
          args=arg_wirevectors,
          dests=(outwire,))
      working_block().add_net(net)
      return outwire
docs: Concatenates multiple WireVectors into a single WireVector
  
      :param WireVector args: inputs to be concatenated
      :return: WireVector with length equal to the sum of the args' lengths
  
      You can provide multiple arguments and they will be combined with the right-most
      argument being the least significant bits of the result.  Note that if you have
      a list of arguments to concat together you will likely want index 0 to be the least
      significant bit and so if you unpack the list into the arguements here it will be
      backwards.  The function concat_list is provided for that case specifically.
  
      Example using concat to combine two bytes into a 16-bit quantity: ::
  
          concat( msb, lsb )