diff --git a/b_asic/schedule.py b/b_asic/schedule.py index 1a70a84ab5bf8b93aeddb463600242784b1c240d..8fc13eba0a5c98068bd007f5a5e1c4b48f582d9d 100644 --- a/b_asic/schedule.py +++ b/b_asic/schedule.py @@ -111,6 +111,11 @@ class Schedule: if scheduler: self._scheduler = scheduler self._scheduler.apply_scheduling(self) + elif start_times is None and laps is None: + from b_asic.scheduler import ASAPScheduler + + self._scheduler = ASAPScheduler() + self._scheduler.apply_scheduling(self) else: if start_times is None: raise ValueError("Must provide start_times when using 'provided'") diff --git a/test/unit/test_schedule.py b/test/unit/test_schedule.py index 5795dc64939a2291fe07df2fa927572c83d865ba..bc2071f62c4c23d2075206ac2f27582813fee0fd 100644 --- a/test/unit/test_schedule.py +++ b/test/unit/test_schedule.py @@ -856,7 +856,7 @@ class TestErrors: with pytest.raises( ValueError, match="Must provide start_times when using 'provided'" ): - Schedule(sfg_simple_filter) + Schedule(sfg_simple_filter, laps={"test": 0}) def test_provided_no_laps(self, sfg_simple_filter): sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1) @@ -866,6 +866,29 @@ class TestErrors: with pytest.raises(ValueError, match="Must provide laps when using 'provided'"): Schedule(sfg_simple_filter, start_times={"in0": 0}) + def test_alap_default(self, sfg_direct_form_iir_lp_filter): + sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 5) + sfg_direct_form_iir_lp_filter.set_latency_of_type_name( + ConstantMultiplication.type_name(), 4 + ) + + schedule = Schedule(sfg_direct_form_iir_lp_filter) + + assert schedule.start_times == { + "in0": 0, + "cmul1": 0, + "cmul4": 0, + "cmul2": 0, + "cmul3": 0, + "add3": 4, + "add1": 4, + "add0": 9, + "cmul0": 14, + "add2": 18, + "out0": 23, + } + assert schedule.schedule_time == 23 + class TestGetUsedTypeNames: def test_secondorder_iir_schedule(self, secondorder_iir_schedule):