diff --git a/docs/format/db.rst b/docs/format/db.rst index 668e894a..6c5885f4 100644 --- a/docs/format/db.rst +++ b/docs/format/db.rst @@ -47,7 +47,8 @@ Related tools: * dbfixup.py: internal tool that expands multi-bit encodings (ex: one hot) into groups. For example: * .rdb file with one hot: BRAM.RAMB18_Y1.WRITE_WIDTH_A_18 27_267 * .db: file expanded: BRAM.RAMB18_Y1.WRITE_WIDTH_A_18 !27_268 !27_269 27_267 - * dbcheck.py: valides that a database is fully and consistently solved + * parsedb.py: valides that a database is fully and consistently solved + * Optionally outputs to canonical form * Ex: complains if const0 entries exist * Ex: complains if symbols are duplicated (such as after a mergedb after rename) * mergedb.sh: adds new bit entries to an existing db diff --git a/utils/dbcheck.py b/utils/dbcheck.py deleted file mode 100755 index fe62bf5c..00000000 --- a/utils/dbcheck.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 - -import sys, re - -database = dict() -database_r = dict() - -for arg in sys.argv[1:]: - with open(arg, "r") as f: - for line in f: - if "<" in line: - raise Exception("Found '<' in this line: %s" % line) - - line = line.split() - key = line[0] - bits = tuple(sorted(set(line[1:]))) - - if key in database: - print("Warning: Duplicate key: %s %s" % (key, bits)) - - if bits in database_r: - print("Warning: Duplicate bits: %s %s" % (key, bits)) - - database[key] = bits - database_r[bits] = key - - -def get_subsets(bits): - retval = list() - retval.append(bits) - for i in range(len(bits)): - for s in get_subsets(bits[i + 1:]): - retval.append(bits[0:i] + s) - return retval - - -def check_subsets(bits): - for sub_bits in sorted(get_subsets(bits)): - if sub_bits != bits and sub_bits != (): - if sub_bits in database_r: - print( - "Warning: Entry %s %s is a subset of entry %s %s." % - (database_r[sub_bits], sub_bits, database_r[bits], bits)) - - -for key, bits in database.items(): - check_subsets(bits) diff --git a/utils/dbcheck.sh b/utils/dbcheck.sh deleted file mode 100755 index 3bf2550a..00000000 --- a/utils/dbcheck.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_{clblm,int}_l.db -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_{clblm,int}_r.db -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_{clbll,int}_l.db -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_{clbll,int}_r.db -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_hclk_l.db -python3 ${XRAY_UTILS_DIR}/dbcheck.py ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits_hclk_r.db diff --git a/utils/environment.sh b/utils/environment.sh index da87ff44..73cc2a0a 100644 --- a/utils/environment.sh +++ b/utils/environment.sh @@ -19,7 +19,6 @@ export XRAY_GENHEADER="${XRAY_UTILS_DIR}/genheader.sh" export XRAY_BITREAD="${XRAY_TOOLS_DIR}/bitread --part_file ${XRAY_PART_YAML}" export XRAY_MERGEDB="bash ${XRAY_UTILS_DIR}/mergedb.sh" export XRAY_DBFIXUP="python3 ${XRAY_UTILS_DIR}/dbfixup.py" -export XRAY_DBCHECK="bash ${XRAY_UTILS_DIR}/dbcheck.sh" export XRAY_MASKMERGE="bash ${XRAY_UTILS_DIR}/maskmerge.sh" export XRAY_SEGMATCH="${XRAY_TOOLS_DIR}/segmatch" export XRAY_SEGPRINT="python3 ${XRAY_UTILS_DIR}/segprint.py" diff --git a/utils/parsedb.py b/utils/parsedb.py index b24ad42f..7ff8b0bb 100755 --- a/utils/parsedb.py +++ b/utils/parsedb.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import sys, re from prjxray import util