Project

General

Profile

Command Line Options » History » Version 64

Sergey Smolov, 02/26/2020 07:13 PM

1 1 Sergey Smolov
h1. Command Line Options
2
3 2 Sergey Smolov
{{toc}}
4
5 55 Sergey Smolov
The tool can be run by using  scripts (@retrascope.sh@ for Unix-like OS, @retrascope.bat@ for Window-like OS).
6 1 Sergey Smolov
7 44 Sergey Smolov
In this document the command line interface for "Retrascope":http://forge.ispras.ru/projects/retrascope is described.
8 23 Sergey Smolov
9
By default, the tool is run with "--help" option. Here is an output of the tool that is run with "--help" option:
10 1 Sergey Smolov
11
<pre>
12 47 Sergey Smolov
usage: files [options]
13 60 Sergey Smolov
    --check                   Check if all the dependencies are installed
14
                              properly
15 29 Sergey Smolov
    --engine <arg>            Set a subset of engines
16
    --help                    Show this message
17
    --log <arg>               Set a log file
18
    --log-level <arg>         Set a log level
19
    --solver-debug            Set debug mode for SMT solver
20
    --target <arg>            Set a target entity
21
    --tool-debug-file <arg>   Set debug mode and save info to debug log file
22 60 Sergey Smolov
    --version                 Print the tool version
23 1 Sergey Smolov
</pre>
24
25 44 Sergey Smolov
This output shows four main categories of "Retrascope":http://forge.ispras.ru/projects/retrascope command line options: source files, engines, logging mode and targets.
26 1 Sergey Smolov
Options can be put into command line in an arbitrary order. 
27
28 16 Sergey Smolov
Options can have multi-values i.e. sequences of values, separated by system-dependent symbols. For example, for running the tool on multiple Verilog files (@file1.v@, @file2.v@, @file3.v@) on *nix OS, do the following:
29
30
<pre>
31
--target cfg file1.v:file2.v:file3.v
32
</pre>
33
34
while on Windows:
35
36
<pre>
37
--target cfg file1.v;file2.v;file3.v
38
</pre>
39
40
41 1 Sergey Smolov
h2. Source files
42
43 64 Sergey Smolov
This option keeps paths to files that contain source code of hardware modules. The tool elaborates hardware descriptions written in synthesizable subsets of VHDL and Verilog. For the current ( *1.1.2* ) version of the tool it is possible to elaborate the source code when it satisfies some limitations: 
44 1 Sergey Smolov
45 64 Sergey Smolov
For VHDL - satisfies "IEEE 1076-2008":https://standards.ieee.org/standard/1076-2008.html standard + no function calls, no 'Z' or 'X' values.
46
For Verilog - satisfies "IEEE 1364-2005":https://standards.ieee.org/standard/1364-2005.html standard.
47 1 Sergey Smolov
48
h2. Targets
49
50 64 Sergey Smolov
Retrascope operates with data representations, so called *entities*. One kind of these entities called "source files" was described in the previous section and for it's elaboration the default tool components (called HDL parsers) are used.
51 1 Sergey Smolov
52 64 Sergey Smolov
Other entities may be treated as equivalent transformations of source code, or as data that can be extracted from source code (for example, knowledge about module interfaces) or generated (unit-level HDL testbenches).
53 1 Sergey Smolov
54
To select the entity the user wants to get as result, the "target" option is needed to be initialized. For example, to get the EFSM (Extended Finite State Machine) that is stored into "GraphML":http://graphml.graphdrawing.org graphical format, the "Retrascope":http://forge.ispras.ru/projects/retrascope should be run with the following options (for Verilog design called example.v):
55 3 Sergey Smolov
56 1 Sergey Smolov
<pre>
57 44 Sergey Smolov
--target efsm-graphml example.v
58 1 Sergey Smolov
</pre>
59
60
Here is the list of all target options of "Retrascope":http://forge.ispras.ru/projects/retrascope:
61 3 Sergey Smolov
|*Name*|*Description*|
62 49 Sergey Smolov
|assertion|Assertion model|
63 30 Sergey Smolov
|cfg|Control flow graph model|
64 2 Sergey Smolov
|cfg-graphml|Control flow graph model that is saved in the "GraphML":http://graphml.graphdrawing.org file|
65
|cfginterface|Interface (input and output signals) of control flow graph model|
66 64 Sergey Smolov
|gadd|Guarded Actions Decision Diagram (GADD) model|
67
|gadd-graphml|GADD model that is stored in the "GraphML":http://graphml.graphdrawing.org file|
68 57 Sergey Smolov
|conflicts|Conflict model|
69 64 Sergey Smolov
|conflicts-xml|Conflict model that is stored in the XML file|
70
|efsm|Extended finite state machine (EFSM) model|
71
|efsm-graphml|EFSM model that is stored in the "GraphML":http://graphml.graphdrawing.org file|
72 5 Sergey Smolov
|hldd|High-level decision diagram (HLDD) model|
73
|smv|HLDD model stored in the SMV file|
74 35 Mikhail Lebedev
|smv-launch|SMV file execution by the model checker|
75 8 Sergey Smolov
|vhdl-testbench|VHDL testbench|
76 42 Mikhail Lebedev
|verilog-testbench|Verilog testbench|
77 25 Igor Melnichenko
78 43 Sergey Smolov
h2. Engines
79 1 Sergey Smolov
80 64 Sergey Smolov
As it is described above, the tool includes engines for source files & models elaboration.
81 1 Sergey Smolov
Here is the list of all engines of "Retrascope":http://forge.ispras.ru/projects/retrascope:
82 44 Sergey Smolov
|*Name*|*Description*|
83 8 Sergey Smolov
|verilog-parser|Parser of hardware modules descriptions written in Verilog|
84 44 Sergey Smolov
|vhdl-parser|Parser of hardware modules descriptions written in VHDL|
85 64 Sergey Smolov
|cfg-graphml-printer|Printer of CFG model into "GraphML":http://graphml.graphdrawing.org format|
86
|cfg-gadd-transformer|Transformer of CFG model to GADD model|
87
|cfg-cfginterface-extractor|Extractor of interface signals from CFG model|
88
|cfg-random-test-generator|Random test generator for CFG model|
89
|gadd-graphml-printer|Printer of GADD model to "GraphML":http://graphml.graphdrawing.org format|
90
|gadd-efsm-transformer|Transformer of GADD model to EFSM model|
91
|efsm-graphml-printer|Printer of EFSM model to "GraphML":http://graphml.graphdrawing.org format|
92
|efsm-fate-test-generator|The "FATE":http://link.springer.com/article/10.1007%2Fs10836-011-5209-8 test generator from EFSM model|
93
|efsm-test-generator| Generator of tests from EFSM model|
94 8 Sergey Smolov
|efsm-transition-assertion-extractor| Extractor of EFSM transition assertions|
95 64 Sergey Smolov
|efsm-conflict-extractor|Extractor of conflict model from EFSM model|
96 1 Sergey Smolov
|conflict-xml-printer|Printer of conflict model into XML format|
97 64 Sergey Smolov
|gadd-hldd-transformer|Transformer of GADD model into HLDD model or invariant formula|
98
|hldd-smv-printer|Prints the HLDD model into SMV format|
99
|hldd-property-smv-printer|Prints the HLDD model and the generated EFSM-based properties into SMV format|
100
|hldd-spec-smv-printer|Prints the HLDD model and the user-specified properties into SMV format|
101
|hldd-usedef-smv-printer|Prints the HLDD model and the generated conflict-based properties into SMV format|
102 63 Mikhail Lebedev
|smv-modelchecker-launcher|Executes a SMV file by the model checker|
103
|smv-test-parser|Parser of tests from the model checker output|
104
|test-xml-printer|Printer of tests into XML format|
105 42 Mikhail Lebedev
|xml-test-parser|Parser of XML format files keeping the tests|
106
|test-vhdl-testbench-printer|Creates VHDL testbenches on the basis of an HDL source code and generated tests|
107 1 Sergey Smolov
|test-verilog-testbench-printer|Creates Verilog testbenches on the basis of an HDL source code and generated tests|
108 43 Sergey Smolov
109 62 Sergey Smolov
h3. Common options
110 8 Sergey Smolov
111 43 Sergey Smolov
Some options are common for all the tool engines. Here they are:
112 14 Sergey Smolov
|*Option name*|*Description*|*Acceptable value*|
113
|printer-style|Set a printer style|VERILOG/VHDL|
114 62 Sergey Smolov
115
h3. Engine-specific options
116 14 Sergey Smolov
117
Some engines have individual command line options. Here is the list of all engine-specific options:
118
119 1 Sergey Smolov
|*Engine name*|*Option*|*Description*|*Acceptable value*|*Default value*|
120 54 Sergey Smolov
|<any>|disable-backends|Disables all the backends (optimizations) that names are specified|path separator separated names of backends (run "--disable-backends help" for more details)||
121
|<any>|no-backends|Disables all the backends (optimizations) for the engine|||
122 51 Sergey Smolov
|verilog-parser, vhdl-parser|module-name|Toplevel module names|Names of top level HDL modules|path separator separated list of names for more than one input files; file name for only input file|
123 45 Sergey Smolov
|verilog-parser, vhdl-parser|first-file-module|Get top level module name from first HDL file in a list|||
124 53 Sergey Smolov
|verilog-parser|include-path|Path to find included files|Any existing file system path|<none>|
125 48 Sergey Smolov
|cfg-graphml-printer|graphml|Output GraphML file name|Any string name for file that is acceptable by OS|cfg-model.graphml|
126 39 Sergey Smolov
|cfg-random-test-generator|test-len|Length of test sequence to be generated.|Integer number that is greater than zero|<none>|
127 41 Sergey Smolov
|cfg-random-test-generator|test-seed|Random ssed value for test generation.|Integer number|0|
128 39 Sergey Smolov
|cfg-random-test-generator|clk-name|Name of clock signal|Any string value|clk|
129
|cfg-random-test-generator|clk-lvl|Active level of clock signal|Integer number (supposed 1 or 0)|1|
130
|cfg-random-test-generator|rst-name|Name of reset signal|Any string value|rst|
131
|cfg-random-test-generator|rst-lvl|Active level of reset signal|Integer number (supposed 1 or 0)|1|
132
|cfg-random-test-generator|rst-delay|Reset signal delay|Integer number that is greater than 0|1|
133 40 Sergey Smolov
|cfg-random-test-generator|input-values|Input signals and their possible values.|list of "name=[min,max,radix]" expressions|<none>|
134 64 Sergey Smolov
|cfg-gadd-transformer|clk-name|Name of clock variable.|String name of target module variable that is treated as clock|<none>|
135
|gadd-graphml-printer|graphml|Output GraphML file name|Any string name for file that is acceptable by OS|gadd-model.graphml|
136
|gadd-efsm-transformer|state-vars|Names of state-like variables|Any string name or names separated by system separators|<none>|
137 61 Sergey Smolov
|efsm-graphml-printer|detailed|Print EFSM model in a detailed way|When enabled, the engine prints EFSM transition guards and actions|disabled|
138 48 Sergey Smolov
|efsm-graphml-printer|graphml|Output GraphML file name|Any string name for file that is acceptable by OS|efsm-model.graphml|
139 18 Igor Melnichenko
|efsm-fate-test-generator|sequence-length|Amount of vectors in one randomly generated sequence|Any integer (including zero)|a total amount of states|
140
|efsm-fate-test-generator|sequences-number|Amount of sequences in a randomly generated fragment of a test|Any integer (including zero)|A ratio of a total amount of transitions to a total amount of states (rounded to an integer)|
141 1 Sergey Smolov
|efsm-fate-test-generator|loop-limit|Loop iteration limit|Any integer which is greater than zero|1|
142 43 Sergey Smolov
|efsm-fate-plus-test-generator|sequence-length|Amount of vectors in one randomly generated sequence|Any integer (including zero)|a total amount of states|
143
|efsm-fate-plus-test-generator|sequences-number|Amount of sequences in a randomly generated fragment of a test|Any integer (including zero)|A ratio of a total amount of transitions to a total amount of states (rounded to an integer)|
144
|efsm-fate-plus-test-generator|loop-limit|Loop iteration limit|Any integer which is greater than zero|1|
145 1 Sergey Smolov
|efsm-test-generator|loop-limit|Loop iteration limit|Any integer which is greater than zero|1|
146
|efsm-conflict-extractor|search-type|Type of search performed on an extended finite state machine|BFS (Breadth-First Search) or DFS (Depth-First Search)|BFS|
147
|efsm-conflict-extractor|search-depth|Depth of search performed on an extended finite state machine|Any integer which is greater than zero|10|
148
|conflict-xml-printer|output-file|Output XML file name|Any string name for file that is acceptable by OS|conflicts.xml|
149 63 Mikhail Lebedev
|gadd-hldd-transformer|formula-based|Transform a GADD into an invariant|||
150
|gadd-hldd-transformer|collect-usedef|Collect variables' defines/uses|||
151
|gadd-hldd-transformer|delete-unused|If any variable is never used, remove it from the resulting model|||
152
|hldd-property-smv-printer|check-method|Model checking method|ltl-bmc (bounded LTL), ltl-msat (bounded LTL using MathSat, nuXmv only), psl-bmc (bounded PSL), ctl-bdd (symbolic CTL), psl-bdd (symbolic PSL)|ltl-bmc|
153
|hldd-smv-printer / hldd-property-smv-printer / hldd-spec-smv-printer / hldd-usedef-smv-printer|smv-file|Output SMV file name|Any string name for file that is acceptable by OS|model.smv|
154
|hldd-spec-smv-printer|spec-file|User-defined file with specifications for model checking|Any string name for file that is acceptable by OS||
155
|smv-modelchecker-launcher|check-method|Model checking method|ltl-bmc (bounded LTL), ltl-msat (bounded LTL using MathSat, nuXmv only), psl-bmc (bounded PSL), ctl-bdd (symbolic CTL), psl-bdd (symbolic PSL)|ltl-bmc|
156 59 Mikhail Lebedev
|smv-modelchecker-launcher|use-nusmv|Use NuSMV model checker instead of nuXmv|||
157
|smv-modelchecker-launcher|command-file|Specifies a command file for nuXmv|Either a relative or an absolute path to a file|Command file is generated using the src/main/resources/SmvCommandFile.stg template|
158
|smv-modelchecker-launcher|smv-verbosity|Sets the verbosity level of the model checker|Any integer which is greater or equals zero|0|
159 1 Sergey Smolov
|test-xml-printer|file-name|Output XML file name|Any string name for file that is acceptable by OS|test.xml|
160
|test-vhdl-testbench-printer|testbench-dir|A directory where testbenches are saved|Either a relative or an absolute path to a directory. The %%MODULE_NAME%% placeholder is replaced by a processed design's name|testbenches/%MODULE_NAME%|
161 56 Sergey Smolov
|test-vhdl-testbench-printer|overwrite|Overwrite target files if they already exist|||
162 46 Sergey Smolov
|test-verilog-testbench-printer|testbench-dir|A directory where testbenches are saved|Either a relative or an absolute path to a directory. The %%MODULE_NAME%% placeholder is replaced by a processed design's name|testbenches/%MODULE_NAME%|
163 56 Sergey Smolov
|test-verilog-testbench-printer|overwrite|Overwrite target files if they already exist|||
164 15 Sergey Smolov
165 2 Sergey Smolov
h2. Logging
166
167 46 Sergey Smolov
By default, "Retrascope":http://forge.ispras.ru/projects/retrascope prints it's output to the standard error stream. It is also possible to redirect the tool output to the specified file by using <code>--log</code> option.
168 19 Igor Melnichenko
The default logging level is <code>INFO</code>. It is possible to change it by means of the <code>--log-level</code> option. The acceptable values are <code>ERROR</code>, <code>WARNING</code>, <code>INFO</code>, <code>DEBUG</code>.
169 24 Sergey Smolov
170
h2. SMT solver debug mode
171
172 58 Sergey Smolov
By default, "Fortress":https://forge.ispras.ru/projects/solver-api do not store the *.smt2 files through which it communicates with SMT solver. It can be enabled by setting <code>--solver-debug</code> option.