diff --git a/fuzzers/074-dump_all/generate_after_dump.sh b/fuzzers/074-dump_all/generate_after_dump.sh index 064a38c6..9b432dfd 100755 --- a/fuzzers/074-dump_all/generate_after_dump.sh +++ b/fuzzers/074-dump_all/generate_after_dump.sh @@ -18,5 +18,6 @@ if [ -f $BASE_TILEGRID ]; then mv output/tilegrid.json output/tilegrid_full.json.tmp python3 ../../utils/merge_tilegrid.py \ --base_grid $BASE_TILEGRID \ - --overlay_grid output/tilegrid_full.json.tm \ - --output_grid output/tilegrid.json + --overlay_grid output/tilegrid_full.json.tmp \ + --output_grid output/tilegrid.json \ + --mark_roi diff --git a/minitests/roi_harness/Makefile b/minitests/roi_harness/Makefile index 2a1759d4..77581545 100644 --- a/minitests/roi_harness/Makefile +++ b/minitests/roi_harness/Makefile @@ -2,7 +2,7 @@ BUILD_DIR=build # official demo configuration all: - SMALL=Y BUILD_DIR=$(BUILD_DIR) XRAY_PINCFG=BASYS3-SWBUT ./runme.sh + BUILD_DIR=$(BUILD_DIR) XRAY_PINCFG=BASYS3-SWBUT ./runme.sh clean: rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit design.txt .Xil diff --git a/prjxray/connections.py b/prjxray/connections.py index 14416fce..334d2f4e 100644 --- a/prjxray/connections.py +++ b/prjxray/connections.py @@ -6,7 +6,7 @@ Connection = namedtuple('Connection', 'wire_a wire_b') class Connections(object): def __init__(self, tilegrid, tileconn, tile_wires): - self.grid = tilegrid['tiles'] + self.grid = tilegrid self.tile_wires = tile_wires self.coord_to_tile = {} self.coord_to_tile_type = {} diff --git a/prjxray/grid.py b/prjxray/grid.py index 8f1a6ed2..df1a6a1b 100644 --- a/prjxray/grid.py +++ b/prjxray/grid.py @@ -1,7 +1,7 @@ from collections import namedtuple GridLoc = namedtuple('GridLoc', 'grid_x grid_y') -GridInfo = namedtuple('GridInfo', 'segment sites tile_type') +GridInfo = namedtuple('GridInfo', 'segment sites tile_type in_roi') class Grid(object): @@ -16,15 +16,23 @@ class Grid(object): self.loc = {} self.tileinfo = {} - for tile in self.tilegrid['tiles']: - tileinfo = self.tilegrid['tiles'][tile] + for tile in self.tilegrid: + tileinfo = self.tilegrid[tile] grid_loc = GridLoc(tileinfo['grid_x'], tileinfo['grid_y']) assert grid_loc not in self.loc self.loc[grid_loc] = tile + + if 'in_roi' in tileinfo: + in_roi = tileinfo['in_roi'] + else: + in_roi = True + self.tileinfo[tile] = GridInfo( segment=tileinfo['segment'] if 'segment' in tileinfo else None, sites=tileinfo['sites'], - tile_type=tileinfo['type']) + tile_type=tileinfo['type'], + in_roi=in_roi, + ) x, y = zip(*self.loc.keys()) self._dims = (min(x), max(x), min(y), max(y)) @@ -45,7 +53,7 @@ class Grid(object): return grid_loc in self.loc def loc_of_tilename(self, tilename): - tileinfo = self.tilegrid['tiles'][tilename] + tileinfo = self.tilegrid[tilename] return GridLoc(tileinfo['grid_x'], tileinfo['grid_y']) def tilename_at_loc(self, grid_loc): diff --git a/utils/merge_tilegrid.py b/utils/merge_tilegrid.py index b9b171cb..eeb376fc 100644 --- a/utils/merge_tilegrid.py +++ b/utils/merge_tilegrid.py @@ -9,12 +9,17 @@ def main(): parser.add_argument('--output_grid', required=True) parser.add_argument('--overlay_grid', required=True) parser.add_argument('--old_format', action='store_true') + parser.add_argument('--mark_roi', action='store_true') args = parser.parse_args() with open(args.base_grid) as f: base_grid = json.load(f) + if args.mark_roi: + for tile in base_grid: + base_grid[tile]['in_roi'] = True + with open(args.overlay_grid) as f: overlay_grid = json.load(f) @@ -31,6 +36,8 @@ def main(): base_grid[tile][k] = overlay_grid[tile][k] else: base_grid[tile] = overlay_grid[tile] + if args.mark_roi: + base_grid[tile]['in_roi'] = False with open(args.output_grid, 'w') as f: json.dump(base_grid, f, indent=2)