abc-master
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "misc/st/st.h"
#include "bdd/cudd/cuddInt.h"
#include "misc/extra/extra.h"
Go to the source code of this file.
Data Structures | |
struct | Extra_SymmInfo_t_ |
struct | Extra_UnateVar_t_ |
struct | Extra_UnateInfo_t_ |
Macros | |
#define | b0 Cudd_Not((dd)->one) |
#define | b1 (dd)->one |
#define | z0 (dd)->zero |
#define | z1 (dd)->one |
#define | a0 (dd)->zero |
#define | a1 (dd)->one |
#define | hashKey1(a, TSIZE) ((ABC_PTRUINT_T)(a) % TSIZE) |
#define | hashKey2(a, b, TSIZE) (((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b) * DD_P1) % TSIZE) |
#define | hashKey3(a, b, c, TSIZE) (((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 ) % TSIZE) |
#define | hashKey4(a, b, c, d, TSIZE) |
#define | hashKey5(a, b, c, d, e, TSIZE) |
#define | ABC_PRB(dd, f) printf("%s = ", #f); Extra_bddPrint(dd,f); printf("\n") |
Typedefs | |
typedef struct Extra_ImageTree_t_ | Extra_ImageTree_t |
typedef struct Extra_ImageTree2_t_ | Extra_ImageTree2_t |
typedef struct Extra_SymmInfo_t_ | Extra_SymmInfo_t |
typedef struct Extra_UnateVar_t_ | Extra_UnateVar_t |
typedef struct Extra_UnateInfo_t_ | Extra_UnateInfo_t |
#define a0 (dd)->zero |
Definition at line 79 of file extraBdd.h.
#define a1 (dd)->one |
Definition at line 80 of file extraBdd.h.
#define ABC_PRB | ( | dd, | |
f | |||
) | printf("%s = ", #f); Extra_bddPrint(dd,f); printf("\n") |
Definition at line 200 of file extraBdd.h.
CFile****************************************************************
FileName [extraBdd.h]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [extra]
Synopsis [Various reusable software utilities.]
Description [This library contains a number of operators and traversal routines developed to extend the functionality of CUDD v.2.3.x, by Fabio Somenzi (http://vlsi.colorado.edu/~fabio/) To compile your code with the library, #include "extra.h" in your source files and link your project to CUDD and this library. Use the library at your own risk and with caution. Note that debugging of some operators still continues.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - June 20, 2005.]
Revision [
]
Definition at line 75 of file extraBdd.h.
#define b1 (dd)->one |
Definition at line 76 of file extraBdd.h.
#define hashKey1 | ( | a, | |
TSIZE | |||
) | ((ABC_PTRUINT_T)(a) % TSIZE) |
Definition at line 83 of file extraBdd.h.
#define hashKey2 | ( | a, | |
b, | |||
TSIZE | |||
) | (((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b) * DD_P1) % TSIZE) |
Definition at line 86 of file extraBdd.h.
#define hashKey3 | ( | a, | |
b, | |||
c, | |||
TSIZE | |||
) | (((((ABC_PTRUINT_T)(a) + (ABC_PTRUINT_T)(b)) * DD_P1 + (ABC_PTRUINT_T)(c)) * DD_P2 ) % TSIZE) |
Definition at line 89 of file extraBdd.h.
#define hashKey4 | ( | a, | |
b, | |||
c, | |||
d, | |||
TSIZE | |||
) |
Definition at line 92 of file extraBdd.h.
#define hashKey5 | ( | a, | |
b, | |||
c, | |||
d, | |||
e, | |||
TSIZE | |||
) |
Definition at line 96 of file extraBdd.h.
#define z0 (dd)->zero |
Definition at line 77 of file extraBdd.h.
#define z1 (dd)->one |
Definition at line 78 of file extraBdd.h.
typedef struct Extra_ImageTree2_t_ Extra_ImageTree2_t |
Definition at line 155 of file extraBdd.h.
typedef struct Extra_ImageTree_t_ Extra_ImageTree_t |
Definition at line 146 of file extraBdd.h.
typedef struct Extra_SymmInfo_t_ Extra_SymmInfo_t |
Definition at line 212 of file extraBdd.h.
typedef struct Extra_UnateInfo_t_ Extra_UnateInfo_t |
Definition at line 276 of file extraBdd.h.
typedef struct Extra_UnateVar_t_ Extra_UnateVar_t |
Definition at line 269 of file extraBdd.h.
DdNode* Extra_bddAndAbstractTime | ( | DdManager * | manager, |
DdNode * | f, | ||
DdNode * | g, | ||
DdNode * | cube, | ||
int | TimeOut | ||
) |
Function********************************************************************
Synopsis [Takes the AND of two BDDs and simultaneously abstracts the variables in cube.]
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. Cudd_bddAndAbstract implements the semiring matrix multiplication algorithm for the boolean semiring.]
SideEffects [None]
SeeAlso [Cudd_addMatrixMultiply Cudd_addTriangle Cudd_bddAnd]
Definition at line 117 of file extraBddTime.c.
DdNode* Extra_bddAndPermute | ( | DdManager * | ddF, |
DdNode * | bF, | ||
DdManager * | ddG, | ||
DdNode * | bG, | ||
int * | pPermute | ||
) |
Function*************************************************************
Synopsis [Computes the AND of two BDD with different orders.]
Description [Derives the result of Boolean AND of bF and bG in ddF. The array pPermute gives the mapping of variables of ddG into that of ddF.]
SideEffects []
SeeAlso []
Definition at line 1090 of file extraBddMisc.c.
AutomaticEnd Function********************************************************************
Synopsis [Computes the conjunction of two BDDs f and g.]
Description [Computes the conjunction of two BDDs f and g. Returns a pointer to the resulting BDD if successful; NULL if the intermediate result blows up.]
SideEffects [None]
SeeAlso [Cudd_bddIte Cudd_addApply Cudd_bddAndAbstract Cudd_bddIntersect Cudd_bddOr Cudd_bddNand Cudd_bddNor Cudd_bddXor Cudd_bddXnor]
Definition at line 83 of file extraBddTime.c.
DdNode* Extra_bddBitsToCube | ( | DdManager * | dd, |
int | Code, | ||
int | CodeWidth, | ||
DdNode ** | pbVars, | ||
int | fMsbFirst | ||
) |
Function********************************************************************
Synopsis [Computes the cube of BDD variables corresponding to bits it the bit-code]
Description [Returns a bdd composed of elementary bdds found in array BddVars[] such that the bdd vars encode the number Value of bit length CodeWidth (if fMsbFirst is 1, the most significant bit is encoded with the first bdd variable). If the variables BddVars are not specified, takes the first CodeWidth variables of the manager]
SideEffects []
SeeAlso []
Definition at line 730 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Changes the polarity of vars listed in the cube.]
Description []
SideEffects []
SeeAlso []
Definition at line 1029 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Checks if the two variables are symmetric.]
Description [Returns 0 if vars are not unate. Return -1/+1 if the var is neg/pos unate.]
SideEffects []
SeeAlso []
Definition at line 338 of file extraBddUnate.c.
Function********************************************************************
Synopsis [Checks the possibility of two variables being symmetric.]
Description [Returns 0 if vars are not symmetric. Return 1 if vars can be symmetric.]
SideEffects []
SeeAlso []
Definition at line 360 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Checks if the two variables are symmetric.]
Description [Returns 0 if vars are not symmetric. Return 1 if vars are symmetric.]
SideEffects []
SeeAlso []
Definition at line 443 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Computes the positive polarty cube composed of the first vars in the array.]
Description []
SideEffects []
SeeAlso []
Definition at line 1001 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Performs the reordering-sensitive step of Extra_bddMove().]
Description []
SideEffects []
SeeAlso []
Definition at line 699 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Creates AND composed of the first nVars of the manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 858 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Creates EXOR composed of the first nVars of the manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 908 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Creates OR composed of the first nVars of the manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 883 of file extraBddMisc.c.
DdNode* Extra_bddEncodingBinary | ( | DdManager * | dd, |
DdNode ** | pbFuncs, | ||
int | nFuncs, | ||
DdNode ** | pbVars, | ||
int | nVars | ||
) |
AutomaticEnd Function********************************************************************
Synopsis [Performs the binary encoding of the set of function using the given vars.]
Description [Performs a straight binary encoding of the set of functions using the variable cubes formed from the given set of variables. ]
SideEffects []
SeeAlso []
Definition at line 138 of file extraBddCas.c.
DdNode* Extra_bddEncodingNonStrict | ( | DdManager * | dd, |
DdNode ** | pbColumns, | ||
int | nColumns, | ||
DdNode * | bVarsCol, | ||
DdNode ** | pCVars, | ||
int | nMulti, | ||
int * | pSimple | ||
) |
Function********************************************************************
Synopsis [Solves the column encoding problem using a sophisticated method.]
Description [The encoding is based on the idea of deriving functions which depend on only one variable, which corresponds to the case of non-disjoint decompostion. It is assumed that the variables pCVars are ordered below the variables representing the solumns, and the first variable pCVars[0] is the topmost one.]
SideEffects []
SeeAlso [Extra_bddEncodingBinary]
Definition at line 184 of file extraBddCas.c.
Function********************************************************************
Synopsis [Find any cube belonging to the on-set of the function.]
Description []
SideEffects []
SeeAlso []
Definition at line 605 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Returns one cube contained in the given BDD.]
Description [This function returns the cube with the smallest bits-to-integer value.]
SideEffects []
Definition at line 645 of file extraBddMisc.c.
DdNode* Extra_bddImageCompute | ( | Extra_ImageTree_t * | pTree, |
DdNode * | bCare | ||
) |
Function*************************************************************
Synopsis [Compute the image.]
Description []
SideEffects []
SeeAlso []
Definition at line 220 of file extraBddImage.c.
DdNode* Extra_bddImageCompute2 | ( | Extra_ImageTree2_t * | pTree, |
DdNode * | bCare | ||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1108 of file extraBddImage.c.
DdNode* Extra_bddImageRead | ( | Extra_ImageTree_t * | pTree | ) |
Function*************************************************************
Synopsis [Reads the image from the tree.]
Description []
SideEffects []
SeeAlso []
Definition at line 292 of file extraBddImage.c.
DdNode* Extra_bddImageRead2 | ( | Extra_ImageTree2_t * | pTree | ) |
Function*************************************************************
Synopsis [Returns the previously computed image.]
Description []
SideEffects []
SeeAlso []
Definition at line 1150 of file extraBddImage.c.
Extra_ImageTree_t* Extra_bddImageStart | ( | DdManager * | dd, |
DdNode * | bCare, | ||
int | nParts, | ||
DdNode ** | pbParts, | ||
int | nVars, | ||
DdNode ** | pbVars, | ||
int | fVerbose | ||
) |
AutomaticEnd Function*************************************************************
Synopsis [Starts the image computation using tree-based scheduling.]
Description [This procedure starts the image computation. It uses the given care set to test-run the image computation and creates the quantification tree by scheduling variable quantifications. The tree can be used to compute images for other care sets without rescheduling. In this case, Extra_bddImageCompute() should be called.]
SideEffects []
SeeAlso []
Definition at line 156 of file extraBddImage.c.
Extra_ImageTree2_t* Extra_bddImageStart2 | ( | DdManager * | dd, |
DdNode * | bCare, | ||
int | nParts, | ||
DdNode ** | pbParts, | ||
int | nVars, | ||
DdNode ** | pbVars, | ||
int | fVerbose | ||
) |
Function*************************************************************
Synopsis [Starts the monolithic image computation.]
Description []
SideEffects []
SeeAlso []
Definition at line 1066 of file extraBddImage.c.
void Extra_bddImageTreeDelete | ( | Extra_ImageTree_t * | pTree | ) |
Function*************************************************************
Synopsis [Delete the tree.]
Description []
SideEffects []
SeeAlso []
Definition at line 273 of file extraBddImage.c.
void Extra_bddImageTreeDelete2 | ( | Extra_ImageTree2_t * | pTree | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1128 of file extraBddImage.c.
int Extra_bddIsVar | ( | DdNode * | bFunc | ) |
Function********************************************************************
Synopsis [Returns 1 if the BDD is the BDD of elementary variable.]
Description []
SideEffects []
SeeAlso []
Definition at line 839 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Moves the BDD by the given number of variables up or down.]
Description []
SideEffects []
SeeAlso [Extra_bddShift]
Definition at line 187 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Collects the nodes under the cut and, for each node, computes the sum of paths leading to it from the root.]
Description [The table returned contains the set of BDD nodes pointed to under the cut and, for each node, the BDD of the sum of paths leading to this node from the root The sums of paths in the table are referenced. CutLevel is the first DD level considered to be under the cut.]
SideEffects []
SeeAlso [Extra_bddNodePaths]
Definition at line 263 of file extraBddCas.c.
int Extra_bddNodePathsUnderCutArray | ( | DdManager * | dd, |
DdNode ** | paNodes, | ||
DdNode ** | pbCubes, | ||
int | nNodes, | ||
DdNode ** | paNodesRes, | ||
DdNode ** | pbCubesRes, | ||
int | CutLevel | ||
) |
Function********************************************************************
Synopsis [Collects the nodes under the cut in the ADD starting from the given set of ADD nodes.]
Description [Takes the array, paNodes, of ADD nodes to start the traversal, the array, pbCubes, of BDD cubes to start the traversal with in each node, and the number, nNodes, of ADD nodes and BDD cubes in paNodes and pbCubes. Returns the number of columns found. Fills in paNodesRes (pbCubesRes) with the set of ADD columns (BDD paths). These arrays should be allocated by the user.]
SideEffects []
SeeAlso [Extra_bddNodePaths]
Definition at line 355 of file extraBddCas.c.
void Extra_bddPermuteArray | ( | DdManager * | manager, |
DdNode ** | bNodesIn, | ||
DdNode ** | bNodesOut, | ||
int | nNodes, | ||
int * | permut | ||
) |
Function********************************************************************
Synopsis [Permutes the variables of the array of BDDs.]
Description [Given a permutation in array permut, creates a new BDD with permuted variables. There should be an entry in array permut for each variable in the manager. The i-th entry of permut holds the index of the variable that is to substitute the i-th variable. The DDs in the resulting array are already referenced.]
SideEffects [None]
SeeAlso [Cudd_addPermute Cudd_bddSwapVariables]
Definition at line 961 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Outputs the BDD in a readable format.]
Description []
SideEffects [None]
SeeAlso []
Definition at line 246 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Outputs the BDD in a readable format.]
Description []
SideEffects [None]
SeeAlso []
Definition at line 302 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Filters the set of variables using the support of the function.]
Description []
SideEffects []
SeeAlso []
Definition at line 181 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Remaps the function to depend on the topmost variables on the manager.]
Description []
SideEffects []
SeeAlso []
Definition at line 145 of file extraBddMisc.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 316 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 361 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 409 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 387 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description [Returns the array of ZDDs with the number equal to the number of vars in the DD manager. If the given var is non-canonical, this array contains the referenced ZDD representing literals in the corresponding EXOR equation.]
SideEffects []
SeeAlso []
Definition at line 497 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 253 of file extraBddAuto.c.
CFile****************************************************************
FileName [extraBddAuto.c]
PackageName [extra]
Synopsis [Computation of autosymmetries.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - September 1, 2003.]
Revision [
]AutomaticStart AutomaticEnd Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 153 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 295 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 274 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 452 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 431 of file extraBddAuto.c.
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 337 of file extraBddAuto.c.
int Extra_bddSuppCheckContainment | ( | DdManager * | dd, |
DdNode * | bL, | ||
DdNode * | bH, | ||
DdNode ** | bLarge, | ||
DdNode ** | bSmall | ||
) |
Function********************************************************************
Synopsis [Checks the support containment.]
Description [This function returns 1 if one support is contained in another. In this case, bLarge (bSmall) is assigned to point to the larger (smaller) support. If the supports are identical, return 0 and does not assign the supports!]
SideEffects []
SeeAlso []
Definition at line 443 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Returns 1 if the support contains the given BDD variable.]
Description []
SideEffects []
SeeAlso []
Definition at line 346 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Returns the number of different vars in two supports.]
Description [Counts the number of variables that appear in one support and does not appear in other support. If the number exceeds DiffMax, returns DiffMax.]
SideEffects []
SeeAlso []
Definition at line 393 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Finds the support as a negative polarity cube.]
Description [Finds the variables on which a DD depends. Returns a BDD consisting of the product of the variables in the negative polarity if successful; NULL otherwise.]
SideEffects [None]
SeeAlso [Cudd_VectorSupport Cudd_Support]
Definition at line 764 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Returns 1 if two supports represented as BDD cubes are overlapping.]
Description []
SideEffects []
SeeAlso []
Definition at line 365 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Returns the size of the support.]
Description []
SideEffects []
SeeAlso []
Definition at line 321 of file extraBddMisc.c.
int Extra_bddVarIsInCube | ( | DdNode * | bCube, |
int | iVar | ||
) |
Function*************************************************************
Synopsis [Checks if the given variable belongs to the cube.]
Description [Return -1 if the var does not appear in the cube. Otherwise, returns polarity (0 or 1) of the var in the cube.]
SideEffects []
SeeAlso []
Definition at line 1056 of file extraBddMisc.c.
void Extra_PrintKMap | ( | FILE * | Output, |
DdManager * | dd, | ||
DdNode * | OnSet, | ||
DdNode * | OffSet, | ||
int | nVars, | ||
DdNode ** | XVars, | ||
int | fSuppType, | ||
char ** | pVarNames | ||
) |
AutomaticEnd Function********************************************************************
Synopsis [Prints the K-map of the function.]
Description [If the pointer to the array of variables XVars is NULL, fSuppType determines how the support will be determined. fSuppType == 0 – takes the first nVars of the manager fSuppType == 1 – takes the topmost nVars of the manager fSuppType == 2 – determines support from the on-set and the offset ]
SideEffects []
SeeAlso []
Definition at line 201 of file extraBddKmap.c.
void Extra_PrintKMapRelation | ( | FILE * | Output, |
DdManager * | dd, | ||
DdNode * | OnSet, | ||
DdNode * | OffSet, | ||
int | nXVars, | ||
int | nYVars, | ||
DdNode ** | XVars, | ||
DdNode ** | YVars | ||
) |
Function********************************************************************
Synopsis [Prints the K-map of the relation.]
Description [Assumes that the relation depends the first nXVars of XVars and the first nYVars of YVars. Draws X and Y vars and vertical and horizontal vars.]
SideEffects []
SeeAlso []
Definition at line 581 of file extraBddKmap.c.
Function*************************************************************
Synopsis [Fast computation of the BDD profile.]
Description [The array to store the profile is given by the user and should contain at least as many entries as there is the maximum of the BDD/ZDD size of the manager PLUS ONE. When we say that the widths of the DD on level L is W, we mean the following. Let us create the cut between the level L-1 and the level L and count the number of different DD nodes pointed to across the cut. This number is the width W. From this it follows the on level 0, the width is equal to the number of external pointers to the considered DDs. If there is only one DD, then the profile on level 0 is always 1. If this DD is rooted in the topmost variable, then the width on level 1 is always 2, etc. The width at the level equal to dd->size is the number of terminal nodes in the DD. (Because we consider the first level #0 and the last level #dd->size, the profile array should contain dd->size+1 entries.) ]
SideEffects [This procedure will not work for BDDs w/ complement edges, only for ADDs and ZDDs]
SeeAlso []
Definition at line 519 of file extraBddCas.c.
void Extra_StopManager | ( | DdManager * | dd | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 223 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Finds variables on which the DD depends and returns them as am array.]
Description [Finds the variables on which the DD depends. Returns an array with entries set to 1 for those variables that belong to the support; NULL otherwise. The array is allocated by the user and should have at least as many entries as the maximum number of variables in BDD and ZDD parts of the manager.]
SideEffects [None]
SeeAlso [Cudd_Support Cudd_VectorSupport Cudd_ClassifySupport]
Definition at line 537 of file extraBddMisc.c.
Extra_SymmInfo_t* Extra_SymmPairsAllocate | ( | int | nVars | ) |
Function********************************************************************
Synopsis [Allocates symmetry information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 207 of file extraBddSymm.c.
Extra_SymmInfo_t* Extra_SymmPairsCompute | ( | DdManager * | dd, |
DdNode * | bFunc | ||
) |
AutomaticStart AutomaticEnd Function********************************************************************
Synopsis [Computes the classical symmetry information for the function.]
Description [Returns the symmetry information in the form of Extra_SymmInfo_t structure.]
SideEffects [If the ZDD variables are not derived from BDD variables with multiplicity 2, this function may derive them in a wrong way.]
SeeAlso []
Definition at line 73 of file extraBddSymm.c.
Extra_SymmInfo_t* Extra_SymmPairsComputeNaive | ( | DdManager * | dd, |
DdNode * | bFunc | ||
) |
Function********************************************************************
Synopsis [Computes the classical symmetry information for the function.]
Description [Uses the naive way of comparing cofactors.]
SideEffects []
SeeAlso []
Definition at line 396 of file extraBddSymm.c.
Extra_SymmInfo_t* Extra_SymmPairsCreateFromZdd | ( | DdManager * | dd, |
DdNode * | zPairs, | ||
DdNode * | bSupp | ||
) |
Function********************************************************************
Synopsis [Creates the symmetry information structure from ZDD.]
Description [ZDD representation of symmetries is the set of cubes, each of which has two variables in the positive polarity. These variables correspond to the symmetric variable pair.]
SideEffects []
SeeAlso []
Definition at line 288 of file extraBddSymm.c.
void Extra_SymmPairsDissolve | ( | Extra_SymmInfo_t * | p | ) |
Function********************************************************************
Synopsis [Deallocates symmetry information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 238 of file extraBddSymm.c.
void Extra_SymmPairsPrint | ( | Extra_SymmInfo_t * | p | ) |
Function********************************************************************
Synopsis [Allocates symmetry information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 257 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Transfers the BDD from one manager into another level by level.]
Description [Transfers the BDD from one manager into another while preserving the correspondence between variables level by level.]
SideEffects [None]
SeeAlso []
Definition at line 112 of file extraBddMisc.c.
DdNode* Extra_TransferPermute | ( | DdManager * | ddSource, |
DdManager * | ddDestination, | ||
DdNode * | f, | ||
int * | Permute | ||
) |
AutomaticEnd Function********************************************************************
Synopsis [Convert a {A,B}DD from a manager to another with variable remapping.]
Description [Convert a {A,B}DD from a manager to another one. The orders of the variables in the two managers may be different. Returns a pointer to the {A,B}DD in the destination manager if successful; NULL otherwise. The i-th entry in the array Permute tells what is the index of the i-th variable from the old manager in the new manager.]
SideEffects [None]
SeeAlso []
Definition at line 87 of file extraBddMisc.c.
DdNode* Extra_TransferPermuteTime | ( | DdManager * | ddSource, |
DdManager * | ddDestination, | ||
DdNode * | f, | ||
int * | Permute, | ||
int | TimeOut | ||
) |
Function********************************************************************
Synopsis [Convert a {A,B}DD from a manager to another with variable remapping.]
Description [Convert a {A,B}DD from a manager to another one. The orders of the variables in the two managers may be different. Returns a pointer to the {A,B}DD in the destination manager if successful; NULL otherwise. The i-th entry in the array Permute tells what is the index of the i-th variable from the old manager in the new manager.]
SideEffects [None]
SeeAlso []
Definition at line 150 of file extraBddTime.c.
Extra_UnateInfo_t* Extra_UnateComputeFast | ( | DdManager * | dd, |
DdNode * | bFunc | ||
) |
CFile****************************************************************
FileName [extraBddUnate.c]
PackageName [extra]
Synopsis [Efficient methods to compute the information about unate variables using an algorithm that is conceptually similar to the algorithm for two-variable symmetry computation presented in: A. Mishchenko. Fast Computation of Symmetries in Boolean Functions. Transactions on CAD, Nov. 2003.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - September 1, 2003.]
Revision [
]AutomaticStart AutomaticEnd Function********************************************************************
Synopsis [Computes the classical symmetry information for the function.]
Description [Returns the symmetry information in the form of Extra_UnateInfo_t structure.]
SideEffects [If the ZDD variables are not derived from BDD variables with multiplicity 2, this function may derive them in a wrong way.]
SeeAlso []
Definition at line 73 of file extraBddUnate.c.
Extra_UnateInfo_t* Extra_UnateComputeSlow | ( | DdManager * | dd, |
DdNode * | bFunc | ||
) |
Function********************************************************************
Synopsis [Computes the classical unateness information for the function.]
Description [Uses the naive way of comparing cofactors.]
SideEffects []
SeeAlso []
Definition at line 293 of file extraBddUnate.c.
Extra_UnateInfo_t* Extra_UnateInfoAllocate | ( | int | nVars | ) |
Function********************************************************************
Synopsis [Allocates unateness information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 155 of file extraBddUnate.c.
Extra_UnateInfo_t* Extra_UnateInfoCreateFromZdd | ( | DdManager * | dd, |
DdNode * | zPairs, | ||
DdNode * | bSupp | ||
) |
Function********************************************************************
Synopsis [Creates the symmetry information structure from ZDD.]
Description [ZDD representation of symmetries is the set of cubes, each of which has two variables in the positive polarity. These variables correspond to the symmetric variable pair.]
SideEffects []
SeeAlso []
Definition at line 227 of file extraBddUnate.c.
void Extra_UnateInfoDissolve | ( | Extra_UnateInfo_t * | p | ) |
Function********************************************************************
Synopsis [Deallocates symmetry information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 178 of file extraBddUnate.c.
void Extra_UnateInfoPrint | ( | Extra_UnateInfo_t * | p | ) |
Function********************************************************************
Synopsis [Allocates symmetry information structure.]
Description []
SideEffects []
SeeAlso []
Definition at line 195 of file extraBddUnate.c.
Function********************************************************************
Synopsis [Finds the variables on which a set of DDs depends.]
Description [Finds the variables on which a set of DDs depends. The set must contain either BDDs and ADDs, or ZDDs. Returns a BDD consisting of the product of the variables if successful; NULL otherwise.]
SideEffects [None]
SeeAlso [Cudd_Support Cudd_ClassifySupport]
Definition at line 572 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Converts a set of variables into a set of singleton subsets.]
Description []
SideEffects []
SeeAlso []
Definition at line 157 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Converts a set of variables into a set of singleton subsets.]
Description []
SideEffects []
SeeAlso []
Definition at line 131 of file extraBddUnate.c.
Function********************************************************************
Synopsis [Returns a singleton-set ZDD containing all variables that are symmetric with the given one.]
Description []
SideEffects []
SeeAlso []
Definition at line 130 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Computes the set of primes as a ZDD.]
Description []
SideEffects []
SeeAlso []
Definition at line 933 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Selects one subset from the set of subsets represented by a ZDD.]
Description []
SideEffects [None]
SeeAlso []
Definition at line 546 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Computes the classical symmetry information as a ZDD.]
Description []
SideEffects []
SeeAlso []
Definition at line 105 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Builds ZDD representing the set of fixed-size variable tuples.]
Description [Creates ZDD of all combinations of variables in Support that is represented by a BDD.]
SideEffects [New ZDD variables are created if indices of the variables present in the combination are larger than the currently allocated number of ZDD variables.]
SeeAlso []
Definition at line 488 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Computes the classical symmetry information as a ZDD.]
Description []
SideEffects []
SeeAlso []
Definition at line 105 of file extraBddUnate.c.
Function********************************************************************
Synopsis [Performs the reordering-sensitive step of Extra_bddChangePolarity().]
Description []
SideEffects []
SeeAlso []
Definition at line 1772 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Performs the recursive step of Extra_bddCheckVarsSymmetric().]
Description [Returns b0 if the variables are not symmetric. Returns b1 if the variables can be symmetric. The variables are represented in the form of a two-variable cube. In case the cube contains one variable (below Var1 level), the cube's pointer is complemented if the variable Var1 occurred on the current path; otherwise, the cube's pointer is regular. Uses additional complemented bit (Hash_Not) to mark the result if in the BDD rooted that this node there is a branch passing though the node labeled with Var2.]
SideEffects []
SeeAlso []
Definition at line 1169 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs the reordering-sensitive step of Extra_bddMove().]
Description []
SideEffects []
SeeAlso []
Definition at line 1128 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_bddReduceVarSet.]
Description [Returns the set of all variables in the given set that are not in the support of the given function.]
SideEffects []
SeeAlso []
Definition at line 1062 of file extraBddSymm.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceCanonVars().]
Description []
SideEffects []
SeeAlso []
Definition at line 1000 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceEquationsNev().]
Description []
SideEffects []
SeeAlso []
Definition at line 1201 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceEquationsPos().]
Description []
SideEffects []
SeeAlso []
Definition at line 1071 of file extraBddAuto.c.
Function********************************************************************
Synopsis [Performs the recursive steps of Extra_bddSpaceFromFunction.]
Description []
SideEffects []
SeeAlso []
Definition at line 562 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceFromFunctionPos().]
Description []
SideEffects []
SeeAlso []
Definition at line 869 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceFromFunctionPos().]
Description []
SideEffects []
SeeAlso []
Definition at line 738 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceFromFunctionPos().]
Description []
SideEffects []
SeeAlso []
Definition at line 1451 of file extraBddAuto.c.
Function*************************************************************
Synopsis [Performs the recursive step of Extra_bddSpaceFromFunctionPos().]
Description []
SideEffects []
SeeAlso []
Definition at line 1333 of file extraBddAuto.c.
void extraDecomposeCover | ( | DdManager * | dd, |
DdNode * | zC, | ||
DdNode ** | zC0, | ||
DdNode ** | zC1, | ||
DdNode ** | zC2 | ||
) |
Function********************************************************************
Synopsis [Finds three cofactors of the cover w.r.t. to the topmost variable.]
Description [Finds three cofactors of the cover w.r.t. to the topmost variable. Does not check the cover for being a constant. Assumes that ZDD variables encoding positive and negative polarities are adjacent in the variable order. Is different from cuddZddGetCofactors3() in that it does not compute the cofactors w.r.t. the given variable but takes the cofactors with respent to the topmost variable. This function is more efficient when used in recursive procedures because it does not require referencing of the resulting cofactors (compare cuddZddProduct() and extraZddPrimeProduct()).]
SideEffects [None]
SeeAlso [cuddZddGetCofactors3]
Definition at line 1217 of file extraBddMisc.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_zddGetSingletons.]
Description [Returns the set of ZDD singletons, containing those positive polarity ZDD variables that correspond to the BDD variables in bVars.]
SideEffects []
SeeAlso []
Definition at line 1001 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_zddGetSingletons.]
Description [Returns the set of ZDD singletons, containing those pos/neg polarity ZDD variables that correspond to the BDD variables in bVars.]
SideEffects []
SeeAlso []
Definition at line 570 of file extraBddUnate.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_zddGetSymmetricVars.]
Description [Returns the set of ZDD singletons, containing those positive ZDD variables that correspond to BDD variables x, for which it is true that bF(x=0) == bG(x=1).]
SideEffects []
SeeAlso []
Definition at line 804 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs the recursive step of Extra_zddSelectOneSubset.]
Description []
SideEffects [None]
SeeAlso []
Definition at line 1419 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_SymmPairsCompute.]
Description [Returns the set of symmetric variable pairs represented as a set of two-literal ZDD cubes. Both variables always appear in the positive polarity in the cubes. This function works without building new BDD nodes. Some relatively small number of ZDD nodes may be built to ensure proper bookkeeping of the symmetry information.]
SideEffects []
SeeAlso []
Definition at line 580 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs the reordering-sensitive step of Extra_zddTupleFromBdd().]
Description [Generates in a bottom-up fashion ZDD for all combinations composed of k variables out of variables belonging to Support.]
SideEffects []
SeeAlso []
Definition at line 1341 of file extraBddSymm.c.
Function********************************************************************
Synopsis [Performs a recursive step of Extra_UnateInfoCompute.]
Description [Returns the set of symmetric variable pairs represented as a set of two-literal ZDD cubes. Both variables always appear in the positive polarity in the cubes. This function works without building new BDD nodes. Some relatively small number of ZDD nodes may be built to ensure proper bookkeeping of the symmetry information.]
SideEffects []
SeeAlso []
Definition at line 385 of file extraBddUnate.c.