From ef58e619f2a783fa712b717cc5c3afdc58ee7fae Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson <oscar.gustafsson@gmail.com> Date: Fri, 20 Jan 2023 23:58:14 +0100 Subject: [PATCH] Add generation of memory variable list --- b_asic/schedule.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/b_asic/schedule.py b/b_asic/schedule.py index df492ac9..287d8243 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 -- GitLab