def METHOD_NAME(site):
    db = Database(util.get_db_root(), util.get_part())
    grid = db.grid()
    already_used = list()
    for tile_name in sorted(grid.tiles()):
        loc = grid.loc_of_tilename(tile_name)
        gridinfo = grid.gridinfo_at_loc(loc)
        if gridinfo.tile_type not in [
                "GTP_CHANNEL_0",
                "GTP_CHANNEL_1",
                "GTP_CHANNEL_2",
                "GTP_CHANNEL_3",
                "GTP_CHANNEL_0_MID_LEFT",
                "GTP_CHANNEL_1_MID_LEFT",
                "GTP_CHANNEL_2_MID_LEFT",
                "GTP_CHANNEL_3_MID_LEFT",
                "GTP_CHANNEL_0_MID_RIGHT",
                "GTP_CHANNEL_1_MID_RIGHT",
                "GTP_CHANNEL_2_MID_RIGHT",
                "GTP_CHANNEL_3_MID_RIGHT",
        ] or gridinfo.tile_type in already_used:
            continue
        else:
            tile_type = gridinfo.tile_type
            already_used.append(tile_type)
        for site_name, site_type in gridinfo.sites.items():
            if site_type != site:
                continue
            if "RIGHT" in tile_type and "X0" in site_name:
                continue
            if "LEFT" in tile_type and "X1" in site_name:
                continue
            yield tile_name, tile_type, site_name, site_type