Skip to content

Tool chain that translate tables with state/transition protocol descriptions into a network of communicating state machines directly suitable for verification in Uppaal.

License

Notifications You must be signed in to change notification settings

Shani48/csv2uppaal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

**********
csv2uppaal - USERS GUIDE 
**********

A. BEFORE RUNNING THE TOOL
--------------------------
The tool chain is written in Ruby language. 
It was developed and tested under Ubuntu GNU/Linux, 
Mac OS X and Windows XP. 

---
* Installing Ruby on MS Windows:
---

[Ruby]: http://rubyinstaller.org/

When installing Ruby on Windows with rubyinstaller,
you should mark ON all 3 options:
  * Install Tcl/Tk support
  * Add ruby executable to your PATH
  * Associate .rb and .rbw files with this Ruby installation

---
* Installing Ruby using RVM (mainly Linux and Mac)
---

If you plan to use csv2uppaal on a ruby installed using RVM note that,
to enable Tk support, you should use "enable-pthread" command line option.

rvm install 1.9.3 --enable-pthread

or (if you have already installed a ruby using RVM, reinstall it)

rvm reinstall 1.9.3 --enable-pthread

---
* The GUI
---

We provide also a graphical GUI interface on top of the command line tool. 
The GUI comes in two versions Tk and RubyCooca. More details 
on how to run the GUI is given in README-GUI.txt.

IMPORTANT: To run the protocol verification, the command line tool 
verifyta coming with the distribution of UPPAAL is required,
as described in part B below. 

B. UPPAAL BACK END
------------------
To run the command line verification, the user needs to install
UPPAAL command line tool called "verifyta" that can be found in
the standard distribution package (www.uppaal.org). Note that the
tool is free only for noncommercial applications; see more at:
http://www.it.uu.se/research/group/darts/uppaal/download.shtml

IMPORTANT: If you are running 64 bit versions of linux or mac, download 
and install the 64 bit development version of UPPAAL verifyta.

On Mac, copy (drag and drop) the file verifyta into the directory:
/Applications/

On GNU/Linux, copy verifyta into the directory (sudo cp verifyta /usr/local/bin):
/usr/local/bin/

On Windows, copy verifyta into the directory C:\Program Files\Uppaal\bin-Win32.

Then csv2uppaal will be able to locate verifyta automatically.

csv2uppaal will always search for verifyta on the current directory also.

If you prefer to place the verifyta in other directory, you need 
to modify the path in the CONFIG file manually.

TROUBLE-SHOOTING:

If you try to run the tool on a 64-bit linux using the 32-bit version 
of verifyta it will probably not run and you will get the following
message:

verifyta: relocation error: /lib32/libresolv.so.2: symbol strlen, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

Should this happen, download the 64 bit development version and try again.


C. PROTOCOLS AS CSV FILES 
-------------------------
Protocols that the csv2uppaal tool accepts can be created in
in OpenOffice (recommended application) and saved as .csv file
with ";" as the field separator. Examples of .csv files are included
in the distribution, including a general Template.csv. The
sheets contain the keywords PROTOCOL, ROLE, STATES, IN, IN*, OUT, OUT*
and Invalid.

PROTOCOL is followed by the name of the protocol, type of medium and capacity

ROLE is followed by the name of the role

STATES is followed by an empty cell and then a list of all states for
       the particular role; some state names may end with *, which means
       that they are interpreted as Ended states

IN is followed by a name of a message and stands for inbound event

OUT is followed by a name of a message and stands for outbound event

IN* and OUT* has the same meaning as IN and OUT but moreover signal
             that the messages are unordered (for the use with abstractions)

Invalid is a special keyword representing the invalid state

Each cells in a column named by a state and a row named by a message
describes a transition of the protocol. Such cell always contains 
two strings separated by comma. For inbound messages the string before
the comma represents the message that is sent and the string after comma
is the name of the new state. For outbound events the string before comma
is always empty and the string after comma represents new state. 

We recommend the users to consult the simple example STP.csv that is self-explanatory.


D. USING THE TOOL 
-----------------
The tool for a protocol like STP is run by unzipping the archive,
opening a terminal and entering the directory where the tool
is located. The tool is then run by the command:

./csv2uppaal.rb STP.csv

If you are running Mac or Linux, we recommend that you use the
GUI for verifying protocols as described in README-GUI.txt.

The following switches are available for changing various parameters
of the protocol (if the same parameters are declared also in .csv file
that the switches override these settings):

csv2uppaal.rb <filename.csv> (verify the given protocol)
csv2uppaal.rb -o (multiple channel optimization)
csv2uppaal.rb -t 0 (default, finds some error trace)
csv2uppaal.rb -t 1 (finds the shortest error trace)
csv2uppaal.rb -m [set|bag|fifo|lossy|stutt] (override the default medium)
csv2uppaal.rb -c capacity (sets the channel capacity to a positive integer)
csv2uppaal.rb -i all messages treated as ordered (ignore unordered flag) 
csv2uppaal.rb -d (do not delete the temporary files, debugging mode)
csv2uppaal.rb -f termination with fairness (all executions successfully end)
csv2uppaal.rb -x <value> sets MIN_DELAY constant for the fairness model
csv2uppaal.rb -y <value> sets TIRE_OUT constant for the fairness model
csv2uppaal.rb -h (shows this help)


About

Tool chain that translate tables with state/transition protocol descriptions into a network of communicating state machines directly suitable for verification in Uppaal.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 96.3%
  • HTML 3.7%