PyCUDD is an enhanced Python interface to the Colorado University BDD package, CUDD. Feel free to send in suggestions/bug reports/enhancements! To build PyCUDD, you'll also need SWIG. PyCUDD has been tested on Linux+x86 and Linux+amd64 architectures. PyCUDD is licensed by the University of California under the open source on BSD Version Clause 3 License.

Older versions of PyCUDD have been successfully built on Mac OSX -- details and example Makefiles are available in this TAR gzipped archive.

Download v2.0.3, the current release.



Updated April 16, 2015

Changed the licensing terms to BSD Clause 3 Licensing to simplify external use. Note, this license is more permissive than the previous one but the code is unchanged from 2.0.2. We do hope to have an update in the near future.

Download v2.0.3


Updated Mar 30, 2012

4/20/2012 -- fixed broken link

Download v2.0.2
  •  includes CUDD 2.4.2 with updated Makefiles to support both x86 and x86_64/amd64 architectures
  •  updated SWIG headers to support changes to CUDD API


Download v2.0.1
  •  CUDD extended precision library added via epd.i
  •  rich comparison operators >,<,>=,<= for DdNode based on bddLeq
  •  added method __nonzero__ to DdNode. NOTE: This changes the behaviour of PyCUDD from previous versions. To see how, consider:
   import pycudd
   m = pycudd.DdManager()
   z = m.ReadLogicZero()
   if z: print "True"
   else: print "False"
   would have printed "True" earlier, since the truth value of an object that doesn't define a __len__ or __nonzero__ method is always True. The new version will print "False" as __nonzero__ is defined as != logic zero.
  •  tentative CUDD exception for graceful degradation
  •  stopped using deprecated compatibility C++ headers
  •  trimmed SWIG typemaps
  •  fixed memory leaks in pycudd.cpp
  •  fixed segfault caused by iterator typemaps in utils.i
  •  use %newobject to trigger correct freeing/derefing of DdNodes, rather than the ad-hoc sed script from before
  •  reorganized Makefile, added info for AMD64
  •  modified the documentation system


Download v2.0
  •  wrapped the various decomposition methods ({Approx,Iter,Gen,Var}x{Conj,Disj})
  •  added iterators to iterate over the cubes/nodes/primes of a DdNode using Python for loops
  •  added two-literal clause enumeration (use with CUDD 2.4.0 and above)
  •  added various utility functions to set/modify BDD variable groups (refer ddmanager.i)
  •  new SWIG syntax
  •  beta BREL interface


Steve Haynal - original PyCUDD
Greg Hoover - Mac OSX instructions
Aravind Vijayakumar - former maintainer
Kunal Arya - -- current maintainer
Merritt Miller - -- current maintainer

[High Level Synthesis | CAD | Test | ECE Department | College of Engineering | UCSB]

Page Last Updated: Mar 30, 2012
Comments: merritt at umail dot ucsb dot edu