def get_system_info(self, x=255, y=255):
        """Discover the integrity and resource availability of a whole
        SpiNNaker system.

        This command performs :py:meth:`.get_chip_info` on all working chips in
        the system returning an enhanced :py:class:`dict`
        (:py:class:`.SystemInfo`) containing a look-up from chip coordinate to
        :py:class:`.ChipInfo`. In addition to standard dictionary
        functionality, :py:class:`.SystemInfo` provides a number of convenience
        methods, which allow convenient iteration over various aspects of the
        information stored.

        .. note::
            This method replaces the deprecated :py:meth:`.get_machine` method.
            To build a :py:class:`~rig.place_and_route.Machine` for
            place-and-route purposes, the
            :py:func:`rig.place_and_route.utils.build_machine` utility function
            may be used with :py:meth:`.get_system_info` like so::

                >> from rig.place_and_route.utils import build_machine
                >> sys_info = mc.get_system_info()
                >> machine = build_machine(sys_info)

        Parameters
        ----------
        x : int
        y : int
            The coordinates of the chip from which system exploration should
            begin, by default (255, 255). Most users will not need to change
            these parameters.

        Returns
        -------
        :py:class:`.SystemInfo`
            An enhanced :py:class:`dict` object {(x, y): :py:class:`.ChipInfo`,
            ...} with a number of utility methods for accessing higher-level
            system information.
        """
        # A quick way of getting a list of working chips
        p2p_tables = self.get_p2p_routing_table(x, y)

        # Calculate the extent of the system
        max_x = max(x_ for (x_, y_), r in iteritems(p2p_tables)
                    if r != consts.P2PTableEntry.none)
        max_y = max(y_ for (x_, y_), r in iteritems(p2p_tables)
                    if r != consts.P2PTableEntry.none)

        sys_info = SystemInfo(max_x + 1, max_y + 1)

        for (x, y), p2p_route in iteritems(p2p_tables):
            if p2p_route != consts.P2PTableEntry.none:
                try:
                    sys_info[(x, y)] = self.get_chip_info(x, y)
                except SCPError:
                    # The chip was listed in the P2P table but is not
                    # responding. Assume it is dead and don't include it in
                    # the info returned.
                    pass

        return sys_info
Discover the integrity and resource availability of a whole
        SpiNNaker system.

        This command performs :py:meth:`.get_chip_info` on all working chips in
        the system returning an enhanced :py:class:`dict`
        (:py:class:`.SystemInfo`) containing a look-up from chip coordinate to
        :py:class:`.ChipInfo`. In addition to standard dictionary
        functionality, :py:class:`.SystemInfo` provides a number of convenience
        methods, which allow convenient iteration over various aspects of the
        information stored.

        .. note::
            This method replaces the deprecated :py:meth:`.get_machine` method.
            To build a :py:class:`~rig.place_and_route.Machine` for
            place-and-route purposes, the
            :py:func:`rig.place_and_route.utils.build_machine` utility function
            may be used with :py:meth:`.get_system_info` like so::

                >> from rig.place_and_route.utils import build_machine
                >> sys_info = mc.get_system_info()
                >> machine = build_machine(sys_info)

        Parameters
        ----------
        x : int
        y : int
            The coordinates of the chip from which system exploration should
            begin, by default (255, 255). Most users will not need to change
            these parameters.

        Returns
        -------
        :py:class:`.SystemInfo`
            An enhanced :py:class:`dict` object {(x, y): :py:class:`.ChipInfo`,
            ...} with a number of utility methods for accessing higher-level
            system information.