code: def wirevector_list(names, bitwidth=None, wvtype=WireVector):
      
      if isinstance(names, str):
          names = names.replace(',', ' ').split()
  
      if any('/' in name for name in names) and bitwidth is not None:
          raise PyrtlError('only one of optional "/" or bitwidth parameter allowed')
  
      if bitwidth is None:
          bitwidth = 1
      if isinstance(bitwidth, numbers.Integral):
          bitwidth = [bitwidth]*len(names)
      if len(bitwidth) != len(names):
          raise ValueError('number of names ' + str(len(names))
                           + ' should match number of bitwidths ' + str(len(bitwidth)))
  
      wirelist = []
      for fullname, bw in zip(names, bitwidth):
          try:
              name, bw = fullname.split('/')
          except ValueError:
              name, bw = fullname, bw
          wirelist.append(wvtype(bitwidth=int(bw), name=name))
      return wirelist
docs: Allocate and return a list of WireVectors.
  
      :param names: Names for the WireVectors. Can be a list or single comma/space-separated string
      :param bitwidth: The desired bitwidth for the resulting WireVectors.
      :param WireVector wvtype: Which WireVector type to create.
      :return: List of WireVectors.
  
      Additionally, the ``names`` string can also contain an additional bitwidth specification
      separated by a ``/`` in the name. This cannot be used in combination with a ``bitwidth``
      value other than ``1``.
  
      Examples: ::
  
          wirevector_list(['name1', 'name2', 'name3'])
          wirevector_list('name1, name2, name3')
          wirevector_list('input1 input2 input3', bitwidth=8, wvtype=pyrtl.wire.Input)
          wirevector_list('output1, output2 output3', bitwidth=3, wvtype=pyrtl.wire.Output)
          wirevector_list('two_bits/2, four_bits/4, eight_bits/8')
          wirevector_list(['name1', 'name2', 'name3'], bitwidth=[2, 4, 8])