LetSynchronise is an extensible, web-based, open-source (GPL3) framework for modelling, simulating, analysing, and optimising LET-based systems. It currently focuses on timing behaviour and does not support the modelling of, e.g., functional behaviour, data values, or memory usage. The target audience of LetSynchronise is researchers who wish to (1) rapidly prototype and experiment with LET scheduling policies and optimisations, (2) make solutions and benchmarks readily accessible, and (3) fairly and accurately reproduce and evaluate the results of existing work.
Paper describing LetSynchronise:
Original authors:
- Web browser that supports indexedDB (system database) and localStorage (UI settings)
- D3 Data-Driven Documents: Charting
- Bootstrap: User interface and layout
- dependencies: JavaScript frameworks and libraries
- docs: Documentation on architecture and plugin feature
- playground: Examples to learn JavaScript and frameworks
- sources: Organised into the model-view-controller architecture
- controller: Links the view and model together
- model: System model
- view: User interface
- plugins: Extensions for importing, exporting, analysing, scheduling, and optimising systems
LetSynchronise is designed as a web application that does not require any installation.
Just open the sources/ls.main.html
file in a web browser, e.g., Firefox or Safari.
There are two tabs for users to Design and then to Analyse a LET system.
See the docs
folder for information on the types of plugins that are available
and can be developed.
Systems can be imported and exported via supported file formats. If only certain system elements should be imported or exported, these can be selected beforehand via tick boxes.
Note
LetSynchronise uses a time base of nanoseconds to avoid floating-point rounding errors.
- Edit the cores and their speedups
- Edit the memories and their sizes and access latencies
- Edit the system interface in terms of the environmental inputs and outputs.
- Edit the system's LET task set, and view each task's parameters diagramatically.
- Edit task communication dependencies among the system interface and tasks.
- View the prologue and hyper-period of the task set.
- Define the makespan of the task schedule to simulate.
- Choose a task scheduler that implements the desired scheduling policy.
- Choose the type of execution times (BCET, ACET, or WCET) to simulate for each task instance.
- Choose an optimisation goal to apply on the system.
- View, zoom, and pan the simulated task schedule, including the overall system load.
- Show or hide each task communication dependency.
- Interactive tooltips appear when the mouse is hovered over each LET interval, execution interval, and task communication dependency.
- Edit event chains, which represent sequences of task communication dependencies.
- Highlight each instance of a selected event chain.
- Define timing constraints on event chains, which will also be analysed during optimisation.
- View analysis results for timing constraints.
Note
Location of original repository: https://github.com/eyip002/LetSynchronise
Contributions are always welcome!
LetSynchronise is based on the model-view-controller architecure and details
can be found in the docs
folder. The main logic and plugins are programmed
in JavaScript. The system model and simulated schedule are stored in
IndexeDB.
The user's settings are stored in localStorage.
The user interface is styled with Bootstrap.
The simulated schedules are plotted with D3.
- Indentation: 4 spaces
- Names: camel casing