Mentions légales du service

Skip to content
Snippets Groups Projects

Schematic Prototype

Schematic (Simultaneous Checkpoint Placement and Memory Allocation Tailored for Intermittent Computing) is a tool for placing checkpoints in an intermittent program and wisely allocate memory to volatile or on-volatile memory, to reduce the program energy consumption.

Schematic is developed as an extension of ScEpTIC, and benefit from a previous ScEpTIC extension named ALFRED. ScEpTIC and ALFRED are developed by the Networked Embedded Systems Lab at Politecnico di Milano, and released under the MIT License.

Quick Start

Install the requirements:

pip3 install -r requirements.txt

Compile your target program to LLVM IR (e.g, with the main.c file in samples/simple):

clang-7 -emit-llvm -O0 -g -S main.c -o source.ll -target msp430

⚠️ Note that ScEpTIC rely on clang version 7. Support for other versions is not guaranteed. In this case, we are compiling for the MSP430 target, but you can compile for other targets as well.

In order to emulate the behavior of your platform, you might need to configure ScEpTIC with the correct parameters. You can do so by editing the config.py file, as explained in the ScEpTIC documentation.

In the samples/simple directory, you can find a simple example of how to use Schematic. You can run it with:

python3 run.py

With the default configuration and the trace file provided, Schematic pass will place checkpoints and allocate memory for the target program, and the ScEpTIC emulator will perform several analysis. The analysis results are stored in the analysis_results/program_<timestamp> directory.

Note that if don't have any trace of your program execution, you can either use ScEpTIC to generate one (with the run_trace parameter), or give a dummy trace file to Schematic (a traces.json file, containing an empty json dict {}).

Documentation

You can find Schematic documentation at https://hreymond.gitlabpages.inria.fr/schematic

Dev requirements

To generate dot graphs:

sudo apt install gcc graphviz graphviz-dev python3 python3-dev

pip3 install pygrahpviz

Formatting

black . -l 122

ScEpTIC and ALFRED

More information about ScEpTIC and ALFRED can be found below, or in the ScEpTIC documentation and ALFRED documentation. Sources are available on Bitbucket (branches master and alfred).


ALFRED prototype

ALFRED (Automatic aLlocation oF non-volatile memoRy for transiEntly-powered Devices) is a virtual memory abstraction that resolves the dichotomy between volatile and non-volatile memory in intermittent computing.

ALFRED prototype is implemented as an extension of ScEpTIC.

Documentation

You can find ALFRED documentation at https://neslabpolimi.bitbucket.io/ALFRED/

Cite ALFRED

You can cite ALFRED and/or our program transformation techniques as:

Andrea Maioli, Luca Mottola. 2021. ALFRED: Virtual Memory for Intermittent Computing. In Proceedings of the the 19th ACM Conference on Embedded Networked Sensor Systems (SenSys '21).

Bibtex:

    @inproceedings{ALFRED,
        author = {Andrea Maioli and Luca Mottola},
        title  = {ALFRED: Virtual Memory for Intermittent Computing},
        year = {2021},
        series = {SenSys '21},
        booktitle = {Proceedings of the the 19th ACM Conference on Embedded Networked Sensor Systems (SenSys '21)}
    }

ScEpTIC

ScEpTIC (Simulator for Executing and Testing Intermittent Computation) is a python tool that analyzes intermittent execution of programs.

Documentation

You can find ScEpTIC documentation at https://neslabpolimi.bitbucket.io/ScEpTIC/

Cite ScEpTIC

You can cite ScEpTIC and/or our analysis techniques as:

Andrea Maioli, Luca Mottola, Muhammad Hamad Alizai, and Junaid Haroon Siddiqui. 2021. Discovering the Hidden Anomalies of Intermittent Computing. In Proceedings of the 2021 International Conference on Embedded Wireless Systems and Networks (EWSN '21).

Bibtex:

    @inproceedings{ScEpTIC,
        author = {Andrea Maioli and Luca Mottola and Muhammad Hamad Alizai and Junaid Haroon Siddiqui},
        title  = {Discovering the Hidden Anomalies of Intermittent Computing},
        year = {2021},
        series = {EWSN 2021},
        booktitle = {Proceedings of the 2021 International Conference on Embedded Wireless Systems and Networks}
    }