| # Copyright 2020 Project U-Ray Authors | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| import re | |
| import sys | |
| import json | |
| # Usage: tilegrid.json | |
| with open(sys.argv[1]) as tb_f: | |
| tbj = json.load(tb_f) | |
| tile_to_frames = {} | |
| frame_to_tiles = {} | |
| for tilename, tiledata in tbj.items(): | |
| tn = tilename.split(":")[0] | |
| tile_offset = 0 | |
| tile_to_frames[tn] = [] | |
| for chunk in tiledata: | |
| frame, start, size = chunk | |
| tile_to_frames[tn].append(frame) | |
| if frame not in frame_to_tiles: | |
| frame_to_tiles[frame] = [] | |
| frame_to_tiles[frame].append(tn) | |
| basis_tiles = [ | |
| "CLEM_X41Y120", | |
| "INT_X41Y120", | |
| "CLEL_R_X41Y120", | |
| "BRAM_X42Y120", | |
| "INT_INTF_L_X42Y120", | |
| "INT_X42Y120", | |
| "CLEL_R_X42Y120", | |
| "CLEM_X43Y120", | |
| "INT_X43Y120", | |
| "INT_INTF_R_X43Y120", | |
| "DSP_X43Y120", | |
| "CLEM_X44Y120", | |
| "INT_X44Y120", | |
| "CLEL_R_X44Y120", | |
| "CLEM_X45Y120", | |
| "INT_X45Y120", | |
| "INT_INTF_R_X45Y120", | |
| "DSP_X45Y120", | |
| "CLEM_X46Y120", | |
| "INT_X46Y120", | |
| "CLEL_R_X46Y120", | |
| "INT_X47Y120", | |
| "CLEL_R_X47Y120" | |
| ] | |
| roi_frames = set() | |
| for tile in basis_tiles: | |
| if tile not in tile_to_frames: | |
| continue | |
| for frame in tile_to_frames[tile]: | |
| roi_frames.add(frame) | |
| roi_tiles = set() | |
| for frame in roi_frames: | |
| for tile in frame_to_tiles[frame]: | |
| roi_tiles.add(tile) | |
| with open(sys.argv[2], "w") as frames_f: | |
| for frame in sorted(roi_frames): | |
| print("0x%08x" % frame, file=frames_f) | |
| with open(sys.argv[3], "w") as tiles_f: | |
| for tile in sorted(roi_tiles): | |
| print("tile %s" % tile, file=tiles_f) |