Skip to content
Snippets Groups Projects
test_core_schedulers.py 31.6 KiB
Newer Older
  • Learn to ignore specific revisions
  •             "mads2": 10,
                "mads1": 13,
                "out2": 10,
                "out1": 13,
                "out0": 16,
            }
            assert schedule.schedule_time == 16
    
        def test_ldlt_inverse_2x2_specified_IO_times_cyclic(self):
            sfg = ldlt_matrix_inverse(N=2)
    
            sfg.set_latency_of_type(MADS.type_name(), 3)
            sfg.set_latency_of_type(Reciprocal.type_name(), 2)
            sfg.set_execution_time_of_type(MADS.type_name(), 1)
            sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
    
            resources = {MADS.type_name(): 1, Reciprocal.type_name(): 1}
            input_times = {
                "in0": 0,
                "in1": 1,
                "in2": 2,
            }
            output_times = {
                "out0": 0,
                "out1": 1,
                "out2": 2,
            }
            schedule = Schedule(
                sfg,
                scheduler=HybridScheduler(resources, input_times, output_times),
                cyclic=True,
            )
    
            assert schedule.start_times == {
                "in0": 0,
                "in1": 1,
                "in2": 2,
                "rec0": 0,
                "dontcare1": 2,
                "mads0": 2,
                "mads3": 5,
                "rec1": 8,
                "dontcare0": 10,
                "mads2": 10,
                "mads1": 13,
                "out0": 16,
                "out1": 1,
                "out2": 2,
            }
            assert schedule.schedule_time == 16
    
        def test_max_invalid_resources(self):
            sfg = ldlt_matrix_inverse(N=2)
    
            sfg.set_latency_of_type(MADS.type_name(), 3)
            sfg.set_latency_of_type(Reciprocal.type_name(), 2)
            sfg.set_execution_time_of_type(MADS.type_name(), 1)
            sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
    
            resources = 2
            with pytest.raises(ValueError, match="max_resources must be a dictionary."):
                Schedule(sfg, scheduler=HybridScheduler(resources))
    
            resources = "test"
            with pytest.raises(ValueError, match="max_resources must be a dictionary."):
                Schedule(sfg, scheduler=HybridScheduler(resources))
    
            resources = []
            with pytest.raises(ValueError, match="max_resources must be a dictionary."):
                Schedule(sfg, scheduler=HybridScheduler(resources))
    
            resources = {1: 1}
            with pytest.raises(
                ValueError, match="max_resources key must be a valid type_name."
            ):
                Schedule(sfg, scheduler=HybridScheduler(resources))
    
            resources = {MADS.type_name(): "test"}
            with pytest.raises(ValueError, match="max_resources value must be an integer."):
                Schedule(sfg, scheduler=HybridScheduler(resources))