From d6754069bd881c3eccf0a3f780f403ec708ac641 Mon Sep 17 00:00:00 2001 From: Keith Rothman <537074+litghost@users.noreply.github.com> Date: Thu, 24 Jan 2019 11:35:36 -0800 Subject: [PATCH] Expand tilegrid to entire grid. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com> --- fuzzers/005-tilegrid/generate_full.py | 11 ++++++++--- fuzzers/005-tilegrid/iob/Makefile | 2 +- fuzzers/005-tilegrid/iob/generate.tcl | 2 +- fuzzers/005-tilegrid/iob/top.py | 15 ++++++++++----- fuzzers/005-tilegrid/util.tcl | 2 +- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/fuzzers/005-tilegrid/generate_full.py b/fuzzers/005-tilegrid/generate_full.py index 6cb36b15..225dd64e 100644 --- a/fuzzers/005-tilegrid/generate_full.py +++ b/fuzzers/005-tilegrid/generate_full.py @@ -420,9 +420,11 @@ def seg_base_addr_up_INT(database, segments, tiles_by_grid, verbose=False): for dst_tile, wordbase in localutil.propagate_up_INT( grid_x, grid_y, database, tiles_by_grid, wordbase): - assert 'segment' in dst_tile, ( - (grid_x, grid_y), dst_tile, - tiles_by_grid[(grid_x, grid_y)]) + if 'segment' not in dst_tile: + print('WARNING: Missing segment for {} ({}, {}) {}'.format( + tiles_by_grid[(grid_x, grid_y)], grid_x, grid_y, + dst_tile)) + continue #verbose and print(' dst_tile', dst_tile) if 'segment' in dst_tile: @@ -468,6 +470,9 @@ def seg_base_addr_up_INT(database, segments, tiles_by_grid, verbose=False): # FIXME: PCIE block cuts out some BRAM # this messes up algorithm as is and may cause this to fail + if grid_y < 0: + continue + dst_tile_name = tiles_by_grid[(grid_x, grid_y)] dst_tile = database[dst_tile_name] diff --git a/fuzzers/005-tilegrid/iob/Makefile b/fuzzers/005-tilegrid/iob/Makefile index 7faf28b9..40a65337 100644 --- a/fuzzers/005-tilegrid/iob/Makefile +++ b/fuzzers/005-tilegrid/iob/Makefile @@ -1,3 +1,3 @@ -N ?= 15 +N ?= 35 GENERATE_ARGS?="--oneval KEEPER --dframe 27 --dword 3 --dbit 3" include ../fuzzaddr/common.mk diff --git a/fuzzers/005-tilegrid/iob/generate.tcl b/fuzzers/005-tilegrid/iob/generate.tcl index 5d4bf2b1..22579417 100644 --- a/fuzzers/005-tilegrid/iob/generate.tcl +++ b/fuzzers/005-tilegrid/iob/generate.tcl @@ -86,7 +86,7 @@ proc run {} { # Mostly doesn't matter since IOB are special, but add anyway create_pblock roi add_cells_to_pblock [get_pblocks roi] [get_cells roi] - resize_pblock [get_pblocks roi] -add "$::env(XRAY_ROI)" + resize_pblock [get_pblocks roi] -add "$::env(XRAY_ROI_TILEGRID)" loc_pins diff --git a/fuzzers/005-tilegrid/iob/top.py b/fuzzers/005-tilegrid/iob/top.py index 863f0daf..ab006103 100644 --- a/fuzzers/005-tilegrid/iob/top.py +++ b/fuzzers/005-tilegrid/iob/top.py @@ -7,6 +7,7 @@ import os import random random.seed(int(os.getenv("SEED"), 16)) from prjxray import util +from prjxray.db import Database from prjxray import verilog @@ -17,11 +18,15 @@ def gen_iobs(): IOB33: not a diff pair. Relatively rare (at least in ROI...2 of them?) Focus on IOB33S to start ''' - for _tile_name, site_name, site_type in util.get_roi().gen_sites( - # ['IOB33', 'IOB33S']): - # FIXME: special cases on IOB33 - ['IOB33S']): - yield site_name, site_type + db = Database(util.get_db_root()) + grid = db.grid() + for tile_name in grid.tiles(): + loc = grid.loc_of_tilename(tile_name) + gridinfo = grid.gridinfo_at_loc(loc) + + for site_name, site_type in gridinfo.sites.items(): + if site_type in ['IOB33S']: + yield site_name, site_type def write_params(ports): diff --git a/fuzzers/005-tilegrid/util.tcl b/fuzzers/005-tilegrid/util.tcl index b2f480f2..dc9b511c 100644 --- a/fuzzers/005-tilegrid/util.tcl +++ b/fuzzers/005-tilegrid/util.tcl @@ -138,7 +138,7 @@ proc assign_iobs {} { proc make_project {} { # Generate .bit only over ROI - make_project_roi XRAY_ROI + make_project_roi XRAY_ROI_TILEGRID } proc make_project_roi { roi_var } {