Skip to content
Snippets Groups Projects
Commit 752932ff authored by Simon Bjurek's avatar Simon Bjurek
Browse files

fixed bug in scheduling

parent 7b61cb78
No related branches found
No related tags found
No related merge requests found
Pipeline #158421 passed
...@@ -365,10 +365,10 @@ class Schedule: ...@@ -365,10 +365,10 @@ class Schedule:
available_time = ( available_time = (
cast(int, source.latency_offset) cast(int, source.latency_offset)
+ self._start_times[source.operation.graph_id] + self._start_times[source.operation.graph_id]
- self._schedule_time * self._laps[signal.graph_id]
) )
if available_time > self._schedule_time: if available_time > self._schedule_time:
available_time -= self._schedule_time available_time -= self._schedule_time
available_time -= self._schedule_time * self._laps[signal.graph_id]
else: else:
available_time = ( available_time = (
cast(int, source.latency_offset) cast(int, source.latency_offset)
...@@ -458,6 +458,26 @@ class Schedule: ...@@ -458,6 +458,26 @@ class Schedule:
raise ValueError( raise ValueError(
f"New schedule time ({time}) too short, minimum: {max_end_time}." 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 self._schedule_time = time
return self return self
...@@ -945,11 +965,12 @@ class Schedule: ...@@ -945,11 +965,12 @@ class Schedule:
f"out{source_port.index}" f"out{source_port.index}"
] ]
if ( if (
lap == 0 source_port_start_time + source_port_latency_offset
and source_port_start_time + source_port_latency_offset
> self._schedule_time > 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)) destination_laps.append((port.operation.graph_id, port.index, lap))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment