1 | This is release 2.3 of VIS, a system for verifying and synthesizing |
---|
2 | finite-state systems. VIS builds on GLU, a collection of BDD packages |
---|
3 | and low-level utilities. |
---|
4 | |
---|
5 | To build VIS and GLU, you will need |
---|
6 | |
---|
7 | * An ANSI C compiler (gcc will do, as will several versions of cc) |
---|
8 | * GNU Flex version 2.5 or greater |
---|
9 | * GNU Bison version 1.22 or greater |
---|
10 | * GNU's make utility |
---|
11 | * GNU's gzip utility |
---|
12 | * Approximately 90 MB of free disk space for the build of both |
---|
13 | vis and glu |
---|
14 | * Approximately 60 MB of free disk space for the installation |
---|
15 | |
---|
16 | --------------------------------------------------------------------------- |
---|
17 | * Useful Addresses |
---|
18 | |
---|
19 | The most recent version of vl2mv, the Verilog compiler designed to work |
---|
20 | with VIS: |
---|
21 | |
---|
22 | ftp://vlsi.colorado.edu/pub/vis/vl2mv-2.3.tar.gz |
---|
23 | |
---|
24 | The most recent versions of VIS and GLU: |
---|
25 | |
---|
26 | ftp://vlsi.colorado.edu/pub/vis/{glu-2.3.tar.gz,vis-2.3.tar.gz} |
---|
27 | |
---|
28 | The VIS home page, which includes additional documentation: |
---|
29 | |
---|
30 | http://vlsi.colorado.edu/~vis |
---|
31 | |
---|
32 | The most recent version of the GNU tools: |
---|
33 | |
---|
34 | http://www.gnu.org |
---|
35 | |
---|
36 | The most recent version of perl, which is required to run 'visdbgpp': |
---|
37 | |
---|
38 | http://www.cpan.org |
---|
39 | |
---|
40 | The most recent version of expectk, which is required to run 'xsimv': |
---|
41 | |
---|
42 | http://expect.nist.gov |
---|
43 | |
---|
44 | The most recent version of Tcl/Tk, which is required to run 'expectk': |
---|
45 | |
---|
46 | http://www.scriptics.com/ |
---|
47 | |
---|
48 | Optionally, the most recent version of cusp, the SAT solver which |
---|
49 | can be used instead of CirCUs 1.0 (included in VIS) to execute the |
---|
50 | bounded_model_check command: |
---|
51 | |
---|
52 | ftp://vlsi.colorado.edu/pub/CUSP/cusp-1.1.tar.gz |
---|
53 | |
---|
54 | --------------------------------------------------------------------------- |
---|
55 | * Platforms |
---|
56 | |
---|
57 | This is the list of architecture/operating system/compiler |
---|
58 | combinations we have tested. (For installation with compilers marked |
---|
59 | with (*) please refer to the Platform Specific Instructions.) |
---|
60 | |
---|
61 | * Intel ia32 / Linux / gcc, g++ |
---|
62 | * Intel x86_64 / Linux / gcc, g++, icc(*) |
---|
63 | * Intel ia32/x86_64 / Windows XP with Cygwin 1.5.16-1 / gcc, g++(*) |
---|
64 | * Intel ia32 / Mac OS X / gcc(*) |
---|
65 | |
---|
66 | The following platforms are no longer supported, but should still work. |
---|
67 | |
---|
68 | * IBM RISC System/6000 / AIX Version 4.3.3 / gcc(*) |
---|
69 | * Intel ia64 / Linux / gcc |
---|
70 | * Sun Sparc/ Solaris 2.8 / gcc, g++, cc(*) |
---|
71 | |
---|
72 | The following instructions are for the generic build process. Before |
---|
73 | building the tool please refer to the section "Platform Specific |
---|
74 | Instructions". |
---|
75 | |
---|
76 | --------------------------------------------------------------------------- |
---|
77 | * Building VIS |
---|
78 | |
---|
79 | To build a VIS executable for a single operating system: |
---|
80 | |
---|
81 | 1. Download the most recent versions of VIS and GLU from the address |
---|
82 | above into a convenient directory, (e.g., /tmp). |
---|
83 | |
---|
84 | 2. Move to where you would like to build VIS and GLU and unpack the |
---|
85 | distributions: |
---|
86 | |
---|
87 | % cd /home/vis # for example |
---|
88 | % gzip -dc /tmp/glu-2.3.tar.gz | tar xf - |
---|
89 | % gzip -dc /tmp/vis-2.3.tar.gz | tar xf - |
---|
90 | |
---|
91 | 3. Move into the glu-2.3 directory and run configure, which will |
---|
92 | determine some system-specific parameters and create the Makefile: |
---|
93 | |
---|
94 | % cd glu-2.3 |
---|
95 | % ./configure |
---|
96 | |
---|
97 | By default, this will use your system's native compiler. To use gcc, |
---|
98 | |
---|
99 | % ./configure --enable-gcc |
---|
100 | |
---|
101 | (You may want to do this because you don't have the native compiler |
---|
102 | installed or because it is not ANSI.) |
---|
103 | |
---|
104 | Note: For platforms where VIS is not supported for the native compiler, |
---|
105 | the default compiler is set to gcc. |
---|
106 | |
---|
107 | Note: Not all checks in ./configure will return "yes." This is |
---|
108 | normal and should not affect compilation. However, do be concerned |
---|
109 | with any warnings "configure" produces. |
---|
110 | |
---|
111 | Note: Occasionally, configure will make a bad guess or will choose |
---|
112 | a default you do not want. In this case, simply edit the Makefile |
---|
113 | after configure finishes. |
---|
114 | |
---|
115 | Note: You may want to specify parameters to configure -- see the |
---|
116 | "Installing" sections below. |
---|
117 | |
---|
118 | Note: To parallelize the installation procedure, you can begin steps |
---|
119 | 5 and 6 at this point, as long as step 4 completes before step 6 |
---|
120 | (since VIS must link against the GLU library). |
---|
121 | |
---|
122 | Note: The Makefile by default uses the "-g" option for |
---|
123 | compilation. The resultant "vis" executable may be much larger than |
---|
124 | the executable generated without using the "-g" option. Using the |
---|
125 | "-g" option however, provides debugging capabilities. |
---|
126 | |
---|
127 | Note: The following is of interest only to people developing code |
---|
128 | within vis. For full debugging support, specify |
---|
129 | --with-comp-mode=debug. This will turn off optimization, and turn |
---|
130 | on the assertions (sanity checks) in the code. Similarly, |
---|
131 | --with-comp-mode=purify and --with-comp-mode=quantify will link vis |
---|
132 | with IBM Rational's Purify or Quantify tool, if it is installed. |
---|
133 | |
---|
134 | 4. Build the GLU system by running GNU's gmake utility: |
---|
135 | |
---|
136 | % gmake |
---|
137 | |
---|
138 | You may not have GNU make installed on your system under the name |
---|
139 | 'gmake' -- try make. If this fails, you probably need the latest |
---|
140 | version of GNU's make program -- download it from the address |
---|
141 | above. |
---|
142 | |
---|
143 | 5. Move into the vis-2.3 directory and run configure: |
---|
144 | |
---|
145 | % cd ../vis-2.3 |
---|
146 | % ./configure |
---|
147 | |
---|
148 | By default, this will use your system's native compiler. To use gcc, |
---|
149 | |
---|
150 | % ./configure --enable-gcc |
---|
151 | |
---|
152 | (You may wish to do this because you don't have the native compiler |
---|
153 | installed or because it is not ANSI.) |
---|
154 | |
---|
155 | Note: For platforms where VIS is not supported for the native compiler, |
---|
156 | the default compiler is set to gcc. |
---|
157 | |
---|
158 | Note: If you supplied compilation-option flags (e.g., --enable-64) |
---|
159 | to the GLU configure, provide the same to the VIS configure. |
---|
160 | |
---|
161 | Note: Not all checks in ./configure will return "yes." This is |
---|
162 | normal and should not affect compilation. However, do be concerned |
---|
163 | with any warnings "configure" produces. |
---|
164 | |
---|
165 | Note: Occasionally, configure will make a bad guess or will choose |
---|
166 | a default you do not want. In this case, simply edit the Makefile |
---|
167 | after configure finishes. |
---|
168 | |
---|
169 | Note: You may want to specify parameters to configure -- see the |
---|
170 | "Installing" sections below. |
---|
171 | |
---|
172 | Note: You may want to remove the "-g" flag from the make file. See |
---|
173 | under 3. |
---|
174 | |
---|
175 | 6. Build the VIS system by running GNU's gmake utility: |
---|
176 | |
---|
177 | % gmake |
---|
178 | |
---|
179 | This builds an executable "vis" in the current directory. |
---|
180 | |
---|
181 | WARNING: If you are not successful in building a VIS executable, |
---|
182 | double check that you are using Flex version 2.5 or greater (check |
---|
183 | using "flex -V") and GNU Bison version 1.22 or greater (check with |
---|
184 | "bison -V"). Having out-of-date versions of these programs can |
---|
185 | lead to obscure compilation and linking errors. You can download |
---|
186 | the new versions from the GNU FTP address above. |
---|
187 | |
---|
188 | VIS expects to find master.visrc, two .nawk files, and a directory |
---|
189 | of help files in the directory given by the environment variable |
---|
190 | VIS_LIBRARY_PATH. Set this to the "share" directory in the source |
---|
191 | tree: |
---|
192 | |
---|
193 | % setenv VIS_LIBRARY_PATH $cwd/share |
---|
194 | |
---|
195 | 7. OPTIONAL: Verify VIS works by running it on some of the examples |
---|
196 | included in the distribution: |
---|
197 | |
---|
198 | % gmake check |
---|
199 | |
---|
200 | This step finishes in less than five minutes on most machines |
---|
201 | and requires approximately 32 MB of RAM. |
---|
202 | |
---|
203 | --------------------------------------------------------------------------- |
---|
204 | * Installing GLU: |
---|
205 | |
---|
206 | Developers will want to install the GLU library and its associated header |
---|
207 | files in a central area: |
---|
208 | |
---|
209 | To install the GLU library and its header files, type, while in the |
---|
210 | glu-2.3 directory, |
---|
211 | |
---|
212 | % gmake install |
---|
213 | |
---|
214 | By default, this will put libraries and headers in /usr/local/lib |
---|
215 | and /usr/local/include respectively. To choose a different |
---|
216 | location, provide a default prefix when you invoke configure, e.g., |
---|
217 | to install in /projects/glu/bin, etc., use |
---|
218 | |
---|
219 | % ./configure --prefix=/projects/glu |
---|
220 | |
---|
221 | when configuring GLU. Note that "tilde expansion" doesn't work for the |
---|
222 | prefix (i.e., don't specify --prefix=~smith/glu). |
---|
223 | |
---|
224 | --------------------------------------------------------------------------- |
---|
225 | * Installing VIS: |
---|
226 | |
---|
227 | Administrators and people who want to discard the source files after |
---|
228 | building VIS may install VIS in a central area: |
---|
229 | |
---|
230 | To install the VIS executable, library, headers, and help files, type, |
---|
231 | while in the vis-2.3 directory, |
---|
232 | |
---|
233 | % gmake install |
---|
234 | |
---|
235 | By default, this will put binaries, libraries, headers, and help files |
---|
236 | in /usr/local/bin, /usr/local/lib, /usr/local/include, and |
---|
237 | /usr/local/share respectively. To choose a different location, |
---|
238 | provide a default prefix when you invoke configure, e.g., to install |
---|
239 | in /projects/vis/bin, etc., use |
---|
240 | |
---|
241 | % ./configure --prefix=/projects/vis |
---|
242 | |
---|
243 | when configuring VIS. |
---|
244 | |
---|
245 | "gmake clean" removes all the files generated during "gmake." This is |
---|
246 | useful when you want to rebuild VIS with a different prefix, |
---|
247 | different compiler options, etc. |
---|
248 | |
---|
249 | During configure if --prefix option is used, files found in the |
---|
250 | "share" directory will be installed in $prefix/share/vis; otherwise |
---|
251 | they will be installed in /usr/local/share/vis by default. Set the |
---|
252 | environment variable "VIS_LIBRARY_PATH" to the appropriate directory so |
---|
253 | that VIS can find master.visrc, the two .nawk files and the "help" |
---|
254 | directory. The above mentioned files can also be present in a |
---|
255 | different directory, but "VIS_LIBRARY_PATH" should be set to that |
---|
256 | directory. For example, |
---|
257 | |
---|
258 | % setenv VIS_LIBRARY_PATH /projects/vis/common |
---|
259 | |
---|
260 | --------------------------------------------------------------------------- |
---|
261 | * Installation for multiple platforms |
---|
262 | |
---|
263 | To install VIS on multiple operating systems depending on the same |
---|
264 | source tree, see the file "INSTALL" included in the distribution. |
---|
265 | |
---|
266 | In this case, when the build directory is different from the source |
---|
267 | directory, it's necessary to configure VIS to look elsewhere for the |
---|
268 | GLU libraries and headers, e.g., |
---|
269 | |
---|
270 | % ./configure --with-glu-libdir=/tmp/glu-2.2/alpha \ |
---|
271 | --with-glu-incdir=/tmp/glu-2.1/include |
---|
272 | |
---|
273 | Also, make sure that there is an obj/ directory in the directory in |
---|
274 | which you are compiling. See ./configure --help for more information. |
---|
275 | |
---|
276 | --------------------------------------------------------------------------- |
---|
277 | * Selecting a different BDD package |
---|
278 | |
---|
279 | To create VIS with a different BDD library (say cal) than the default |
---|
280 | one (cu), use the following command: |
---|
281 | |
---|
282 | %./configure --with-bdd=cal |
---|
283 | |
---|
284 | The same can be achieved by changing the "BDDPKG" definition in the |
---|
285 | Makefile from "cu" to "cal". |
---|
286 | |
---|
287 | VIS can work with three different BDD packages (cmu, cal, cu), all of |
---|
288 | which are supplied with glu-2.3. However, some commands in VIS are |
---|
289 | available only with the cu BDD package. Please refer to the NEWS file |
---|
290 | for more details. |
---|
291 | |
---|
292 | --------------------------------------------------------------------------- |
---|
293 | To create three versions of VIS, each with different BDD libraries, |
---|
294 | run 'gmake allprods'. This will create vis-cal, vis-cu, and |
---|
295 | vis-cmu. To verify whether all these executables are compiled |
---|
296 | correctly, use 'gmake check-allprods' at the end. |
---|
297 | --------------------------------------------------------------------------- |
---|
298 | |
---|
299 | * Files in the VIS distribution: |
---|
300 | |
---|
301 | README This file. |
---|
302 | |
---|
303 | INSTALL Generic installation instructions for use with configure, |
---|
304 | including instructions for simultaneous multi-platform |
---|
305 | builds. These are not specific to VIS nor GLU, so don't |
---|
306 | follow them word for word. |
---|
307 | |
---|
308 | NEWS Changes since the last version/release. |
---|
309 | |
---|
310 | configure An executable shell script that creates "Makefile" from |
---|
311 | Makefile.in after determining system-specific parameters. |
---|
312 | |
---|
313 | configure.in Autoconf source for generating the configure file. |
---|
314 | Only needed if you want to modify the configure script. |
---|
315 | |
---|
316 | Makefile.in The template Makefile. |
---|
317 | |
---|
318 | vis.1 Unix-style man page documenting vis invocation |
---|
319 | parameters. |
---|
320 | |
---|
321 | xsimv An expectk script to visualize VIS simulation traces. |
---|
322 | |
---|
323 | helpers/ Programs useful during configuration and building |
---|
324 | install-sh Shell scripts used by "gmake install." |
---|
325 | mkinstalldirs |
---|
326 | config.guess |
---|
327 | config.sub |
---|
328 | dependency.make |
---|
329 | |
---|
330 | doc/vis_user.ps |
---|
331 | A user's manual for the VIS system, describing our approach |
---|
332 | to formal verification and how to use the tool. |
---|
333 | |
---|
334 | doc/blifmv.ps Documentation on the BLIF-MV file format, a low-level |
---|
335 | language for specifying designs. |
---|
336 | |
---|
337 | doc/ctl.ps Documentation on the CTL file format, a language |
---|
338 | for specifying properties. |
---|
339 | |
---|
340 | examples/*/ A collection of small systems and properties to be |
---|
341 | verified. Used by "gmake check." |
---|
342 | |
---|
343 | share/master.visrc |
---|
344 | A VIS script designed to be run automatically at |
---|
345 | start-up: contains aliases for commonly used commands |
---|
346 | and some default parameter settings. |
---|
347 | |
---|
348 | share/*.nawk nawk scripts for converting BLIF files to BLIF-MV, |
---|
349 | used by the "read_blif" command. |
---|
350 | |
---|
351 | share/script* Sample scripts. |
---|
352 | |
---|
353 | share/sislib.mv Library of gates used by models translated by vl2mv |
---|
354 | from gate-level Verilog descriptions. |
---|
355 | |
---|
356 | share/visdbgpp A perl script to pretty-print counterexamples produced |
---|
357 | by the model_check and check_invariant commands. |
---|
358 | |
---|
359 | share/help/ ASCII documentation for each VIS command, accessible |
---|
360 | through the "help" command within VIS. |
---|
361 | |
---|
362 | src/*/ Source code and headers for the VIS system. |
---|
363 | |
---|
364 | obj/ Directory where .o files and generated .c files are |
---|
365 | placed during a build. |
---|
366 | |
---|
367 | checkresults/ Directory where tests (i.e., gmake check) are run. |
---|
368 | Results of the tests are placed here. The directory |
---|
369 | is only created when 'gmake check' is run. |
---|
370 | |
---|
371 | --------------------------------------------------------------------------- |
---|
372 | * Platform Specific Instructions |
---|
373 | |
---|
374 | Note: some instructions apply to platforms we no longer support. |
---|
375 | |
---|
376 | ** Little-endian machines: |
---|
377 | |
---|
378 | vis-cal will occasionally fail when compiled with |
---|
379 | --with-comp-mode=debug on little-endian machines like the Alphas and |
---|
380 | the Intel ix86 CPUs. |
---|
381 | |
---|
382 | ** x86_64 machines: |
---|
383 | |
---|
384 | Compilation is possible in both 64 and 32-bit modes. |
---|
385 | |
---|
386 | For 32-bit compilation with gcc, make sure the appropriate libraries |
---|
387 | are installed. On Ubuntu, for instance, you need the multilib-g++ |
---|
388 | package. Configure both glu and vis with --enable-gcc="gcc -m32". |
---|
389 | |
---|
390 | With the Intel compiler (icc), the choice between 64 and 32-bit |
---|
391 | modes is made when the compiler variables are initialized. Once |
---|
392 | that is done, configure both glu and vis with --enable-gcc=icc. |
---|
393 | |
---|
394 | ** Mac OS X: |
---|
395 | |
---|
396 | For correct operation of vis-cmu, uncomment the definition |
---|
397 | of USE_MALLOC_FREE at line 126 of src/mem/memint.h before building glu. |
---|
398 | |
---|
399 | ** Solaris (Sparc and ix86): |
---|
400 | |
---|
401 | If Sun's C compiler is not installed on your system, use gcc |
---|
402 | (./configure --enable-gcc). |
---|
403 | |
---|
404 | Warnings about redefined symbol are harmless, so are the warnings |
---|
405 | that say "end-of-loop code not reached". |
---|
406 | |
---|
407 | The sun cc compiler (Workshop 6 update 1) on ix86 appears to have a |
---|
408 | bug in the optimization routines. The -xO4 an -xO5 compiler options |
---|
409 | will make vis crash in some runs. As a safety precaution, we have |
---|
410 | changed the optimization flag to be -xO3 for all Sun platforms that |
---|
411 | use the cc compiler. You can try higher optimization flags on your |
---|
412 | machine. In general, it is hard to determine cc options that will |
---|
413 | give optimal results on every platform, so it may pay off to play |
---|
414 | atound with the optimization options. |
---|
415 | |
---|
416 | ** MS Windows with Cygwin: |
---|
417 | |
---|
418 | You need Red Hat's Cygwin environment (freely available from |
---|
419 | http://www.cygwin.com) to build GLU and VIS. |
---|
420 | |
---|
421 | With Cygwin the configuration script automatically selects gcc. |
---|
422 | |
---|
423 | ** HP-UX: |
---|
424 | |
---|
425 | Some operating systems on HP machines have a built-in command called |
---|
426 | "vis" under /usr/ucb. In light of this, be careful about the |
---|
427 | definition of your path. |
---|
428 | |
---|
429 | ** AIX: |
---|
430 | |
---|
431 | The configuration script automatically selects gcc. vis-cal |
---|
432 | occasionally produces incorrect results when optimization is turned |
---|
433 | on. If you plan to use vis-cal with AIX, you should configure glu |
---|
434 | and vis with --with-comp-mode=debug. |
---|
435 | |
---|
436 | ** Intel A64: |
---|
437 | |
---|
438 | vis-cal compiled with gcc 3.2.3 crashes when sifting is invoked. |
---|
439 | |
---|
440 | ** DEC Alpha: |
---|
441 | |
---|
442 | Warnings about MIN and MAX are harmless. |
---|
443 | Warnings about Olimit are harmless. They can be gotten rid of by |
---|
444 | increasing the number following Olimit under CFLAGS. |
---|
445 | |
---|
446 | By default, configure uses 32-bit pointers when using DEC's OSF/1 C |
---|
447 | compiler for the Alpha, which is more efficient if your processes |
---|
448 | use less than 2GB. To use 64-bit pointers, invoke configure as follows: |
---|
449 | |
---|
450 | % ./configure --enable-64 |
---|
451 | |
---|
452 | The gcc compiler always compiles with 64-bit pointers. |
---|
453 | |
---|
454 | Note that you must also specify this flag when configuring GLU. |
---|
455 | |
---|
456 | Some machines do not have the program 'om'. In this case, simply |
---|
457 | removing the om flag from LDFLAGS is sufficient to complete |
---|
458 | compilation. |
---|
459 | |
---|
460 | ** IRIX |
---|
461 | |
---|
462 | When compiling VIS with gcc, you may get the error message |
---|
463 | |
---|
464 | gcc.x: cannot specify -o with -c or -S and multiple compilations |
---|
465 | |
---|
466 | If this happens, edit Makefile, and replace the definition of |
---|
467 | VERDATE with the following: |
---|
468 | |
---|
469 | VERDATE := -DCUR_DATE="\"N/A\"" -DCUR_VER="\"$(PRODUCT)-$(VERSION)\"" |
---|
470 | |
---|
471 | --------------------------------------------------------------------------- |
---|
472 | * Verilog front-end |
---|
473 | |
---|
474 | vl2mv, written by Szu-Tsung Cheng, allows one to translate a subset of |
---|
475 | Verilog into blif-MV, the input format of VIS. The most recent |
---|
476 | version of vl2mv can be found in ftp://vlsi.colorado.edu/pub/vl2mv-2.3.tar.gz. |
---|
477 | This version requires glu-2.3 to compile and link. |
---|