emergency commit
[cl-cudd.git] / distr / README
blobc53383fecb163a075ea3f85208398da35d207424
1 $Id$
3 This directory contains a set of packages that allow you to build a toy
4 application based on the CUDD package.
6 The CUDD package is a package written in C for the manipulation of
7 decision diagrams.  It supports binary decision diagrams (BDDs),
8 algebraic decision diagrams (ADDs), and Zero-Suppressed BDDs (ZDDs).
10 The toy application provided in this kit is called nanotrav and is a
11 simple-minded FSM traversal program. (See the README file and the man
12 page nanotrav.1 in the nanotrav directory for the details.)  It is
13 included so that you can run a sanity check on your installation.
15 INSTALLATION
17 Before you build the libraries and programs, you need to check the
18 Makefile in the top directory.  Go through the definitions contained in the
19 configuration section, and select the desired compiler and compilation
20 flags.  Instructions are provided in the comments of the Makefile.
22 You can always specify the options on the command line.  For instance,
23 on some machines you can build a "fast" version of the program by typing:
25     make DDDEBUG= MTRDEBUG= ICFLAGS=-O2
27 The Makefile supports several targets:
29     make:
30         Creates a "plain" version of the program.
32     make testdddmp:
33         Builds a test program (testdddmp) for BDD loading from and
34         storing to disk. See file README.test in the dddmp directory for
35         how to run the program.
37     make testobj:
38         Builds a test program for the C++ interface. Requires a C++
39         compiler. To run the program, run obj/testobj.
41     make testcudd:
42         Builds a test program for CUDD. To run the program, go to the
43         cudd directory and type "./testcudd -p 2 r7x8.1.mat". The result
44         can be compared to r7x7.1.out.
46     make testmtr:
47         Builds a test program for the mtr package.  To run the program,
48         go to the mtr directory and type "./testmtr -p 1 test.groups".
49     
50     make clean:
51         Cleans directories, but leaves libraries and programs.
53     make distclean:
54         Cleans thoroughly, returning the directories to their pristine
55         state.
57 The following targets are more or less obsolete and may disappear or
58 change in the future.
60     make check_leaks: 
61         Creates a version of the program with the mnemosyne library
62         linked to it. It also builds the mnemalyse program, which
63         helps in finding memory leaks. This target does not work on the
64         IBM RS6000. The makefile also supports purify. To use purify,
65         set the PURE variable in the Makefile, and use the standard
66         target.
68     make optimize_dec:
69         Builds a version of the program using the u-code compiler
70         available on DEC machines (DECstations and Alphas). The newer
71         native compiler on the Alphas does not use u-code, though.
72         Therefore the standard target should be used with it.
74     make lint:
75         Runs lint on all subdirectories except mnemosyne. Creates lint
76         libraries for all object libraries.
78     make tags:
79         Builds ctags-style tag files for all subdirectories except
80         mnemosyne.
82     make all:
83         Makes all of the above, except check_leaks, which is
84         incompatible with a plain "make."
86 All targets, except clean and distclean, will create the include
87 directory if it does not already exist.
89 The Makefile does not compile the SIS interface (cuddBddPort.c and
90 cuddPwPt.c found in subdirectory sis).  To compile the interface, you
91 also need array.h and var_set.h, which are not part of this
92 distribution, but come with SIS.  Detailed instructions on how to
93 integrate the CUDD package in SIS can be found in the documentation
94 (cudd/doc).
96 PLATFORMS
98 This kit has been successfully built on the following configurations:
99     PC (ia32 and ia64) running Linux RedHat with gcc
100     PC (ia32 and ia64) running Linux RedHat with g++
101     PC (ia32) running Linux RedHat with icc
102     PC (ia32) running Linux RedHat with icpc
103     PC (ia64) running Linux RedHat with ecc
104     PC (ia64) running Linux RedHat with ecpc
105     SUN running Solaris 2.8 with cc
106     SUN running Solaris 2.8 with CC
107     SUN running Solaris 2.8 with gcc
108     SUN running Solaris 2.8 with g++
110 Platforms to which I have no longer access and therefore are no longer
111 supported.
113     DECstation running Ultrix with cc
114     DECstation running Ultrix with gcc
115     IBM RS6000 running AIX 3.2.4 with cc (**)
116     IBM RS6000 running AIX 3.2.4 with gcc
117     IBM RS6000 running AIX 3.2.4 with g++
118     SUN running SunOS with gcc
119     DEC Alpha running Digital Unix with cc
120     DEC Alpha running Digital Unix with cxx
121     DEC Alpha running Digital Unix with gcc
122     HP 9000/770 running HP-UX with c89
123     HP 9000/770 running HP-UX with CC
124     HP 9000/770 running HP-UX with gcc
125     HP 9000/770 running HP-UX with g++ (*)
126     SUN running Solaris 2.8 with /usr/ucb/cc
127     PC running Solaris 2.8 with /usr/bin/cc
128     PC running Solaris 2.8 with /usr/ucb/cc
129     PC running Solaris 2.8 with CC
130     PC running Solaris 2.8 with gcc
131     PC running Solaris 2.8 with g++
133 NOTES
134     (*) C programs were compiled with g++, but linked with gcc.
136     (**) Some old versions of the AIX cc compiler have buggy optimizers:
137     Try compiling with -O2 instead of -O3 if the program crashes.
139 Running lint and compiling with gcc -Wall still produces warnings.
140 Running `purify' under Solaris 2.8 generates no messages.
142 CUDD AND WIN32
144 This kit has also been built on a PC running Windows98, Windows NT,
145 and Windows XP using the Cygnus port of the GNU tools
146 (http://www.cygwin.com/.)  This release of CUDD was tested under Windows
147 XP with versions 1.5.5-1 of the Cygwin DLL.  Both gcc and g++ were used.
148 The time measurement functions do not work under Windows98.  You must have
149 bash set up properly for make to work.  See also the instructions in Makefile.
151 SANITY CHECK
153 The directory `nanotrav' contains a very simple application based on the
154 CUDD package. The `nanotrav' directory contains a man page that
155 describes the options nanotrav supports. The files *.blif are sample
156 input files for nanotrav.
158 If you have built the mnemosyne library (make check_leaks), you can do
159     cd mnemosyne
160     make runmtest
161 This does not work on machines running SunOS, but the version of
162 nanotrav that uses mnemosyne may work.
164 DOCUMENTATION
166 Directory cudd-2.4.1/cudd/doc contains HTML documentation for the CUDD
167 package. The recommended starting point is cuddIntro.html. Documentation
168 in both postscript(tm) format and plain text format is also provided.
169 Documentation for the auxiliary libraries (except for the util library)
170 is in the doc subdirectories.
172 FEEDBACK:
174 Send feedback to:
176 Fabio Somenzi
177 University of Colorado at Boulder
178 ECE Dept.
179 Boulder, CO 80309-0425
180 Fabio@Colorado.EDU
181 http://vlsi.colorado.edu/~fabio