You can download the latest version of SPARTS from here.
The latest update made on 21.05.2013 (added patch for a Device Power Management with Multiple Sleep States)
You can download the SPARTS patch 1.5dev_pm from here. (Extension to include device power management.)
You can download the SPARTS patch 1.5noc from here. (Supporting a NoC-based many-core platform with a limited migrative model.)
You can download the SPARTS version 1.2 from here.
You can download the SPARTS version 1.1 from here.
You can download the SPARTS version 1.0 from here.
Q: What is SPARTS?
A: SPARTS is the simulator of a generic real-time device. It is implemented in Java. SPARTS performs the execution in event-driven manner, rather than simulating with cycle-step granularity.
Q: How to download SPARTS?
A: The latest stable version and the latest (partly tested) current version will be always available for download from the website, however you can always contact of for detailed information about the statuses of those two versions (which functionalities are implemented, etc). Also, latest development version can be obtained by directly contacting us.
Q: How to put SPARTS running?
A: The first requirement is to have Java client installed for basic usage, and on top of that any JDK for additional implementation.
Steps for running SPARTS in Eclipse Indigo:
1. Download or obtain from us the source-code
2. Create new Workspace and new Java Project
3. Import source-code into src folder of the Project by selecting Right click on src folder -> Import... -> General -> File system -> And selecting all the files
(4.) Optionally, for Gantt charts you have to include corresponding libraries into the project as well. It can be obtained from: http://www.jfree.org/jfreechart/download.html. After unpacking the archive, include the libraries into the Project by doing following actions:
Right click on the Project -> Properties -> Java Build Path -> Libraries -> Add External JARs... and add these files: (or later versions)
5. Build and run
Q: Which features are currently available?
A: SPARTS currently contains 5 single-core schedulers: ERTH*, LCEDF*, EDF, RM, LLF (marked with * are power-management related ones). They can all be found in the package Schedulers of the Project.
Q: Which modes of running are currently available?
A: SPARTS can be started in three ways:
- with console line parameters
- with parameters specified in particular files
- with hard-coded parameters
Q: How can I perform console line execution?
A: See script file for an example execution (bash script_simulator_java.sh FOLDER_NAME options). Also see source-code Main class for expected input parameters and their corresponding values and ordering. The method of interest is PerformConsoleLineExecution(). Parameters that can be varied include system utilisation, task-set breakdowns, sporadicity, execution time variations, total execution time, ... However, console line execution does not allow gantt charts, so it is needed to remove the references to gantt libraries from Logger.java, or exclude Logger.java from the project completely and remove corresponding references (Logger.Log() in Execution Engine and Logger.CloseFile() and Logger.PrintResults() in Main.java).
Q: How can I perform the execution with file parameters?
A: During every execution, several different modules will attempt to access files. Values described in previous answer can be accessed through the file InputParameters.xml. According to their values, corresponding task-set will be created. However, if needed, this step can be omitted, and concrete taskset can be passed into the system through the file ConcreteTaskset.xml. Please see corresponding files to understand the convention assumed for their usage. Additionally power-related parameters are read from the file PowerModelParameters.xml. All aforementioned files have values we assumed for our own experiments, you can freely change them to craft your own execution scenarios and traces.
Q: How can I perform the execution with hard-coded values?
A: This feature is mainly dedicated to active development purposes, but also for the situations where input files are not used. Currently hard-coded parameters have the same values as those read from files, but can be changed.
Q: How can I implement a new Scheduler?
A: Adding new schedulers can be achieved by following these steps:
1. If new Scheduler needs some task and job specific parameters which don't exist in existing model, either the specialisations of tasks and jobs or extensions of existing generic implementations are way to go. It if left to the user to decide what suits better particular purpose
2. The class for new scheduler has to be created and added into the folder where all schedulers reside.
3. The implementation of new scheduler has to follow several architectural standards, for instance, the Scheduler has to extend abstract class Scheduler and implement missing methods described in interface IScheduler. The user is advised to look at all five implementations of current schedulers to understand this procedure.
4. Manipulations of the ready queue have to be specified. If nothing is written, then EDF framework is assumed (jobs are ordered in ready queue according to their corresponding deadlines, in non-increasing order). Additional policies for ready queue manipulations have to be specified by overriding default funcion HigherPriority(). User can look at the implementation of this override in RM and LLF scheduler because they are not based on EDF framework.
5. The most important scheduler method CalculatePreviousPeriodExecution() has to be implemented. Current schedulers can be used as an example. The basic behaviour shaping components are Timers, which craft the particular execution. Therefore Timers as basic building blocks and have to be used for describing the scheduler behaviour.
6. Finally, the main method has to be altered in order to include new schedulers.