script_proba.py 1.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/python3

"""
Example of a script that uses SimSo.
"""

import sys
from simso.core import Model
from simso.configuration import Configuration


def main(argv):
    if len(argv) == 2:
        # Configuration load from a file.
        configuration = Configuration(argv[1])
    else:
        # Manual configuration:
        configuration = Configuration()

20
        configuration.cycles_per_ms = 1
21

22 23 24
        configuration.etm = "pwcet"

        configuration.duration = 100 * configuration.cycles_per_ms
25 26

        # Add tasks:
27
        configuration.add_task(name="T1", identifier=1,
28
                               activation_date=0, pwcet=[(2, 0.5), (4, 0.5)], pmit=[(5, 0.2), (6, 0.8)], deadline=5, task_type="Probabilistic", abort_on_miss=True)
29 30

        configuration.add_task(name="T2", identifier=2,
31 32 33 34
                               activation_date=0, pwcet=[(3, 0.5), (4, 0.5)], pmit=[(7, 0.5), (8, 0.5)], deadline=7, task_type="Probabilistic", abort_on_miss=True)

        configuration.add_task(name="T3", identifier=3,
                               activation_date=0, pwcet=[(3, 0.5), (4, 0.5)], pmit=[(8, 0.5), (9, 0.5)], deadline=8, task_type="Probabilistic", abort_on_miss=True)
35 36 37

        # Add a processor:
        configuration.add_processor(name="CPU 1", identifier=1)
38
        configuration.add_processor(name="CPU 2", identifier=2)
39 40

        # Add a scheduler:
41
        configuration.scheduler_info.filename = "./simso/schedulers/RM.py"
42 43 44 45 46 47 48 49 50 51 52 53 54 55

    # Check the config before trying to run it.
    configuration.check_all()

    # Init a model from the configuration.
    model = Model(configuration)

    # Execute the simulation.
    model.run_model()

    # Print logs.
    for log in model.logs:
        print(log)

56

57
main(sys.argv)