From d1799deb8680c2d836a84fd2f0a62015bb106489 Mon Sep 17 00:00:00 2001 From: Keith Rothman <537074+litghost@users.noreply.github.com> Date: Wed, 24 Oct 2018 07:08:54 -0700 Subject: [PATCH] Make 005-tilegrid emit entire part, and have 074-dump_all not overwrite 005-tilegrid. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com> --- fuzzers/005-tilegrid/generate.py | 3 ++ fuzzers/005-tilegrid/generate.tcl | 8 +--- fuzzers/074-dump_all/generate_after_dump.sh | 10 ----- fuzzers/074-dump_all/generate_grid.py | 26 ++++++++---- utils/merge_tilegrid.py | 47 --------------------- 5 files changed, 23 insertions(+), 71 deletions(-) delete mode 100644 utils/merge_tilegrid.py diff --git a/fuzzers/005-tilegrid/generate.py b/fuzzers/005-tilegrid/generate.py index f7f9f6b6..7221971a 100644 --- a/fuzzers/005-tilegrid/generate.py +++ b/fuzzers/005-tilegrid/generate.py @@ -473,6 +473,9 @@ def add_tile_bits(tile_db, baseaddr, offset, frames, words, height=None): def db_add_bits(database, segments): '''Transfer segment data into tiles''' for segment_name in segments.keys(): + if 'baseaddr' not in segments[segment_name]: + continue + for block_type, (baseaddr, offset) in segments[segment_name]["baseaddr"].items(): for tile_name in segments[segment_name]["tiles"]: diff --git a/fuzzers/005-tilegrid/generate.tcl b/fuzzers/005-tilegrid/generate.tcl index 943c71fe..50410b84 100644 --- a/fuzzers/005-tilegrid/generate.tcl +++ b/fuzzers/005-tilegrid/generate.tcl @@ -71,12 +71,8 @@ proc loc_brams {} { } proc write_tiles_txt {} { - # Get all tiles in ROI, ie not just the selected LUTs - set grid_min_x $::env(XRAY_ROI_GRID_X1) - set grid_max_x $::env(XRAY_ROI_GRID_X2) - set grid_min_y $::env(XRAY_ROI_GRID_Y1) - set grid_max_y $::env(XRAY_ROI_GRID_Y2) - set tiles [get_tiles -filter "GRID_POINT_X >= $grid_min_x && GRID_POINT_X <= $grid_max_x && GRID_POINT_Y >= $grid_min_y && GRID_POINT_Y <= $grid_max_y"] + # Get all tiles, ie not just the selected LUTs + set tiles [get_tiles] # Write tiles.txt with site metadata set fp [open "tiles.txt" w] diff --git a/fuzzers/074-dump_all/generate_after_dump.sh b/fuzzers/074-dump_all/generate_after_dump.sh index 71e33627..88841661 100755 --- a/fuzzers/074-dump_all/generate_after_dump.sh +++ b/fuzzers/074-dump_all/generate_after_dump.sh @@ -12,13 +12,3 @@ python3 create_node_tree.py \ python3 reduce_site_types.py --output_dir output python3 generate_grid.py --root_dir specimen_001/ --output_dir output \ --ignored_wires ${XRAY_DATABASE}_ignored_wires.txt - -BASE_TILEGRID=../../database/${XRAY_DATABASE}/tilegrid.json -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.tmp \ - --output_grid output/tilegrid.json \ - --mark_roi -fi diff --git a/fuzzers/074-dump_all/generate_grid.py b/fuzzers/074-dump_all/generate_grid.py index 3860be39..7e4c5ec0 100644 --- a/fuzzers/074-dump_all/generate_grid.py +++ b/fuzzers/074-dump_all/generate_grid.py @@ -3,6 +3,7 @@ from __future__ import print_function import argparse import prjxray.lib +import prjxray.util import pyjson5 as json5 import multiprocessing import progressbar @@ -568,16 +569,29 @@ def main(): node_tree_file = os.path.join(args.output_dir, 'node_tree.json') - tilegrid_file = os.path.join(args.output_dir, 'tilegrid.json') tileconn_file = os.path.join(args.output_dir, 'tileconn.json') wire_map_file = os.path.join(args.output_dir, 'wiremap.pickle') + print('{} Reading tilegrid'.format(datetime.datetime.now())) + with open(os.path.join(prjxray.util.get_db_root(), 'tilegrid.json')) as f: + grid = json.load(f) + if not args.verify_only: print('{} Creating tile map'.format(datetime.datetime.now())) - grid, wire_map = generate_tilegrid(pool, tiles) + grid2, wire_map = generate_tilegrid(pool, tiles) - with open(tilegrid_file, 'w') as f: - json.dump(grid, f, indent=2) + # Make sure tilegrid from 005-tilegrid matches tilegrid from + # generate_tilegrid. + db_grid_keys = set(grid.keys()) + generated_grid_keys = set(grid2.keys()) + assert db_grid_keys == generated_grid_keys, ( + db_grid_keys ^ generated_grid_keys) + + for tile in db_grid_keys: + for k in grid2[tile]: + assert k in grid[tile], k + assert grid[tile][k] == grid2[tile][k], ( + tile, k, grid[tile][k], grid2[tile][k]) with open(wire_map_file, 'wb') as f: pickle.dump(wire_map, f) @@ -594,10 +608,6 @@ def main(): with open(tileconn_file, 'w') as f: json.dump(tileconn, f, indent=2) else: - print('{} Reading tilegrid'.format(datetime.datetime.now())) - with open(tilegrid_file) as f: - grid = json.load(f) - with open(wire_map_file, 'rb') as f: wire_map = pickle.load(f) diff --git a/utils/merge_tilegrid.py b/utils/merge_tilegrid.py deleted file mode 100644 index eeb376fc..00000000 --- a/utils/merge_tilegrid.py +++ /dev/null @@ -1,47 +0,0 @@ -import json -import argparse - - -def main(): - parser = argparse.ArgumentParser() - - parser.add_argument('--base_grid', required=True) - 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) - - if args.old_format: - overlay_grid = overlay_grid['tiles'] - - for tile in overlay_grid: - if tile in base_grid: - for k in overlay_grid[tile]: - if k in base_grid[tile]: - assert base_grid[tile][k] == overlay_grid[tile][k], ( - k, base_grid[tile][k], overlay_grid[tile][k]) - else: - 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) - - -if __name__ == '__main__': - main()