This is the repository for the CS294-262 final project titled "Timing Verification in Distributed Real-Time Systems."
-
cd fa25-lf-timing -
docker build -f dockerfile_mac -t fa25-lf-timing .
docker run -d --name gametime-work -v "$PWD/gametime":/home/gametime fa25-lf-timing tail -f /dev/null
- Setup venv in mounted directory (first time only):
docker exec gametime-work bash -c "cd /home/gametime && python3 -m venv .venv && sed -i '/^yaml$/d' requirements.txt && .venv/bin/pip install -e . && .venv/bin/pip install -r requirements.txt"
- Connect to container:
docker exec -it gametime-work bash
- Inside container - activate environment:
source /home/gametime/.venv/bin/activate && export PYTHONPATH=/home/gametime/src:$PYTHONPATH
docker exec gametime-work bash -c "cd /home/gametime && clang++-16 -shared -fPIC src/custom_passes/custom_inline_pass.cpp -o src/custom_passes/custom_inline_pass.so \$(llvm-config --cxxflags --ldflags --libs) -Wl,-rpath,\$(llvm-config --libdir)"
- If you get klee header error, run this in the container:
mkdir -p /opt/homebrew/include
ln -sf /usr/local/include/klee /opt/homebrew/include/klee
Requirements: Lingua Franca VS Code Extension
- Write your Lingua Franca Program. e.x:-
HelloWorld.lf - Compile and run on VSCode. The output will be stored in a directory
src-gen/<program-name> - Convert LF output in C to Gametime compatible format:
python lf_to_gametime_v2.py <src-gen-dir>A new directoryoutput-dirwill contain the C code in Gametime compatible format. Example:python lf_to_gametime_v2.py src-gen/HelloWorld
- Each LF Reaction is converted to a C function with a corresponding yaml file.
- Manually copy the
lf-gametime-<program-name>directory togametime/test/ - Run
gametime lf-gametime-<program-name>/<reaction-name> --backend flexpret