Skip to content

Commit

Permalink
Add ROI annotations and update some missing tilegrid changes.
Browse files Browse the repository at this point in the history
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
  • Loading branch information
litghost committed Oct 6, 2018
1 parent 98308f0 commit ed584aa
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 9 deletions.
5 changes: 3 additions & 2 deletions fuzzers/074-dump_all/generate_after_dump.sh
Expand Up @@ -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
2 changes: 1 addition & 1 deletion minitests/roi_harness/Makefile
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion prjxray/connections.py
Expand Up @@ -6,7 +6,7 @@

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 = {}
Expand Down
18 changes: 13 additions & 5 deletions 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):
Expand All @@ -16,15 +16,23 @@ def __init__(self, tilegrid):
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))
Expand All @@ -45,7 +53,7 @@ def is_populated(self, grid_loc):
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):
Expand Down
7 changes: 7 additions & 0 deletions utils/merge_tilegrid.py
Expand Up @@ -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)

Expand All @@ -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)
Expand Down

0 comments on commit ed584aa

Please sign in to comment.