@staticmethod
def _determine_which_routers_were_used(placement, fixed_routes, machine):
    """ Traverse the fixed route paths from a given location to its            destination. Used for determining which routers were used.

        :param placement: the source to start from
        :param fixed_routes: the fixed routes for each router
        :param machine: the spinnMachine instance
        :return: list of chip IDs
        """
    routers = list()
    routers.append((placement.x, placement.y))
    entry = fixed_routes[placement.x, placement.y]
    chip_x = placement.x
    chip_y = placement.y
    while len(entry.processor_ids) == 0:
        machine_link = machine.get_chip_at(chip_x, chip_y).router.get_link(next
            (iter(entry.link_ids)))
        chip_x = machine_link.destination_x
        chip_y = machine_link.destination_y
        routers.append((chip_x, chip_y))
        entry = fixed_routes[chip_x, chip_y]
    return routers
