Skip to content
Shafiul Azam edited this page Mar 15, 2018 · 28 revisions

Curated Simulink Model Corpus

Our coprus of public Simulink models

Automatically Finding Bugs in Cyber-Physical Systems Development Tools

In this project, we are developing automated testing schemes to generate random, valid CPS development tool (currently MathWorks's Simulink) models which are inputs to the tool chain. Using these inputs in a differential testing framework, our tool automatically finds tool chain bugs.

Tool implementation for Simulink is located under slsf directory. Check out how to run the tool.

Recent News

  • Our paper Automatically Finding Bugs in a Commercial Cyber-Physical System Development Tool Chain with SLforge has been accepted in ICSE 2018 ICSE 2018 Artifacts
  • Presented in the students' presentation session and tools demonstration session at Seventh Summer School on Formal Techniques, by Stanford Research Institute (SRI) International, May 2017
  • Presented demo Fuzzing Cyber-Physical Systems Development Environments with CyFuzz in HSCC 2017
  • Presented at the 6th Workshop on Design, Modeling, and Evaluation of Cyber Physical Systems (CyPhy'16)
  • ICSE 2018 Artifacts
  • Tool demo (video)

Contribute

We welcome new contributors! Please check out getting started guide. We manage the project in GitHub. Development branch is random-generation where you can find latest code. Stable code can be found in master.

Requirements to Run the Tools

  • Matlab with Simulink version R2017a. Matlab scripts can be run from either Windows or Linux.

Optional requirements:

  • Python3: if you want to detect crash-bugs. Python2 might not work. Also requires Linux (We have tested the scripts in Ubuntu 14.04+) to run the Python scripts, as we have not tested them in other platforms.
  • https://embed.cs.utah.edu/csmith/: if you want to generate custom blocks (see below for instructions)

Building and installing Csmith (required if you want to create custom blocks using s-functions)

  • Please clone source code from (customized Csmith)[ttps://github.com/shafiul/csmith].
  • To build csmith, follow official doc at https://embed.cs.utah.edu/csmith/
  • If using Ubuntu: You need m4 library (apt-get it)
  • Once built, the Csmith binary is located inside src directory.
  • We have to ensure csmith executable and include directory is in operating system path (see below).

Set up environment variables (in Linux)

Adding following in your bash.rc will add Csmith and Matlab executables in OS path:

export CSMITH_PATH=/path/to/csmith
export PATH=$PATH:/$CSMITH_PATH/src:path/to/matlab/binary
export C_INCLUDE_PATH=$CSMITH_PATH/runtime
export CSMITH_HOME=$CSMITH_PATH # Needed for running csmith test driver