Add ROI annotations and update some missing tilegrid changes.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
Keith Rothman 2018-10-05 13:46:48 -07:00
parent 98308f0243
commit ed584aa8f2
5 changed files with 25 additions and 9 deletions

View File

@ -18,5 +18,6 @@ if [ -f $BASE_TILEGRID ]; then
mv output/tilegrid.json output/tilegrid_full.json.tmp mv output/tilegrid.json output/tilegrid_full.json.tmp
python3 ../../utils/merge_tilegrid.py \ python3 ../../utils/merge_tilegrid.py \
--base_grid $BASE_TILEGRID \ --base_grid $BASE_TILEGRID \
--overlay_grid output/tilegrid_full.json.tm \ --overlay_grid output/tilegrid_full.json.tmp \
--output_grid output/tilegrid.json --output_grid output/tilegrid.json \
--mark_roi

View File

@ -2,7 +2,7 @@ BUILD_DIR=build
# official demo configuration # official demo configuration
all: all:
SMALL=Y BUILD_DIR=$(BUILD_DIR) XRAY_PINCFG=BASYS3-SWBUT ./runme.sh BUILD_DIR=$(BUILD_DIR) XRAY_PINCFG=BASYS3-SWBUT ./runme.sh
clean: 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 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

View File

@ -6,7 +6,7 @@ Connection = namedtuple('Connection', 'wire_a wire_b')
class Connections(object): class Connections(object):
def __init__(self, tilegrid, tileconn, tile_wires): def __init__(self, tilegrid, tileconn, tile_wires):
self.grid = tilegrid['tiles'] self.grid = tilegrid
self.tile_wires = tile_wires self.tile_wires = tile_wires
self.coord_to_tile = {} self.coord_to_tile = {}
self.coord_to_tile_type = {} self.coord_to_tile_type = {}

View File

@ -1,7 +1,7 @@
from collections import namedtuple from collections import namedtuple
GridLoc = namedtuple('GridLoc', 'grid_x grid_y') 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): class Grid(object):
@ -16,15 +16,23 @@ class Grid(object):
self.loc = {} self.loc = {}
self.tileinfo = {} self.tileinfo = {}
for tile in self.tilegrid['tiles']: for tile in self.tilegrid:
tileinfo = self.tilegrid['tiles'][tile] tileinfo = self.tilegrid[tile]
grid_loc = GridLoc(tileinfo['grid_x'], tileinfo['grid_y']) grid_loc = GridLoc(tileinfo['grid_x'], tileinfo['grid_y'])
assert grid_loc not in self.loc assert grid_loc not in self.loc
self.loc[grid_loc] = tile self.loc[grid_loc] = tile
if 'in_roi' in tileinfo:
in_roi = tileinfo['in_roi']
else:
in_roi = True
self.tileinfo[tile] = GridInfo( self.tileinfo[tile] = GridInfo(
segment=tileinfo['segment'] if 'segment' in tileinfo else None, segment=tileinfo['segment'] if 'segment' in tileinfo else None,
sites=tileinfo['sites'], sites=tileinfo['sites'],
tile_type=tileinfo['type']) tile_type=tileinfo['type'],
in_roi=in_roi,
)
x, y = zip(*self.loc.keys()) x, y = zip(*self.loc.keys())
self._dims = (min(x), max(x), min(y), max(y)) self._dims = (min(x), max(x), min(y), max(y))
@ -45,7 +53,7 @@ class Grid(object):
return grid_loc in self.loc return grid_loc in self.loc
def loc_of_tilename(self, tilename): def loc_of_tilename(self, tilename):
tileinfo = self.tilegrid['tiles'][tilename] tileinfo = self.tilegrid[tilename]
return GridLoc(tileinfo['grid_x'], tileinfo['grid_y']) return GridLoc(tileinfo['grid_x'], tileinfo['grid_y'])
def tilename_at_loc(self, grid_loc): def tilename_at_loc(self, grid_loc):

View File

@ -9,12 +9,17 @@ def main():
parser.add_argument('--output_grid', required=True) parser.add_argument('--output_grid', required=True)
parser.add_argument('--overlay_grid', required=True) parser.add_argument('--overlay_grid', required=True)
parser.add_argument('--old_format', action='store_true') parser.add_argument('--old_format', action='store_true')
parser.add_argument('--mark_roi', action='store_true')
args = parser.parse_args() args = parser.parse_args()
with open(args.base_grid) as f: with open(args.base_grid) as f:
base_grid = json.load(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: with open(args.overlay_grid) as f:
overlay_grid = json.load(f) overlay_grid = json.load(f)
@ -31,6 +36,8 @@ def main():
base_grid[tile][k] = overlay_grid[tile][k] base_grid[tile][k] = overlay_grid[tile][k]
else: else:
base_grid[tile] = overlay_grid[tile] base_grid[tile] = overlay_grid[tile]
if args.mark_roi:
base_grid[tile]['in_roi'] = False
with open(args.output_grid, 'w') as f: with open(args.output_grid, 'w') as f:
json.dump(base_grid, f, indent=2) json.dump(base_grid, f, indent=2)