mirror of https://github.com/openXC7/prjxray.git
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:
parent
4d3059982d
commit
4502fc14e6
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Reference in New Issue