diff --git a/src/pyhxtorch/hxtorch/spiking/experiment.py b/src/pyhxtorch/hxtorch/spiking/experiment.py index ae3586dcba179112b96bef8fbdc6bbf8ad0fb296..0e6204408576dc91ff44bcf7231cf5d3e48b00d6 100644 --- a/src/pyhxtorch/hxtorch/spiking/experiment.py +++ b/src/pyhxtorch/hxtorch/spiking/experiment.py @@ -147,21 +147,6 @@ class Experiment(BaseExperiment): + "nightly calib.") self._chip = self.load_calib(calib_helper.nightly_calib_path()) - # NOTE: Reserved for inserted config. - builder = sta.PlaybackProgramBuilder() - pre_realtime = sta.PlaybackProgramBuilder() - inside_realtime_begin = sta.PlaybackProgramBuilder() - inside_realtime = sta.AbsoluteTimePlaybackProgramBuilder() - inside_realtime_end = sta.PlaybackProgramBuilder() - post_realtime = sta.PlaybackProgramBuilder() - - self.injection_pre_static_config = builder - self.injection_pre_realtime = pre_realtime - self.injection_inside_realtime_begin = inside_realtime_begin - self.injection_inside_realtime = inside_realtime - self.injection_inside_realtime_end = inside_realtime_end - self.injection_post_realtime = post_realtime - self._static_config_prepared = True log.TRACE("Preparation of static config done.") @@ -292,25 +277,34 @@ class Experiment(BaseExperiment): def _generate_hooks(self) \ -> grenade.signal_flow.ExecutionInstanceHooks: - """ Handle injected config (not supported yet) """ - assert self.injection_pre_static_config is not None - assert self.injection_pre_realtime is not None - assert self.injection_inside_realtime_begin is not None - assert self.injection_inside_realtime is not None - assert self.injection_inside_realtime_end is not None - assert self.injection_post_realtime is not None + """ Handle injected config """ pre_static_config = sta.PlaybackProgramBuilder() pre_realtime = sta.PlaybackProgramBuilder() inside_realtime_begin = sta.PlaybackProgramBuilder() inside_realtime = sta.AbsoluteTimePlaybackProgramBuilder() inside_realtime_end = sta.PlaybackProgramBuilder() post_realtime = sta.PlaybackProgramBuilder() - pre_static_config.copy_back(self.injection_pre_static_config) - pre_realtime.copy_back(self.injection_pre_realtime) - inside_realtime_begin.copy_back(self.injection_inside_realtime_begin) - inside_realtime.copy(self.injection_inside_realtime) - inside_realtime_end.copy_back(self.injection_inside_realtime_end) - post_realtime.copy_back(self.injection_post_realtime) + + if self.injection_pre_static_config is not None: + pre_static_config.copy_back(self.injection_pre_static_config) + + if self.injection_pre_realtime is not None: + pre_realtime.copy_back(self.injection_pre_realtime) + + if self.injection_inside_realtime_begin is not None: + inside_realtime_begin.copy_back( + self.injection_inside_realtime_begin + ) + + if self.injection_inside_realtime is not None: + inside_realtime.copy(self.injection_inside_realtime) + + if self.injection_inside_realtime_end is not None: + inside_realtime_end.copy_back(self.injection_inside_realtime_end) + + if self.injection_post_realtime is not None: + post_realtime.copy_back(self.injection_post_realtime) + return grenade.signal_flow.ExecutionInstanceHooks( pre_static_config, pre_realtime, inside_realtime_begin, inside_realtime, inside_realtime_end, post_realtime)