February 23, 2015

Documentation


Download the lastest version of DSVerifier at download page.
A video demonstration is available at:    [Demonstration]
The source code is available at:   https://github.com/ssvlab/dsverifier

Command Line Version

1) Generate manually a .c file with system specification.

For Digital-Systems standalone verification

#include <dsverifier.h>

digital_system ds = {
    .a = { 1.0, -0.9 },               /* digital system denominator coefficients */
    .a_size = 2,                      /* number of coefficients in denominator */   
    .b = { 1.561, -1.485 },           /* digital system numerator coefficients */
    .b_size = 2                       /* number of coefficients in numerator */   
 }; 

implementation impl = {
    .int_bits = 3,                    /* number of bits in integer part of the fixed-point representation */
    .frac_bits = 8,                   /* number of bits in precision part of the fixed-point representation */
    .delta = 0.25,                    /* delta value used for delta form (if any) */
    .max = 1.0,                       /* maximum value used in the digital system input */
    .min = -1.0,                      /* minimum value used in the digital system input */
 };

DSVerifier must be invoked using the following parameters:

./dsverifier example.c --realization DFI --property OVERFLOW --x-size 10 --bmc ESBMC --solver z3

For Digital-Systems in Closed-loop considering uncertainty

#include <dsverifier.h>

digital_system plant = {
   .b = { 0.5486931, -0.886738 },     /* sampled plant numerator coefficients */
   .b_uncertainty = { 0, 0 },         /* uncertainty numerator coefficients */
   .b_size = 2,                       /* number of coefficients in numerator */
   .a = { 1.0, -3.324812, 1.648721 }, /* sampled plant denominator coefficients */
   .a_uncertainty = { 0, 0, 0 },      /* uncertainty numerator coefficients */
   .a_size = 3                        /* number of coefficients in denominator */
};

digital_system controller = {            
   .b = { -18.791301, 11.383944 },    /* digital control numerator coefficients */
   .b_size = 2,                       /* number of coefficients in numerator */   
   .a = { 1.0, 3.635450 },            /* digital control denominator coefficients */
   .a_size = 2                        /* number of coefficients in denominator */   
};

implementation impl = {
    .int_bits = 3,                      /* integer part of the fxp representation (for controller) */
    .frac_bits = 8,                   /* precision part of the fxp representation (for controller) */
 };

DSVerifier must be invoked using the following parameters:

./dsverifier example2.c --property STABILITY_CLOSED_LOOP --connection-mode SERIES --bmc ESBMC --solver z3

2) Inspect the verification result:

VERIFICATION SUCCESSFUL ~ There is no violation of the property (i.e., the digital system specification meets its implementation)

VERIFICATION FAILED ~ The property is violated (i.e., DSVerifier finds a violation and produces a counterexample to refute the property)

 

Graphical User Interface (GUI)
DSVerifier GUI was developed in order to facilitate the digital-system verification. The GUI permit the parallel execution of verification tasks, which has the potential to decrease the total verification time spent by DSVerifier
The user can receive a graphical report for the properties verification.
gui-results
The DSVerifier GUI extracts from the counterexample the input values used for overflow violation.
gui-inputs
For DSVerifier GUI usage, it is necessary to have at least Java RunTime Environment Version 8.0 Update 40 (jre1.8.0 40) 3 , due to JavaFX components.