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>
This commit is contained in:
Keith Rothman 2018-10-24 07:08:54 -07:00
parent e9467b8020
commit d1799deb86
5 changed files with 23 additions and 71 deletions

View File

@ -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"]:

View File

@ -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]

View File

@ -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

View File

@ -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)

View File

@ -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()