diff --git a/prjxray/db.py b/prjxray/db.py index daecc2ea..50ecc6a8 100644 --- a/prjxray/db.py +++ b/prjxray/db.py @@ -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] diff --git a/utils/fasm2frames.py b/utils/fasm2frames.py index f540fc7e..1efd2a4e 100755 --- a/utils/fasm2frames.py +++ b/utils/fasm2frames.py @@ -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(