fasm2frames parameter "--part" made mandatory if XRAY_PART is not set, removed emitting common features for all parts if the part is not given.

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
This commit is contained in:
Maciej Kurc 2019-12-10 17:54:54 +01:00
parent 4d3059982d
commit 4502fc14e6
2 changed files with 15 additions and 30 deletions

View File

@ -42,7 +42,7 @@ class Database(object):
self.tile_segbits = {}
self.site_types = {}
per_part_features = {}
self.required_features = {}
for f in os.listdir(self.db_root):
if f.endswith('.json') and f.startswith('tile_type_'):
@ -97,23 +97,10 @@ class Database(object):
if len(line) > 0:
features.append(line)
per_part_features[part] = set(features)
self.required_features[part] = set(features)
self.tile_types_obj = {}
# Find common required features for all supported parts
if len(per_part_features) > 0:
common_features = set.intersection(*per_part_features.values())
for features in per_part_features.values():
features -= common_features
else:
common_features = set()
self.required_features = {
"always_required": common_features,
"per_part_required": per_part_features
}
def get_tile_types(self):
""" Return list of tile types """
return self.tile_types.keys()
@ -181,17 +168,9 @@ class Database(object):
of fasm features.
"""
# No required features in the db, return empty list
if self.required_features is None:
# No required features in the db or part not given, return empty list
if self.required_features is None or part is None:
return set()
# Get a list of required features for all parts
features = set()
if "always_required" in self.required_features:
features |= set(self.required_features["always_required"])
# Append list of part specific features
if part is not None:
features |= set(self.required_features["per_part_required"][part])
return features
# Return list of part specific features
return self.required_features[part]

View File

@ -170,13 +170,19 @@ def main():
db_root_kwargs['required'] = False
db_root_kwargs['default'] = os.path.join(database_dir, database)
def_part = os.getenv("XRAY_PART")
db_part = os.getenv("XRAY_PART")
db_part_kwargs = {}
if db_part is None:
db_part_kwargs['required'] = True
else:
db_part_kwargs['required'] = False
db_part_kwargs['default'] = db_part
parser.add_argument('--db-root', help="Database root.", **db_root_kwargs)
parser.add_argument(
'--part',
default=def_part,
help="Part name. When not given defaults to XRAY_PART env. var.")
help="Part name. When not given defaults to XRAY_PART env. var.",
**db_part_kwargs)
parser.add_argument(
'--sparse', action='store_true', help="Don't zero fill all frames")
parser.add_argument(