diff --git a/b_asic/schedule.py b/b_asic/schedule.py index df492ac973446797320bce42f6ff9d458070d5a8..287d82434e5ed3b26d254b9a1ca345ec73732d6d 100644 --- a/b_asic/schedule.py +++ b/b_asic/schedule.py @@ -19,6 +19,7 @@ import numpy as np from b_asic import OutputPort, Signal from b_asic.graph_component import GraphID +from b_asic.process import MemoryVariable from b_asic.signal_flow_graph import SFG from b_asic.special_operations import Delay, Output @@ -243,7 +244,7 @@ class Schedule: self._start_times = { k: v // factor for k, v in self._start_times.items() } - for op_id, _ in self._start_times.items(): + for op_id in self._start_times: self._sfg.find_by_id(op_id)._decrease_time_resolution(factor) self._schedule_time = self._schedule_time // factor return self @@ -407,6 +408,22 @@ class Schedule: ) self._remove_delays() + def _get_memory_variables_list(self) -> List['Process']: + ret = [] + for op_id, start_time in self._start_times.items(): + slacks = self._forward_slacks(op_id) + for outport, signals in slacks.items(): + reads = { + signal.destination: slack + for signal, slack in signals.items() + } + ret.append( + MemoryVariable( + start_time + outport.latency_offset, outport, reads + ) + ) + return ret + def _plot_schedule(self, ax): def _draw_arrow(start, end, name="", laps=0): if end[0] < start[0] or laps > 0: # Wrap around