Quest Simulation & Verification Tool for SDL/QSDL (PhD Thesis) - Main QUEST Program (QSDL --> C++)
QUEST translates an SDL or QSDL specification into executable C++ code for simulation or verification of this specification. SDL is a non-proprietary internationally standardized language (ITU–T standard Z.100 and Z.105). QSDL is an extension of this language to add performance metrics and requirements.
QUEST consists of different parts:
- QUEST Data Structure - QSDL-DS repository: https://github.com/Diefenbruch/QSDL-DS
- QUEST QSDL Parser - QSDL-QP repository: https://github.com/Diefenbruch/QSDL-QP
- QUEST QSDL Code Generator - QSDL-CG repository: https://github.com/Diefenbruch/QSDL-CG
- QUEST Main program - QSDL-QUEST repository: https://github.com/Diefenbruch/QSDL-QUEST
QUEST genrates C++ code and Makefile for each QSDL specification. This C++ code will be linked to additional libraries:
- Simulation Class Library (SCL): https://github.com/Diefenbruch/QSDL-SCL
- Temporal Logic Library (TL): https://github.com/Diefenbruch/QSDL-TL
- Performance Evaluation and Visualization (PEV): https://github.com/Diefenbruch/QSDL-PEV
Requirements:
- Linux operating system
- GNU tools and GCC installed
- X11 Windows installed (for PEV Visualization only)
Installation of QUEST:
- Create qsdl user in Linux (e.g. with /home/qsdl user space)
- Login as qsdl user and be in /home/qsdl directory (if you choose another directory you have to adjust quest-ini.sh script)
- git clone https://github.com/Diefenbruch/QSDL-INIT .
- git clone https://github.com/Diefenbruch/QSDL-DS src/ds
- git clone https://github.com/Diefenbruch/QSDL-CG src/cg
- git clone https://github.com/Diefenbruch/QSDL-QP src/qp
- git clone https://github.com/Diefenbruch/QSDL-QUEST src/quest
- git clone https://github.com/Diefenbruch/QSDL-SCL src/scl
- git clone https://github.com/Diefenbruch/QSDL-TL src/tl
- git clone https://github.com/Diefenbruch/QSDL-PEV src/pev
- source quest-ini.sh
- make install-includes
- make -w depend
- make all
Results:
- /home/qsdl/include - C++ include files to compile quest
- /home/qsdl/lib - libraries used to compile and link quest
- /home/qsdl/[arch]/bin - quest executable (start with -h to see paramerter description)
- /home/qsdl/src - quest C++ source files
Install Example specifications:
- Login as qsdl user
- Be in /home/qsdl directory
- git clone https://github.com/Diefenbruch/QSDL-SPECS specifications
Example (replace [arch] with your architecture directory):
- Run /home/qsdl/bin/[arch]/quest -vwgmiyxpel srs.pr
- switch to /home/qsdl/output/srs
- make
- Run /home/qsdl/srs/obj/[arch]/srs -h (help message)
- Set environment variables for the experiment: source /home/qsdl/specifications/srs.sh
- Simulation run: /home/qsdl/srs/obj/[arch]/srs -vys -e 1 -z 100
- Validation run: /home/qsdl/srs/obj/[arch]/srs -vyr -e 1 -p 18 -t msc -u -i 1 -s bs
- Verification run: /home/qsdl/srs/obj/[arch]/srs -vyv -e 1 -p 18 -t msc -u -i 1 -s fs -r "[]<>inUDCon"
- Performance Evaluation & Visualization run: /home/qsdl/srs/obj/[arch]/srs -vy s -t pev -c srs.pev