Skip to content
Snippets Groups Projects

Added RecursiveListScheduler and other small improvements/fixes

Merged Simon Bjurek requested to merge add-recursive-list-scheduler into master
3 unresolved threads
  • Added a RecursiveListScheduler that schedules recursive loops before all the other operations.
  • Small fixes/improvements made across Schedule/Scheduler/SchedulingGUI.
  • Now scheduling non-recursive algorithms to schedule_time=1 should be possible.
  • Updated examples in some cases that were wrong.

Closes: #325 (closed)

Edited by Simon Bjurek

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
249 249 op_start_time = self.schedule.start_time_of_operation(item.graph_id)
250 250 new_start_time = floor(pos) - floor(self._x_axis_indent)
251 251 move_time = new_start_time - op_start_time
252 op = self._schedule.sfg.find_by_id(item.graph_id)
252 op = self._schedule._sfg.find_by_id(item.graph_id)
  • 975 987 source_port_start_time + source_port_latency_offset
    976 988 > self._schedule_time
    977 989 ):
    978 lap += (
    979 source_port_start_time + source_port_latency_offset
    980 ) // self._schedule_time
    990 lap += 1
    • Unsure about this, tried with this and could not come up with a bad case, using the old variant proved to introduce unneccecary delays when an operation was longer than the scheduling time.

      We should probably discuss this sometime.

    • Please register or sign in to reply
  • Simon Bjurek marked this merge request as ready

    marked this merge request as ready

  • 762 for signal, signal_slack in signal_slacks.items():
    763 new_slack = signal_slack
    764 laps = 0
    765 while new_slack < 0:
    766 laps += 1
    767 new_slack += self._schedule_time
    768 self._laps[signal.graph_id] = laps
    763 # update input laps
    764 for input_port in op.inputs:
    765 laps = 0
    766 if self._schedule_time is not None:
    767 current_lap = time // self._schedule_time
    768 source_port = source_op = input_port.signals[0].source
    769 source_op = source_port.operation
    770
    771 if not isinstance(source_op, Delay) and not isinstance(
    • Suggested change
      771 if not isinstance(source_op, Delay) and not isinstance(
      771 if not isinstance(source_op, (Delay, DontCare)):

      I think this works. Doesn't have to be changed here now though.

    • Please register or sign in to reply
  • Oscar Gustafsson approved this merge request

    approved this merge request

  • Please register or sign in to reply
    Loading