You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.6 KiB

  1. Release 2.5.0 of Cudd introduces the ability to set timeouts. The
  2. function that is interrupted returns NULL (which the application must
  3. be prepared to handle,) but the BDDs are uncorrupted and the invoking
  4. program can continue to use the manager.
  5. In addition, reordering is now aware of timeouts, so that it gives up
  6. when a timeout is approaching to give the invoking program a chance to
  7. obtain some results.
  8. The response time to the timeout is not immediate, though most of the time
  9. it is well below one second. Checking for timeouts has a small overhead.
  10. In experiments, less than 1% has been observed on average.
  11. Creation of BDD managers with many variables (e.g., tens or hundreds
  12. of thousands) is now much more efficient. Computing small supports of
  13. BDDs when there are many variables is also much more efficient, but
  14. this has been at the cost of separating the function for BDDs and ADDs
  15. (Cudd_Support) from that for ZDDs (Cudd_zddSupport).
  16. The C++ interface has undergone a major upgrade.
  17. The handling of variable gruops in reordering has been much improved.
  18. (Thanks to Arie Gurfinkel for a very detailed bug report!) A handful
  19. of other bugs have been fixed as well.
  20. New Functions:
  21. unsigned long Cudd_ReadStartTime(DdManager *unique);
  22. unsigned long Cudd_ReadElapsedTime(DdManager *unique);
  23. void Cudd_SetStartTime(DdManager *unique, unsigned long st);
  24. void Cudd_ResetStartTime(DdManager *unique);
  25. unsigned long Cudd_ReadTimeLimit(DdManager *unique);
  26. void Cudd_SetTimeLimit(DdManager *unique, unsigned long tl);
  27. void Cudd_UpdateTimeLimit(DdManager * unique);
  28. void Cudd_IncreaseTimeLimit(DdManager * unique, unsigned long increase);
  29. void Cudd_UnsetTimeLimit(DdManager *unique);
  30. int Cudd_TimeLimited(DdManager *unique);
  31. unsigned int Cudd_ReadMaxReorderings (DdManager *dd);
  32. void Cudd_SetMaxReorderings (DdManager *dd, unsigned int mr);
  33. unsigned int Cudd_ReadOrderRandomization(DdManager * dd);
  34. void Cudd_SetOrderRandomization(DdManager * dd, unsigned int factor);
  35. int Cudd_PrintGroupedOrder(DdManager * dd, const char *str, void *data);
  36. int Cudd_EnableOrderingMonitoring(DdManager *dd);
  37. int Cudd_DisableOrderingMonitoring(DdManager *dd);
  38. int Cudd_OrderingMonitoring(DdManager *dd);
  39. DdNode * Cudd_bddExistAbstractLimit(DdManager * manager, DdNode * f, DdNode * cube, unsigned int limit);
  40. DdNode * Cudd_bddIteLimit (DdManager *dd, DdNode *f, DdNode *g, DdNode *h, unsigned int limit);
  41. DdNode * Cudd_bddOrLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
  42. DdNode * Cudd_bddXnorLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
  43. int Cudd_CheckCube (DdManager *dd, DdNode *g);
  44. DdNode * Cudd_bddMaximallyExpand(DdManager *dd, DdNode *lb, DdNode *ub, DdNode *f);
  45. DdNode * Cudd_bddLargestPrimeUnate(DdManager *dd , DdNode *f, DdNode *phaseBdd);
  46. int Cudd_Reserve(DdManager *manager, int amount);
  47. int Cudd_SupportIndices(DdManager * dd, DdNode * f, int **indices);
  48. int Cudd_VectorSupportIndices(DdManager * dd, DdNode ** F, int n, int **indices);
  49. DdNode * Cudd_zddSupport(DdManager * dd, DdNode * f);
  50. Changed prototypes:
  51. unsigned int Cudd_ReadReorderings (DdManager *dd);
  52. ----------------------------------------------------------------------
  53. Release 2.4.2 of Cudd features several bug fixes. The most important
  54. are those that prevented Cudd from making full use of up to 4 GB of
  55. memory when using 32-bit pointers. A handful of bugs were discovered by
  56. Coverity. (Thanks to Christian Stangier!)
  57. This release can be compiled with either 64-bit pointers or 32-bit
  58. pointers on x86_64 platforms if sizeof(long) = sizeof(void *) = 8 and
  59. sizeof(int) = 4. This is known as the LP64 model. For 32-bit pointers,
  60. one usually needs supplementary libraries. On Ubuntu and Debian Linux,
  61. one needs g++-multilib, which can be installed with
  62. "apt-get install g++-multilib."
  63. Added functions
  64. DdNode *Cudd_Inequality (DdManager * dd, int N, int c, DdNode ** x,
  65. DdNode ** y);
  66. DdNode * Cudd_Disequality (DdManager * dd, int N, int c, DdNode ** x,
  67. DdNode ** y);
  68. DdNode * Cudd_bddInterval (DdManager * dd, int N, DdNode ** x,
  69. unsigned int lowerB, unsigned int upperB);
  70. Changed prototypes:
  71. int Cudd_DumpBlif (DdManager *dd, int n, DdNode **f, char
  72. **inames, char **onames, char *mname, FILE *fp, int mv);
  73. int Cudd_DumpBlifBody (DdManager *dd, int n, DdNode **f, char
  74. **inames, char **onames, FILE *fp, int mv);
  75. The additional parameter allows the caller to choose between plain blif
  76. and blif-MV.
  77. ----------------------------------------------------------------------
  78. Release 2.4.1 of Cudd features one major change with respect to previous
  79. releases. The licensing terms are now explicitly stated.