From 752932ffa655d7c19c8196ba1cde1d710969d2ff Mon Sep 17 00:00:00 2001 From: Simon Bjurek <simbj106@student.liu.se> Date: Tue, 11 Mar 2025 13:12:00 +0100 Subject: [PATCH] fixed bug in scheduling --- b_asic/schedule.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/b_asic/schedule.py b/b_asic/schedule.py index 71e9e9d7..d6c4cea0 100644 --- a/b_asic/schedule.py +++ b/b_asic/schedule.py @@ -365,10 +365,10 @@ class Schedule: available_time = ( cast(int, source.latency_offset) + self._start_times[source.operation.graph_id] - - self._schedule_time * self._laps[signal.graph_id] ) if available_time > self._schedule_time: available_time -= self._schedule_time + available_time -= self._schedule_time * self._laps[signal.graph_id] else: available_time = ( cast(int, source.latency_offset) @@ -458,6 +458,26 @@ class Schedule: raise ValueError( f"New schedule time ({time}) too short, minimum: {max_end_time}." ) + + # if updating the scheduling time -> update laps due to operations + # reading and writing in different iterations (across the edge) + if self._schedule_time is not None: + for signal_id in self._laps.keys(): + port = self._sfg.find_by_id(signal_id).destination + + source_port = port.signals[0].source + source_op = source_port.operation + source_port_start_time = self._start_times[source_op.graph_id] + source_port_latency_offset = source_op.latency_offsets[ + f"out{source_port.index}" + ] + if ( + source_port_start_time + source_port_latency_offset + > self._schedule_time + and source_port_start_time + source_port_latency_offset <= time + ): + self._laps[signal_id] += 1 + self._schedule_time = time return self @@ -945,11 +965,12 @@ class Schedule: f"out{source_port.index}" ] if ( - lap == 0 - and source_port_start_time + source_port_latency_offset + source_port_start_time + source_port_latency_offset > self._schedule_time ): - lap = 1 + lap += ( + source_port_start_time + source_port_latency_offset + ) // self._schedule_time destination_laps.append((port.operation.graph_id, port.index, lap)) -- GitLab