This repository implements a tool to execute Simulink models enabling
monitoring, falsification (to search for counterexamples), and online
perturbation of input signals and model state. All the operations are
non-intrusive thanks to eBPF, and can be performed without changing
the model nor its source code. To reproduce the results and the
demos, check the instructions in the server, simulator and
client folders.
Development platform: Ubuntu 24.04 LTS (kernel newer than v6.1)
Developed and tested with the following tools:
GNU gdb15.0.50GNU objdumb2.42GNU readelf2.42GNU Make4.3bpftool7.4.0 (withlibbpf1.4)g++13.3.3go1.24.3llvm-strip18.1.3llvm18.1.3clang18.1.3clang-format18.1.3docker28.4.0
After, install:
- Linux headers files
sudo apt install linux-headers-generic,sudo ln -sf /usr/include/asm-generic/ /usr/include/asm - eBPF headers
sudo apt install libbpf-dev
After cloning the repository run git config --local core.hooksPath githooks. This enables a script to format C source files with clangd
at commit time. Formatted files must be manually re-added to the
staging area.
The demos used to test the server use models from The current version uses several models from this repo. It is also possible to interact with the server using a Matlab session (see here for some code examples).
- Create the redis container with
make redis(only the first time) - Build and run the server with
make
You can get additional feedback checking the output of the eBPF probes at /sys/kernel/tracing/trace_pipe.