feat(configure): support for multiple mux config files in TT_CONFIG

This commit is contained in:
Uri Shaked
2025-11-20 11:13:11 +02:00
parent ef5191cec2
commit 5f2a734ef9
2 changed files with 20 additions and 4 deletions
+9
View File
@@ -65,3 +65,12 @@ def write_config(config: dict, basename: str, formats: Iterable[str] = ("json",)
write_yaml_config(config, file) write_yaml_config(config, file)
else: else:
raise ConfigFileError("Unexpected configuration file format: {fmt}") raise ConfigFileError("Unexpected configuration file format: {fmt}")
def merge_dicts(a: dict, b: dict, path=[]):
for key in b:
if key in a and isinstance(a[key], dict) and isinstance(b[key], dict):
merge_dicts(a[key], b[key], path + [str(key)])
else:
a[key] = b[key]
return a
+11 -4
View File
@@ -10,6 +10,7 @@ import klayout.db as pya
import yaml import yaml
from config import Config from config import Config
from config_utils import merge_dicts
from project import Project from project import Project
from shuttle_index import ShuttleIndex, ShuttleIndexLayout, ShuttleIndexProject from shuttle_index import ShuttleIndex, ShuttleIndexLayout, ShuttleIndexProject
from tech import tech_map from tech import tech_map
@@ -71,10 +72,16 @@ class ShuttleConfig:
self.layout["muxes"][x][y] = "" self.layout["muxes"][x][y] = ""
def read_mux_config_file(self): def read_mux_config_file(self):
with open( self.mux_config: dict = {}
f"tt-multiplexer/cfg/{self.mux_config_yaml_name}", "r" for cfg_file in self.mux_config_yaml_name.split(":"):
) as mux_config_file: cfg_file_path = os.path.join("tt-multiplexer/cfg", cfg_file)
self.mux_config = yaml.safe_load(mux_config_file) if not os.path.exists(cfg_file_path):
logging.error(f"mux config file {cfg_file_path} does not exist!")
exit(1)
with open(cfg_file_path, "r") as mux_config_file:
self.mux_config = merge_dicts(
self.mux_config, yaml.safe_load(mux_config_file)
)
def configure_mux(self): def configure_mux(self):
with open(self.modules_yaml_name, "r") as modules_file: with open(self.modules_yaml_name, "r") as modules_file: