@@ -1211,6 +1211,7 @@ def __init__(self, device: CbuildRun) -> None:
12111211
12121212 self ._debugvars : Optional [Block ] = None
12131213 self ._debugvars_conf : Optional [Block ] = None
1214+ self ._device_settings : Optional [Block ] = None
12141215 self ._sequences : Set [DebugSequence ] = set ()
12151216
12161217 @property
@@ -1232,6 +1233,15 @@ def dbgconf_variables(self) -> Optional[Block]:
12321233 self ._debugvars_conf = self ._dbgconf_variables (dbgconf_file )
12331234 return self ._debugvars_conf
12341235
1236+ @property
1237+ def device_settings (self ) -> Optional [Block ]:
1238+ if self ._device_settings is None :
1239+ _device_settings = self ._cbuild_debugger .get ('device-settings' ) or {}
1240+ settings = "" .join (f"{ key } = { value } ;\n " for key , value in _device_settings .items ())
1241+ if settings :
1242+ self ._device_settings = Block (settings , info = 'device-settings' )
1243+ return self ._device_settings
1244+
12351245 @property
12361246 def sequences (self ) -> Set [DebugSequence ]:
12371247 if not self ._sequences :
@@ -1320,11 +1330,18 @@ def get_root_scope(self, context: DebugSequenceExecutionContext) -> Scope:
13201330 with context .push (debugvars_block , self ._debugvars ):
13211331 debugvars_block .execute (context )
13221332
1323- # Override default debugvars with values from *.dbgconf file.
1324- debugvars_conf_block = self ._cbuild_sequences .dbgconf_variables
1325- if debugvars_conf_block is not None :
1326- with context .push (debugvars_conf_block , self ._debugvars ):
1327- debugvars_conf_block .execute (context )
1333+ # if `device-settings:` is present then an also specified `*.dbgconf` file is ignored.
1334+ device_settings_block = self ._cbuild_sequences .device_settings
1335+ if device_settings_block is not None :
1336+ # Override debugvars with values from the 'device-settings' node in *.cbuild-run.yml
1337+ with context .push (device_settings_block , self ._debugvars ):
1338+ device_settings_block .execute (context )
1339+ else :
1340+ # Override default debugvars with values from *.dbgconf file.
1341+ debugvars_conf_block = self ._cbuild_sequences .dbgconf_variables
1342+ if debugvars_conf_block is not None :
1343+ with context .push (debugvars_conf_block , self ._debugvars ):
1344+ debugvars_conf_block .execute (context )
13281345
13291346 # Make all vars read-only.
13301347 self ._debugvars .freeze ()
0 commit comments