b_asic.scheduler
¶

- class b_asic.scheduler.ALAPScheduler(input_times: dict[GraphID, int] | None = None, output_delta_times: dict[GraphID, int] | None = None, sort_y_location: bool = True)¶
Bases:
Scheduler
Scheduler that implements the as-late-as-possible (ALAP) algorithm.
- Parameters:
- input_timesdict(GraphID, int), optional
The times when inputs arrive.
- output_delta_timesdict(GraphID, int), optional
The relative times when outputs should be produced.
- sort_y_locationbool, default: True
If the y-location should be sorted based on start time of operations.
- class b_asic.scheduler.ASAPScheduler(input_times: dict[GraphID, int] | None = None, output_delta_times: dict[GraphID, int] | None = None, sort_y_location: bool = True)¶
Bases:
Scheduler
Scheduler that implements the as-soon-as-possible (ASAP) algorithm.
- Parameters:
- input_timesdict(GraphID, int), optional
The times when inputs arrive.
- output_delta_timesdict(GraphID, int), optional
The relative times when outputs should be produced.
- sort_y_locationbool, default: True
If the y-location should be sorted based on start time of operations.
- class b_asic.scheduler.ListScheduler(sort_order: tuple[tuple[int, bool], ...], max_resources: dict[TypeName, int] | None = None, max_concurrent_reads: int | None = None, max_concurrent_writes: int | None = None, input_times: dict[GraphID, int] | None = None, output_delta_times: dict[GraphID, int] | None = None, sort_y_location: bool = True)¶
Bases:
Scheduler
List-based scheduler with optional constraints.
Important
Only works on non-recursive SFGs. For recursive SFGs use
RecursiveListScheduler
instead.- Parameters:
- sort_ordertuple(tuple(int, bool))
Specifies which columns in the priority table to sort on and in which order, where True is ascending order. There are five columns:
0 - GraphID of the operation. 1 - Deadline, i.e., the clock cycle that the data is required in the ALAP schedule. 2 - Output slack, i.e., the start time of the operation in the ALAP schedule when sorted on. 3 - Fan-out, i.e., the number of operations reading from the output of the operation. 4 - Memory reads, i.e., the number of memory reads required if operation is scheduled in the
current time slot.
- max_resourcesdict[TypeName, int] | None, optional
Max resources available to realize the schedule.
- max_concurrent_readsint | None, optional
Max number of conccurent reads.
- max_concurrent_writesint | None, optional
Max number of conccurent writes.
- input_timesdict(GraphID, int) | None, optional
The times when inputs arrive.
- output_delta_timesdict(GraphID, int) | None, optional
The relative times when outputs should be produced.
- sort_y_locationbool, default: True
If the y-location should be sorted based on start time of operations.
- class b_asic.scheduler.RecursiveListScheduler(sort_order: tuple[tuple[int, bool], ...], max_resources: dict[TypeName, int] | None = None, input_times: dict[GraphID, int] | None = None, output_delta_times: dict[GraphID, int] | None = None, sort_y_location: bool = True)¶
Bases:
ListScheduler
List-based scheduler for recursive algorithms with optional constraints.
Info
If the SFG does not have any recursive parts, use
ListScheduler
instead.- Parameters:
- sort_ordertuple(tuple(int, bool))
Specifies which columns in the priority table to sort on and in which order, where True is ascending order. There are five columns:
0 - GraphID of the operation. 1 - Deadline, i.e., the clock cycle that the data is required in the ALAP schedule. 2 - Output slack, i.e., the start time of the operation in the ALAP schedule when sorted on. 3 - Fan-out, i.e., the number of operations reading from the output of the operation. 4 - Memory reads, i.e., the number of memory reads required if operation is scheduled in the
current time slot.
- max_resourcesdict[TypeName, int] | None, optional
Max resources available to realize the schedule.
- input_timesdict(GraphID, int) | None, optional
The times when inputs arrive.
- output_delta_timesdict(GraphID, int) | None, optional
The relative times when outputs should be produced.
- sort_y_locationbool, default: True
If the y-location should be sorted based on start time of operations.
- class b_asic.scheduler.Scheduler(input_times: dict[GraphID, int] | None = None, output_delta_times: dict[GraphID, int] | None = None, sort_y_location: bool = True)¶
Bases:
ABC
Scheduler base class.
- Parameters:
- input_timesdict(GraphID, int), optional
The times when inputs arrive.
- output_delta_timesdict(GraphID, int), optional
The relative times when outputs should be produced.
- sort_y_locationbool, default: True
If the y-location should be sorted based on start time of operations.