def chip(name, description, selector = {}, options = {}, &block)
      # return chips(name, group) unless block_given?
      _chips
      name = name_audit(name)
      group = selector[:group]
      family = selector[:family]
      performance = selector[:performance]
      previous_parts = selector[:previous_parts]
      power = selector[:power]
      chip_holder = Chip.new(name, description, previous_parts, power, options)
      if has_chip?(name, group: group, family: family, performance: performance, creating_chip: true)
        fail "Chip already exists for chip: #{name}, group: #{group}, family: #{family} for object #{self}"
      end
      @_chips[group][family][performance][name] = chip_holder
    end
def chip(name, description, selector = {}, options = {}, &block)
      # return chips(name, group) unless block_given?
      _chips
      name = name_audit(name)
      group = selector[:group]
      family = selector[:family]
      performance = selector[:performance]
      previous_parts = selector[:previous_parts]
      power = selector[:power]
      chip_holder = Chip.new(name, description, previous_parts, power, options)
      if has_chip?(name, group: group, family: family, performance: performance, creating_chip: true)
        fail "Chip already exists for chip: #{name}, group: #{group}, family: #{family} for object #{self}"
      end
      @_chips[group][family][performance][name] = chip_holder
    end
Define and instantiate a Spec object