mirror of
https://github.com/YosysHQ/abc.git
synced 2026-08-29 09:19:51 +02:00
Cumulative changes of the last two weeks.
This commit is contained in:
@@ -720,6 +720,7 @@ EXTERN DdNode * Cudd_addRoundOff ARGS((DdManager *dd, DdNode *f, int N));
|
||||
EXTERN DdNode * Cudd_addWalsh ARGS((DdManager *dd, DdNode **x, DdNode **y, int n));
|
||||
EXTERN DdNode * Cudd_addResidue ARGS((DdManager *dd, int n, int m, int options, int top));
|
||||
EXTERN DdNode * Cudd_bddAndAbstract ARGS((DdManager *manager, DdNode *f, DdNode *g, DdNode *cube));
|
||||
EXTERN DdNode * Cudd_bddAndAbstractLimit ARGS((DdManager *manager, DdNode *f, DdNode *g, DdNode *cube, unsigned int limit));
|
||||
EXTERN int Cudd_ApaNumberOfDigits ARGS((int binaryDigits));
|
||||
EXTERN DdApaNumber Cudd_NewApaNumber ARGS((int digits));
|
||||
EXTERN void Cudd_ApaCopy ARGS((int digits, DdApaNumber source, DdApaNumber dest));
|
||||
|
||||
@@ -109,6 +109,46 @@ Cudd_bddAndAbstract(
|
||||
} /* end of Cudd_bddAndAbstract */
|
||||
|
||||
|
||||
/**Function********************************************************************
|
||||
|
||||
Synopsis [Takes the AND of two BDDs and simultaneously abstracts the
|
||||
variables in cube. Returns NULL if too many nodes are required.]
|
||||
|
||||
Description [Takes the AND of two BDDs and simultaneously abstracts
|
||||
the variables in cube. The variables are existentially abstracted.
|
||||
Returns a pointer to the result is successful; NULL otherwise.
|
||||
In particular, if the number of new nodes created exceeds
|
||||
<code>limit</code>, this function returns NULL.]
|
||||
|
||||
SideEffects [None]
|
||||
|
||||
SeeAlso [Cudd_bddAndAbstract]
|
||||
|
||||
******************************************************************************/
|
||||
DdNode *
|
||||
Cudd_bddAndAbstractLimit(
|
||||
DdManager * manager,
|
||||
DdNode * f,
|
||||
DdNode * g,
|
||||
DdNode * cube,
|
||||
unsigned int limit)
|
||||
{
|
||||
DdNode *res;
|
||||
unsigned int saveLimit = manager->maxLive;
|
||||
|
||||
manager->maxLive = (manager->keys - manager->dead) +
|
||||
(manager->keysZ - manager->deadZ) + limit;
|
||||
do {
|
||||
manager->reordered = 0;
|
||||
res = cuddBddAndAbstractRecur(manager, f, g, cube);
|
||||
} while (manager->reordered == 1);
|
||||
manager->maxLive = saveLimit;
|
||||
return(res);
|
||||
|
||||
} /* end of Cudd_bddAndAbstractLimit */
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Definition of internal functions */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
@@ -174,7 +174,8 @@ Cudd_Init(
|
||||
|
||||
unique->memused += sizeof(DdNode *) * unique->maxSize;
|
||||
|
||||
unique->bReached = NULL;
|
||||
unique->bFunc = NULL;
|
||||
unique->bFunc2 = NULL;
|
||||
return(unique);
|
||||
|
||||
} /* end of Cudd_Init */
|
||||
|
||||
@@ -439,7 +439,8 @@ struct DdManager { /* specialized DD symbol table */
|
||||
int nvars; /* variables used so far */
|
||||
int threshold; /* for pseudo var threshold value*/
|
||||
#endif
|
||||
DdNode * bReached;
|
||||
DdNode * bFunc;
|
||||
DdNode * bFunc2;
|
||||
};
|
||||
|
||||
typedef struct Move {
|
||||
|
||||
Reference in New Issue
Block a user