mirror of https://github.com/openXC7/prjxray.git
dbfixup: db_root arg
Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
parent
2a19d56065
commit
3220cdc1ee
|
|
@ -38,3 +38,15 @@ def get_roi():
|
|||
# we know that all bits for CLB MUXes are in frames 30 and 31, so filter all other bits
|
||||
def bitfilter_clb_mux(frame_idx, bit_idx):
|
||||
return frame_idx in [30, 31]
|
||||
|
||||
|
||||
def db_root_arg(parser):
|
||||
database_dir = os.getenv("XRAY_DATABASE_DIR")
|
||||
database = os.getenv("XRAY_DATABASE")
|
||||
db_root_kwargs = {}
|
||||
if database_dir is None or database is None:
|
||||
db_root_kwargs['required'] = True
|
||||
else:
|
||||
db_root_kwargs['required'] = False
|
||||
db_root_kwargs['default'] = os.path.join(database_dir, database)
|
||||
parser.add_argument('--db_root', help="Database root.", **db_root_kwargs)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#/usr/bin/env python3
|
||||
|
||||
import sys, os, re
|
||||
from prjxray import util
|
||||
|
||||
zero_db = [
|
||||
"00_21 00_22 00_26 01_28|00_25 01_20 01_21 01_24",
|
||||
|
|
@ -32,10 +33,8 @@ zero_db = [
|
|||
]
|
||||
|
||||
|
||||
def add_zero_bits(tile_type):
|
||||
assert os.getenv("XRAY_DATABASE") in ["artix7", "kintex7"]
|
||||
dbfile = "%s/%s/segbits_%s.db" % (
|
||||
os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), tile_type)
|
||||
def add_zero_bits(db_root, tile_type):
|
||||
dbfile = "%s/segbits_%s.db" % (db_root, tile_type)
|
||||
new_lines = set()
|
||||
llast = None
|
||||
|
||||
|
|
@ -87,10 +86,9 @@ def add_zero_bits(tile_type):
|
|||
print(line, file=f)
|
||||
|
||||
|
||||
def update_mask(mask_db, *src_dbs, offset=0):
|
||||
def update_mask(db_root, mask_db, src_dbs, offset=0):
|
||||
bits = set()
|
||||
mask_db_file = "%s/%s/mask_%s.db" % (
|
||||
os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), mask_db)
|
||||
mask_db_file = "%s/mask_%s.db" % (db_root, mask_db)
|
||||
|
||||
if os.path.exists(mask_db_file):
|
||||
with open(mask_db_file, "r") as f:
|
||||
|
|
@ -101,8 +99,7 @@ def update_mask(mask_db, *src_dbs, offset=0):
|
|||
bits.add(line[1])
|
||||
|
||||
for src_db in src_dbs:
|
||||
seg_db_file = "%s/%s/segbits_%s.db" % (
|
||||
os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), src_db)
|
||||
seg_db_file = "%s/segbits_%s.db" % (db_root, src_db)
|
||||
|
||||
if not os.path.exists(seg_db_file):
|
||||
continue
|
||||
|
|
@ -125,27 +122,48 @@ def update_mask(mask_db, *src_dbs, offset=0):
|
|||
print("bit %s" % bit, file=f)
|
||||
|
||||
|
||||
add_zero_bits("int_l")
|
||||
add_zero_bits("int_r")
|
||||
add_zero_bits("clbll_l")
|
||||
add_zero_bits("clbll_r")
|
||||
add_zero_bits("clblm_l")
|
||||
add_zero_bits("clblm_r")
|
||||
def run(db_root, verbose=False):
|
||||
for tile_type in ["int_l", "int_r", "clbll_l", "clbll_r", "clblm_l",
|
||||
"clblm_r"]:
|
||||
add_zero_bits(db_root, tile_type)
|
||||
|
||||
update_mask("clbll_l", "clbll_l", "int_l")
|
||||
update_mask("clbll_r", "clbll_r", "int_r")
|
||||
update_mask("clblm_l", "clblm_l", "int_l")
|
||||
update_mask("clblm_r", "clblm_r", "int_r")
|
||||
update_mask("hclk_l", "hclk_l")
|
||||
update_mask("hclk_r", "hclk_r")
|
||||
for mask_db, src_dbs in [
|
||||
("clbll_l", ("clbll_l", "int_l")),
|
||||
("clbll_r", ("clbll_r", "int_r")),
|
||||
("clblm_l", ("clblm_l", "int_l")),
|
||||
("clblm_r", ("clblm_r", "int_r")),
|
||||
("hclk_l", ("hclk_l", )),
|
||||
("hclk_r", ("hclk_r", )),
|
||||
("bram_l", ("bram_l", )),
|
||||
("bram_r", ("bram_r", )),
|
||||
("dsp_l", ("dsp_l", )),
|
||||
("dsp_r", ("dsp_r", )),
|
||||
]:
|
||||
update_mask(db_root, mask_db, src_dbs)
|
||||
|
||||
update_mask("bram_l", "bram_l")
|
||||
update_mask("bram_r", "bram_r")
|
||||
update_mask("dsp_l", "dsp_l")
|
||||
update_mask("dsp_r", "dsp_r")
|
||||
for mask_db, src_dbs in [
|
||||
("bram_l", ("int_l", )),
|
||||
("bram_r", ("int_r", )),
|
||||
("dsp_l", ("int_l", )),
|
||||
("dsp_r", ("int_r", )),
|
||||
]:
|
||||
for k in range(5):
|
||||
update_mask(db_root, mask_db, src_dbs, offset=64 * k)
|
||||
|
||||
for k in range(5):
|
||||
update_mask("bram_l", "int_l", offset=64 * k)
|
||||
update_mask("bram_r", "int_r", offset=64 * k)
|
||||
update_mask("dsp_l", "int_l", offset=64 * k)
|
||||
update_mask("dsp_r", "int_r", offset=64 * k)
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description='Create multi-bit entries')
|
||||
|
||||
util.db_root_arg(parser)
|
||||
parser.add_argument('--verbose', action='store_true', help='')
|
||||
args = parser.parse_args()
|
||||
|
||||
run(args.db_root, args.verbose)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ Ex: BRAM_L_X6Y100:CLB_IO_CLK
|
|||
import sys, os, json, re
|
||||
from prjxray import bitstream
|
||||
from prjxray import db as prjxraydb
|
||||
from prjxray import util
|
||||
|
||||
|
||||
class NoDB(Exception):
|
||||
|
|
@ -449,21 +450,10 @@ def run(
|
|||
def main():
|
||||
import argparse
|
||||
|
||||
# XXX: tool still works, but not well
|
||||
# need to eliminate segments entirely
|
||||
parser = argparse.ArgumentParser(
|
||||
description='XXX: does not print all data?')
|
||||
description="Decode bits within a tile's address space")
|
||||
|
||||
database_dir = os.getenv("XRAY_DATABASE_DIR")
|
||||
database = os.getenv("XRAY_DATABASE")
|
||||
db_root_kwargs = {}
|
||||
if database_dir is None or database is None:
|
||||
db_root_kwargs['required'] = True
|
||||
else:
|
||||
db_root_kwargs['required'] = False
|
||||
db_root_kwargs['default'] = os.path.join(database_dir, database)
|
||||
|
||||
parser.add_argument('--db_root', help="Database root.", **db_root_kwargs)
|
||||
util.db_root_arg(parser)
|
||||
parser.add_argument('--verbose', action='store_true', help='')
|
||||
parser.add_argument(
|
||||
'-z',
|
||||
|
|
|
|||
Loading…
Reference in New Issue