DSSynth is a MATLAB Toolbox that synthesizes digital controllers w.r.t. the stability specification, considering finite word-length (FWL) effects for physical plants represented by transfer-function or state-space equations. DSSynth considers fixed-point numerical representation for the digital controller and dynamic input ranges for the closed-loop control system. Currently, there are two versions of the DSSynth toolbox: command-line and MATLAB application.

Useful links:

Download the latest version of the DSSynth Toolbox at: download page.
Video Demonstration about the DSSynth Toolbox Installation at: [Installation Demonstration]
Video Demonstration about the DSSynth Toolbox Usage at: [Usage Demonstration]
Full Video Demonstration about the DSSynth Toolbox: [Full Demonstration]

Related Publications:

[1] Abate, A., Bessa, I.; Cattaruzza, D., Cordeiro, L., David, C., Kesseli, P., Kroening, D., Polgreen, E. Sound and Automated Synthesis of Digital Stabilizing Controllers for Continuous Plants. Automated Formal Synthesis of Digital Controllers for State-Space Physical Plants. In 29th International Conference on Computer-Aided Verification (CAV), LNCS 10426, pp. 462-482, 2017. [Presentation] [Video] DOI: http://dx.doi.org/10.1007/978-3-319-63387-9_23

[2] Abate, A., Bessa, I., Cattaruzza, D., Cordeiro, L., David, C., Kesseli, P., Kroening, D. Sound and Automated Synthesis of Digital Stabilizing Controllers for Continuous Plants. In 20th ACM International Conference on Hybrid Systems: Computation and Control (HSCC), pp. 197-206, 2017. [Presentation] DOI: http://dx.doi.org/10.1145/3049797.3049802

[3] Abate, A., Bessa, I., Cattaruzza, D., Chaves, L., Cordeiro, L., David, C., Kesseli, P., Kroening, D., Polgreen, E. DSSynth: An Automated Digital Controller Synthesis Tool for Physical Plants. In 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 919-924, 2017. [Presentation] [Poster]


In order to execute DSSynth in MATLAB, the user must install the DSSynth Toolbox in MATLAB 2016b Linux version.

Required tools to run the scripts: Linux/MATLAB;
MATLAB version: at least version 2016b;


In order to install DSSynth Toolbox, the user must download the DSSynth Toolbox installation file from download page.

After that, the following steps must be executed:

1) Open MATLAB;
2) Go to the directory where “DSSynth.mltbx” file is stored;
3) Execute the file with the “.mltbx$” extension (or double-click on it); a pop-up screen to install DSSynth Toolbox will be shown.
4) Click on the install button.

Automated Procedures Performed by MATLAB:

1) Setup: obtain the plant, fixed-point format and dynamic input ranges, and translate them to a struct in MATLAB;
2) Parse: obtain the digital plant implementation, and then translate it to an ANSI-C file;
3) Execute: obtain the ANSI-C file from the previous step, call CBMC-CEGIS as back-end program synthesis tool, and then perform the automated synthesis;
4) Extract: obtain the .log that is generated after the synthesis phase and then check the synthesized digital-controller.
5) Report: obtain the digital-controller, translate it to a MATLAB system, and then show the result to the user.

Toolbox Usage:


(1) Before running the DSSynth toolbox, the user must execute the following command in the MATLAB Workspace in order to configure the toolbox:

setenv(‘LD_LIBRARY_PATH’,’installation path to libstdc++’);

Toolbox Command-Line Usage:

Steps to use the DSSynth toolbox:

1) Download and Install at least MATLAB 2016b;
2) Download and Install the DSSynth Toolbox;
3) Design a digital-plant in MATLAB as transfer-function or state-space format;
4) Start the synthesis process by providing all required parameters (plant, numeric representation, and dynamic ranges).
5) Invoking Command:

synthesize(plant,intBits,fracBits, maxRange, minRange);


plant: digital-plant as transfer-function or state-space. See details about ‘tf’ and ‘ss’ commands in MATLAB to design digital-systems.
intBits: represents the integer bits part;
fracBits: represents the fractionary bits part;
maxRange: represents the maximum dynamic range;
minRange: represents the minimum dynamic range;

In order to visualize the documentation about the synthesize function, the user must invoke the following command:

help synthesize

Example (transfer-function):

>> system = tf([-0.06875 0 0],[1 -1.696 0.7089],0.02)
>> system =
	-0.06875 z^2
	z^2 - 1.696 z + 0.7089
	Sample time: 0.02 seconds
	Discrete-time transfer function.
>> synthesize(system,8,8,1,-1)

Example (state-space):

>> A = [0.90122,1.3429e-08;7.4506e-09,0];
>> B = [128;0];
>> C = [0.0014826,189.0217];
>> D = [0];
>> system = ss(A,B,C,D,0.02);
>> synthesize(system,8,8,1,-1)

Video Demonstration about Synthesis for Plants in Transfer-function Format: https://drive.google.com/open?id=0ByHTHsS00rluSnBOOVBwSEFveGM

Video Demonstration about Synthesis for Plants in State-Space Format: https://drive.google.com/open?id=0ByHTHsS00rluSWlzSWZDbXAyaUE

Toolbox Application Usage:

In order to perform the synthesis of digital-controllers, a MATLAB application was developed for DSSynth, which aims to improve usability and, consequently, attract more digital-system engineers (potential users). The MATLAB application can also generate graphs as “Step Response” to show the stability of the digital-controllers generated by the DSSynth tool.

Invoking Application GUI by Command:

>> DSSynth

Video Demonstration about the usage of the MATLAB Application (transfer-function): https://drive.google.com/open?id=0ByHTHsS00rluNVo0OEI2UUozcmM

Video Demonstration about the usage of the MATLAB Application (state-space): https://drive.google.com/open?id=0ByHTHsS00rluTVVZa3NWVFU3MEk

Plotting Step Response:

In order to plot the step response for the K matrix synthesized, the user can invoke the command dstep as follow:

>> Given matrices A, B, C and D in MATLAB, then
>> system = ss(A,B,C,D);
>> K = synthesize(system,8,8,1,-1);
>> dstep (A-B*K,B,C-D*K,D)

See also dstep, step, impulse, dlsim, lsim in MATLAB to plot graphs.