mirror of https://github.com/openXC7/prjxray.git
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:
parent
e9467b8020
commit
d1799deb86
|
|
@ -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"]:
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
Loading…
Reference in New Issue