External functions and data strucures of the DDI package

static void 
ArrayOpIterate(
  Ddi_OpCode_e  opcode, operation code
  Ddi_ArrayData_t * array, array
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Iterate operation on array entries (accumulate mode used)

Side Effects none

Defined in ddiGeneric.c

static void 
ArrayResize(
  Ddi_ArrayData_t * array, array to be resized
  int  nSizeNew new size of array
)
Resize a DDI array using proper realloc function.

Side Effects none

Defined in ddiArray.c

static Ddi_Generic_t * 
ArraySupp(
  Ddi_ArrayData_t * array 
)
Iterate operation on array entries (accumulate mode used)

Side Effects none

Defined in ddiGeneric.c

Ddi_ArrayData_t * 
DdiArrayAlloc(
  int  length array length
)
Array allocation and initialization.

Side Effects none

See Also Ddi_Free
Defined in ddiArray.c

void 
DdiArrayAppend(
  Ddi_ArrayData_t * array1, first array
  Ddi_ArrayData_t * array2 array to be appended
)
Writes the elements of array2 after the last element of array1.

Side Effects none

Defined in ddiArray.c

Ddi_ArrayData_t * 
DdiArrayCopy(
  Ddi_Mgr_t * dd2, destination manager
  Ddi_ArrayData_t * old array to be duplicated
)
Copy a BDD array to a destination manager.

Side Effects none

Defined in ddiArray.c

Ddi_ArrayData_t * 
DdiArrayDup(
  Ddi_ArrayData_t * old array to be duplicated
)
Duplicates an array. Duplication is recursively applied to array entries. The unused room of the first array is not copied.

Side Effects none

Defined in ddiArray.c

Ddi_Generic_t * 
DdiArrayExtract(
  Ddi_ArrayData_t * array, array
  int  i index
)
Return the pointer to the i-th element array. The object is removed from array and slots after i-th position shifted up.

Side Effects none

Defined in ddiArray.c

void 
DdiArrayFree(
  Ddi_ArrayData_t * array array to be freed
)
Frees a DDI array. Array entries are recursively freed.

Side Effects none

See Also DdiArrayAlloc
Defined in ddiArray.c

void 
DdiArrayInsert(
  Ddi_ArrayData_t * array, destination array
  int  i, position of new element
  Ddi_Generic_t * f, generic object to be inserted
  Ddi_CopyType_e  copy dup/mov selector
)
Insert f in array at i-th position. The inserted item is duplicated and the array slots from i to the end are shifted to make room for the new element.

Side Effects none

See Also DdiArrayWrite
Defined in ddiArray.c

int 
DdiArrayNum(
  Ddi_ArrayData_t * array 
)
Returns the number of elements of the array

Side Effects none

Defined in ddiArray.c

Ddi_Generic_t * 
DdiArrayRead(
  Ddi_ArrayData_t * array, BDDs' array
  int  i index
)
Return the pointer to the i-th element array. The object is NOT duplicated (this should be done externally if required).

Side Effects none

Defined in ddiArray.c

int 
DdiArrayStore(
  Ddi_ArrayData_t * array, array to be stored
  char * ddname, dd name (or NULL)
  char ** vnames, array of variable names (or NULL)
  char ** rnames, array of root names (or NULL)
  int * vauxids, array of aux var ids (or NULL)
  int  mode, storing mode selector
  char * fname, file name
  FILE * fp pointer to the store file
)
This function stores a BDD array using the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects none

See Also Dddmp_cuddBddStore Ddi_BddStore
Defined in ddiArray.c

DdNode ** 
DdiArrayToCU(
  Ddi_ArrayData_t * array 
)
Generate a dynamically allocated array of pointers to CUDD BDDs, one for each entry in the DDI array. Array entries are required to be monolithic. The number of array entries is equal to DdiArrayNum(array), but the array is overdimensioned (by one NULL slot) to make it NULL-terminated.

Side Effects none

See Also Ddi_BddarrayMakeFromCU
Defined in ddiArray.c

void 
DdiArrayWrite(
  Ddi_ArrayData_t * array, destination array
  int  i, position of new element
  Ddi_Generic_t * f, generic object to be written
  Ddi_CopyType_e  copy dup/mov selector
)
Write f in array at i-th position. The inserted item is duplicated. No shift is done. The previous content of array is freed (if not NULL) and overwritten.

Side Effects none

See Also DdiArrayInsert
Defined in ddiArray.c

Ddi_Generic_t * 
DdiDeferredFree(
  Ddi_Generic_t * f block to be freed
)
Schedule free a generic block.

Side Effects none

Defined in ddiGeneric.c

Ddi_Generic_t * 
DdiGenericAlloc(
  Ddi_Type_e  type, type of allocated object
  Ddi_Mgr_t * mgr DDI manager
)
Allocation and initialization of generic DDI block. owner DDI manager always required.

Side Effects none

See Also DdiGenericNew DdiGenericFree
Defined in ddiGeneric.c

int 
DdiGenericBddSize(
  Ddi_Generic_t * f BDD to be duplicated
)
Compute BDD size. Sharing size is used, so shared nodes are counted only once.

Defined in ddiGeneric.c

Ddi_Generic_t * 
DdiGenericCopy(
  Ddi_Mgr_t * ddm, destination manager
  Ddi_Generic_t * f BDD to be duplicated
)
Copy a DDI node to a destination manager

Defined in ddiGeneric.c

void 
DdiGenericDataCopy(
  Ddi_Generic_t * d, destination
  Ddi_Generic_t * s source
)
Copy the content of a DDI node to another one. Freing is done before copy. Data are duplicated

Defined in ddiGeneric.c

Ddi_Generic_t * 
DdiGenericDup(
  Ddi_Generic_t * f BDD to be duplicated
)
Duplicate a DDI node

Defined in ddiGeneric.c

void 
DdiGenericFree(
  Ddi_Generic_t * f block to be freed
)
Frees a generic block.

Side Effects none

Defined in ddiGeneric.c

Ddi_Generic_t * 
DdiGenericOp(
  Ddi_OpCode_e  opcode, operation code
  Ddi_OpType_e  optype, operation type (accumulate/generate)
  Ddi_Generic_t * f, first operand
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Compute operation

Side Effects none

Defined in ddiGeneric.c

Ddi_Bdd_t * 
DdiMetaAndAcc(
  Ddi_Bdd_t * fMeta, 
  Ddi_Bdd_t * gMeta 
)
Operate And between two Meta BDDs

Defined in ddiMeta.c

Ddi_Bdd_t * 
DdiMetaAndExistAcc(
  Ddi_Bdd_t * fMeta, 
  Ddi_Bdd_t * gBdd, 
  Ddi_Varset_t * smooth 
)
Operate And-Exist between Meta BDD and monolithic BDD

Defined in ddiMeta.c

void 
DdiMetaDoCompl(
  Ddi_Meta_t * m 
)
Complement (not) meta BDD. Result accumulated. Operation is achieved by swapping the one/zero arrays

Defined in ddiMeta.c

Ddi_Meta_t * 
DdiMetaDup(
  Ddi_Meta_t * m 
)
Duplicate meta struct

Defined in ddiMeta.c

void 
DdiMetaFree(
  Ddi_Meta_t * m 
)
Free meta struct and pointed arrays: one, zero and dc.

Defined in ddiMeta.c

Ddi_Bdd_t * 
DdiMetaOrAcc(
  Ddi_Bdd_t * fMeta, 
  Ddi_Bdd_t * gMeta 
)
Operate Or between two Meta BDDs

Defined in ddiMeta.c

Ddi_Varset_t * 
DdiMetaSupp(
  Ddi_Meta_t * m 
)
Return support of Meta BDD

Defined in ddiMeta.c

Ddi_Bdd_t * 
DdiMetaSwapVarsAcc(
  Ddi_Bdd_t * fMeta, 
  Ddi_Vararray_t * v1, 
  Ddi_Vararray_t * v2 
)
Operate variable swap

Defined in ddiMeta.c

void 
DdiMgrCheckVararraySize(
  Ddi_Mgr_t * dd source dd manager
)
make checks and resizes arrays if required

Side Effects none

Defined in ddiMgr.c

void 
DdiMgrGarbageCollect(
  Ddi_Mgr_t * ddm 
)
Garbage collect freed nodes (handles) in manager node list

Side Effects none

Defined in ddiMgr.c

void 
DdiMgrMakeVarGroup(
  Ddi_BddMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize, 
  int  method 
)
Create a variable group. Method is one of MTR_FIXED, MTR_DEFAULT

Side Effects none

Defined in ddiMgr.c

int 
DdiMgrReadIntRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of internally referenced DDI handles. Variable array and/or one/zero constants.

Side Effects none

Defined in ddiMgr.c

void 
DdiVarNewFromCU(
  Ddi_BddMgr * ddm, 
  DdNode * varCU 
)
Create a variable

Side Effects none

Defined in ddiVar.c

Ddi_Bdd_t * 
Ddi_BddAndAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compute f & g. Previous content of f is freed and new result is copyed to f. Since f points to a handle, it can be passed by value: the handle is kept when freeing old content. Accumulate type operations are useful to avoid temporary variables and explicit free of old data. The pointer to f (old handle) is returned so that the function may be used as operand for other functions.

Side Effects none

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddAndExistAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * vars 
)
Relational product (Exist(f&g,vars)). New result is accumulated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddAndExist(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * vars 
)
Relational product (Exist(f&g,vars)). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddAnd(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compute f & g. A new result is generated and returned. Input parameters are NOT changed

Side Effects none

See Also Ddi_BddNot Ddi_BddOr
Defined in ddiBdd.c

Ddi_Bddarray_t * 
Ddi_BddArraySetMeta(
  Ddi_Bddarray_t * f 
)
Transform a BDD array to Meta BDD. Result accumulated

Defined in ddiMeta.c

Ddi_Bdd_t * 
Ddi_BddCofexist(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * smooth 
)
Constrain cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddConstrainAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Constrain cofactor. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddConstrain(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Constrain cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddCopy(
  Ddi_Mgr_t * ddm, destination manager
  Ddi_Bdd_t * old BDD to be duplicated
)
Copy a Ddi_Bdd_t to a destination DDI manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond. Bdd is simply duplicated if destination manager is equal to the source one.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddCprojectAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compatible projector. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddCproject(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compatible projector. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddDenseSet(
  Ddi_DenseMethod_e  method, Operation Code
  Ddi_Bdd_t * f, Operand
  int  threshold, 
  int  safe, 
  int  quality, 
  double  hardlimit 
)
Compute the Dense Super or Subset of a Boolean functions

Side Effects none

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddDiffAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean difference (f & !g). Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddDiff(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean difference (f & !g). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddDup(
  Ddi_Bdd_t * f BDD to be duplicated
)
Duplicate a Ddi_Bdd_t. All pointed objects are recursively duplicated. In case of partitioned BDDs, array of partitions are duplicated. Cudd BDDs are referenced.

Defined in ddiBdd.c

int 
Ddi_BddEqual(
  Ddi_Bdd_t * f, first dd
  Ddi_Bdd_t * g second dd
)
Return true (non 0) if the two DDs are equal (f==g). This test is presently limited to monolithic BDDs.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddEvalFree(
  Ddi_Bdd_t * f, expression
  Ddi_Bdd_t * g BDD to be freed
)
Useful for accumulator like expressions (g=f(g,h)), i.e. computing a new value for a variable and the old value must be freed. Avoids using temporary variables. Since the f expression is evalued before passing actual parameters, freeing of g occurs as last operation.
    E.g. 
          g=Ddi_BddEvalFree(Ddi_BddAnd(g,h),g).
    
The "accumulator" style operations introduced from version 2.0 of pdtrav should stongly reduce the need for this technique. The above example can now be written as:
          Ddi_BddAndAcc(g,h).
    

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddExistAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Existential abstraction. New result is accumulated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddExist(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Existential abstraction. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddForallAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Universal abstraction. New result is accumulated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddForall(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Universal abstraction. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddFromMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result accumulated

Defined in ddiMeta.c

int 
Ddi_BddIncluded(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Check for inclusion (f in g). Return non 0 if true. This test requires the second operand (g) to be monolithic, whereas monolithic and disjunctively partitioned forms are allowed for first operand (f).

Defined in ddiBdd.c

int 
Ddi_BddIsMono(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a monolithic BDD.

Side Effects none

See Also Ddi_BddIsPartConj Ddi_BddIsPartDisj
Defined in ddiBdd.c

int 
Ddi_BddIsOne(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is the one constant. This test is presently limited to monolithic BDDs.

Side Effects none

See Also Ddi_BddIsZero
Defined in ddiBdd.c

int 
Ddi_BddIsPartConj(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a conjunctively partitioned BDD.

Side Effects none

See Also Ddi_BddIsMono Ddi_BddIsPartDisj
Defined in ddiBdd.c

int 
Ddi_BddIsPartDisj(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a disjunctively partitioned BDD.

Side Effects none

See Also Ddi_BddIsMono Ddi_BddIsPartConj
Defined in ddiBdd.c

int 
Ddi_BddIsZero(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is the zero constant. This test is presently limited to monolithic BDDs.

Side Effects none

See Also Ddi_BddIsOne
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddIteAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Bdd_t * h 
)
If-Then-Else (ITE(f,g,h)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddIte(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Bdd_t * h 
)
If-Then-Else (ITE(f,g,h)). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddLoad(
  Ddi_BddMgr * dd, dd manager
  int  varmatchmode, variable matching mode
  char  mode, loading mode
  char * filename, file name
  FILE * fp file pointer
)
This function loads only a BDD. If the file contain a BDDs' array, then will be load only the first BDD.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns the pointer of BDD root if succefully loaded, NULL otherwise.

Side Effects None

See Also Ddi_BddStore Dddmp_cuddBddLoad
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakeConst(
  Ddi_Mgr_t * mgr, 
  int  value non 0: true (one), 0: false (zero)
)
Generate a Ddi_Bdd_t constant node (BDD zero or one). The proper constant node within the manager is duplicated.

See Also Ddi_BddToCU DdiBddMakeLiteral
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode * bdd 
)
Build the Ddi_Bdd_t structure (by means of DdiGenericAlloc) from manager and CUDD node. The reference count of the node is increased.

See Also DdiGenericAlloc Ddi_BddToCU
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakeFromMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result generated

Defined in ddiMeta.c

Ddi_Bdd_t * 
Ddi_BddMakeLiteral(
  Ddi_Var_t * v, 
  int  polarity non 0: affirmed (v), 0: complemented literal (!v)
)
Generate a literal from a variable. The literal can be either affirmed or complemented.

Side Effects none

See Also Ddi_Bdd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakeMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result generated

Defined in ddiMeta.c

Ddi_Bdd_t * 
Ddi_BddMakeMono(
  Ddi_Bdd_t * f input function
)
Create a monolithic BDD from a partitioned one

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartConjFromArray(
  Ddi_Bddarray_t * array 
)
Build a conjunctively partitioned BDD from array of partitions

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartDisjFromMono Ddi_BddMakePartDisjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartConjFromMono(
  Ddi_Bdd_t * mono 
)
Build a conjunctively partitioned BDD from a monolithic BDD

See Also Ddi_BddMakePartDisjFromMono Ddi_BddMakePartConjFromArray Ddi_BddMakePartDisjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartConjVoid(
  Ddi_Mgr_t * mgr 
)
Build a conjunctively partitioned BDD with 0 partitions

See Also Ddi_BddMakePartDisjVoid Ddi_BddMakePartConjFromMono Ddi_BddMakePartConjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartDisjFromArray(
  Ddi_Bddarray_t * array 
)
Build a disjunctively partitioned BDD from array of BDDs

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartDisjFromMono Ddi_BddMakePartConjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartDisjFromMono(
  Ddi_Bdd_t * mono 
)
Build a disjunctively partitioned BDD from a monolithic BDD

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartConjFromArray Ddi_BddMakePartDisjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddMakePartDisjVoid(
  Ddi_Mgr_t * mgr 
)
Build a disjunctively partitioned BDD with 0 partitions

See Also Ddi_BddMakePartConjVoid Ddi_BddMakePartDisjFromMono Ddi_BddMakePartDisjFromArray
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNandAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NAND (!(f&g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNand(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NAND (!(f&g)). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NOR (!(f|g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NOR (!(f|g)). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNotAcc(
  Ddi_Bdd_t * f 
)
Boolean NOT. Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddNot(
  Ddi_Bdd_t * f 
)
Boolean NOT. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

int 
Ddi_BddOperation(
  Ddi_Mgr_t * defaultDdMgr, Default DD Manager
  Ddi_Bdd_t ** bddP, BDD Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)

Defined in ddiNew.c

Ddi_Bdd_t * 
Ddi_BddOrAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean OR (f|g). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddOr(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean OR (f|g). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPartExtract(
  Ddi_Bdd_t * f, 
  int  i 
)
Return the i-th partition (conj/disj), and remove it from f.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPartInsertLast(
  Ddi_Bdd_t * f, partitioned BDD
  Ddi_Bdd_t * new new partition
)
Add new partition at last position. Result accumulated

See Also Ddi_BddPartInsert
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPartInsert(
  Ddi_Bdd_t * f, partitioned BDD
  int  i, position of new partition
  Ddi_Bdd_t * new new partition
)
Add new partition at position i. Result accumulated. Higher partitions are shifted.

See Also Ddi_BddPartWrite
Defined in ddiBdd.c

int 
Ddi_BddPartNum(
  Ddi_Bdd_t * f 
)
Read the number of partitions (conj/disj). In case of monolithic BDD, 1 is returned, in case of partitioned BDDs, the number of partitions.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPartRead(
  Ddi_Bdd_t * f, 
  int  i 
)
Read the i-th partition (conj/disj) of f.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPartWrite(
  Ddi_Bdd_t * f, partitioned BDD
  int  i, position of new partition
  Ddi_Bdd_t * new new partition
)
Write new partition at position i. Result accumulated. Same as insert if position is PartNum+1. Otherwise i-th partition is freed and overwritten, so Write is acrually a partition "replace" or "rewrite" operation.

See Also Ddi_BddPartInsert
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPickOneCubeAcc(
  Ddi_Bdd_t * f 
)
Pick one random on-set cube. Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPickOneCube(
  Ddi_Bdd_t * f 
)
Pick one random on-set cube. Result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPickOneMintermAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars set of variables defining the minterm space
)
Pick one random on-set minterm. Result is accumulated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddPickOneMinterm(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars set of variables defining the minterm space
)
Pick one random on-set minterm. Result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

int 
Ddi_BddPrintCubes(
  Ddi_Bdd_t * f, BDD
  Ddi_Varset_t * vars, Variables
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  char * filename, File Name
  FILE * fp Pointer to the store file
)
This function outputs the cubes of a BDD on file. Only monolithic BDDs are supported. The set of variables to be considered is given as input (if NULL the true support is used), to allow generating don't cares, data are sorted by absolute index, NOT by variable ordering. The procedure allows omitting variables in the true support, which are existentially quantified out before generating cubes, to avoid repetitions. A limit on the number of cubes generated can be specified. Use a negative value for no bound.

Side Effects None

Defined in ddiBdd.c

void 
Ddi_BddPrintStats(
  Ddi_Bdd_t * f, 
  FILE * fp 
)
Prints Statistics of a BDD

Side Effects none

Defined in ddiBdd.c

int 
Ddi_BddPrintSupportAndCubes(
  Ddi_Bdd_t * f, BDD
  int  numberPerRow, Number of Names Printed on a Single Row
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  char * filename, File Name
  FILE * fp Pointer to the store file
)
Use a negative value to indicate no bound in the number of printed cubes.

Side Effects none

Defined in ddiUtil.c

void 
Ddi_BddPrint(
  Ddi_Bdd_t * f, 
  FILE * fp 
)
Prints a BDD

Side Effects none

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddRelMakeFromArray(
  Ddi_Bddarray_t * Fa, array of functions
  Ddi_Vararray_t * Va array of range variables
)
Generate a Ddi_Bdd_t relation from array of functions. Relation is generated considering function variables domain, and range variables as co-domain. I-th range variable corresponds to i-th function.

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddRestrictAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Restrict cofactor. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddRestrict(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Restrict cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSetMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result accumulated

Defined in ddiMeta.c

Ddi_Bdd_t * 
Ddi_BddSetMono(
  Ddi_Bdd_t * f input function
)
Convert a BDD to monolitic (if required). Result accumulated

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSetPartConj(
  Ddi_Bdd_t * f 
)
Convert a BDD to conjunctively partitioned (if required). Result accumulated

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSetPartDisj(
  Ddi_Bdd_t * f 
)
Convert a BDD to disjunctively partitioned (if required). Result accumulated

Defined in ddiBdd.c

int 
Ddi_BddSize(
  Ddi_Bdd_t * f 
)
Return BDD size (total amount of BDD nodes) of f. In case of partitioned or meta BDDs the sharing size is returned (shared subgraphs are counted once).

Defined in ddiBdd.c

int 
Ddi_BddStore(
  Ddi_Bdd_t * f, BDD
  char * ddname, dd name (or NULL)
  char  mode, storing mode
  char * filename, file name
  FILE * fp pointer to the store file
)
This function stores only a BDD (not a BDD array). The BDD is stored in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects None

See Also Ddi_BddLoad Dddmp_cuddBddStore
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSuppAttach(
  Ddi_Bdd_t * f 
)
The support of f is the set of variables f depends on. This function generates the support of f and hooks it to proper field of f, so that no BDD traversal is done in further calls of Ddi_BddSupp.

Side Effects support is attached to f

See Also Ddi_BddSupp Ddi_BddSuppDetach
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSuppDetach(
  Ddi_Bdd_t * f 
)
Detach (and free) support attached to f. Return pointer to f

Side Effects none

See Also Ddi_BddSupp Ddi_BddSuppAttach
Defined in ddiBdd.c

Ddi_Varset_t * 
Ddi_BddSuppRead(
  Ddi_Bdd_t * f 
)
Read the support attached to a Bdd. The support is not duplicated, as would Ddi_BddSupp with attached support. Return NULL if support is not attached.

Side Effects none

See Also Ddi_BddSupp Ddi_BddSuppAttach
Defined in ddiBdd.c

Ddi_Varset_t * 
Ddi_BddSupp(
  Ddi_Bdd_t * f 
)
The support of f is the set of variables f depends on. This function has no "accumulated" version, but a related function (Ddi_BddSuppAttach) which attaches the support to a function, so that no BDD traversal is done in further calls of Ddi_BddSupp.

Side Effects none

See Also Ddi_BddSuppAttach
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSwapVarsAcc(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap x and y variables in f. Result is accumulated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddSwapVars(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap x and y variables in f. New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_BddNode * 
Ddi_BddToCU(
  Ddi_Bdd_t * f 
)
Convert a DDI function to the corresponding Cudd Node. This is done by reading the proper field (pointing to a cudd node) in the DDI node

See Also Ddi_BddMakeFromCU
Defined in ddiBdd.c

Ddi_Var_t * 
Ddi_BddTopVar(
  Ddi_Bdd_t * f 
)
Return the top BDD variable of f

Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddXnorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XNOR (!(f^g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddXnor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XNOR (!(f^g)). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddXorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XOR (f^g). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc
Defined in ddiBdd.c

Ddi_Bdd_t * 
Ddi_BddXor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XOR (f^g). New result is generated

Side Effects none

See Also Ddi_BddAnd
Defined in ddiBdd.c

Ddi_Bddarray_t * 
Ddi_BddarrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  length array length
)
Allocate a new array of BDDs. The array slots are initialized with NULL pointers, so further Write operations are required.

Side Effects none

See Also Ddi_BddarrayWrite
Defined in ddiBddarray.c

void 
Ddi_BddarrayAppend(
  Ddi_Bddarray_t * array1, first array
  Ddi_Bddarray_t * array2 array to be appended
)
Append the elements of array2 at the end of array1. As all array write/insert operations, new entries are duplicated.

Side Effects none

See Also Ddi_BddarrayWrite Ddi_BddarrayInsert
Defined in ddiBddarray.c

void 
Ddi_BddarrayClear(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos position of element to be cleared
)
clear array at given position (BDD freed and replaced by NULL)

Side Effects none

See Also Ddi_BddarrayRead
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Bddarray_t * old array of BDDs
)
Copy an array of BDDs to a destination manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_BddarrayDup
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayDup(
  Ddi_Bddarray_t * old array to be duplicated
)
Duplicate an array of BDDs

Side Effects none

See Also Ddi_BddarrayAlloc
Defined in ddiBddarray.c

Ddi_Bdd_t * 
Ddi_BddarrayExtract(
  Ddi_Bddarray_t * array, BDD array
  int  i position
)
Extract the BDD at i-th position in array. The extracted BDD is removed from the array and the following entries are shifted up.

See Also Ddi_BddarrayInsert
Defined in ddiBddarray.c

void 
Ddi_BddarrayInsertLast(
  Ddi_Bddarray_t * array, array of BDDs
  Ddi_Bdd_t * f BDD to be written
)
Insert a BDD in array at last (new) position

Side Effects none

See Also Ddi_BddarrayExtract
Defined in ddiBddarray.c

void 
Ddi_BddarrayInsert(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos, position of new element
  Ddi_Bdd_t * f BDD to be written
)
Insert a BDD in array at given position. Following entries are shifted down. The written BDD (f) is duplicated

Side Effects none

See Also Ddi_BddarrayExtract
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayLoad(
  Ddi_BddMgr * dd, dd manager
  char ** vnames, variable names
  int * vauxids, variable auxids
  int  mode, storing mode selector
  char * file, name file
  FILE * fp file pointer
)
This function loads a BDDs'array.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns the pointer of array if succefully loaded, NULL otherwise.

Side Effects none

See Also Dddmp_cuddBddLoad Ddi_BddLoad
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayMakeFromBddPart(
  Ddi_Bdd_t * part 
)
Generate a BDD array from partitions of partitioned BDD

Side Effects none

See Also Ddi_BddarrayToCU
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode ** array, 
  int  n 
)
Generate a BDD array from CUDD BDDs. The function allocates a Ddi_Bddarray_t structure, then write monolithic components to proper array slots.

Side Effects none

See Also Ddi_BddarrayToCU
Defined in ddiBddarray.c

Ddi_Bddarray_t * 
Ddi_BddarrayMakeMeta(
  Ddi_Bddarray_t * f 
)
Transform a BDD array to Meta BDD. Result generated

Defined in ddiMeta.c

int 
Ddi_BddarrayNum(
  Ddi_Bddarray_t * array 
)
Return the number of BDDs (entries) in array

Side Effects none

Defined in ddiBddarray.c

int 
Ddi_BddarrayOperation(
  Ddi_Mgr_t * defaultDdMgr, Default BDD Manager
  Ddi_Bddarray_t ** bddArrayP, BDD Array Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)

Defined in ddiNew.c

int 
Ddi_BddarrayPrintSupportAndCubes(
  Ddi_Bddarray_t * fArray, BDD Array
  int  numberPerRow, Number of Names Printed on a Single Row
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  int  reverse, Reverse Order if 1
  char * filename, File Name
  FILE * fp Pointer to the store file
)
Use a negative value to indicate no bound in the number of printed cubes.

Side Effects none

Defined in ddiUtil.c

Ddi_Bdd_t * 
Ddi_BddarrayRead(
  Ddi_Bddarray_t * array, BDD array
  int  i position
)
Read the BDD at i-th position in array. As all read operations no data duplication is done, so the returned BDD should be duplicated if further manipulations are required on it.

Side Effects none

See Also Ddi_BddarrayWrite
Defined in ddiBddarray.c

void 
Ddi_BddarrayRemove(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos position of element to be cleared
)
Remove array entry at given position. This operation is equivalent to extract + free of extracted BDD.

Side Effects none

See Also Ddi_BddarrayExtract Ddi_BddarrayClear
Defined in ddiBddarray.c

int 
Ddi_BddarraySize(
  Ddi_Bddarray_t * array 
)
Count the numbers of BDD nodes in a BDD array. Shared nodes are counted once.

Side Effects none

See Also Ddi_BddSize
Defined in ddiBddarray.c

int 
Ddi_BddarrayStore(
  Ddi_Bddarray_t * array, array to be stored
  char * ddname, dd name (or NULL)
  char ** vnames, array of variable names (or NULL)
  char ** rnames, array of root names (or NULL)
  int * vauxids, array of aux var ids (or NULL)
  int  mode, storing mode selector
  char * fname, file name
  FILE * fp pointer to the store file
)
This function stores a BDD array using the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects none

See Also Dddmp_cuddBddStore Ddi_BddStore
Defined in ddiBddarray.c

Ddi_Varset_t ** 
Ddi_BddarraySuppArray(
  Ddi_Bddarray_t * fArray array of function
)
OLD(pdt-1). Return a vector of supports of BDD array elements. Should be replaced by Varsetarray usage

Side Effects none

Defined in ddiBddarray.c

Ddi_Varset_t * 
Ddi_BddarraySupp(
  Ddi_Bddarray_t * array BDDs'array
)
Returns a var-set representing the global support of the array

Defined in ddiBddarray.c

DdNode ** 
Ddi_BddarrayToCU(
  Ddi_Bddarray_t * array 
)
Generate a dynamically allocated array of pointers to CUDD BDDs, one for each entry in the DDI array. Array entries are required to be monolithic. The number of array entries is equal to Ddi_BddarrayNum(array), but the array is overdimensioned (by one NULL slot) to make it NULL-terminated.

Side Effects none

See Also Ddi_BddarrayMakeFromCU
Defined in ddiBddarray.c

void 
Ddi_BddarrayWrite(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos, position of new element
  Ddi_Bdd_t * f BDD to be written
)
Write a BDD in array at given position. Previous non NULL entry is freed. The written BDD (f) is duplicated

Side Effects none

See Also Ddi_BddarrayRead
Defined in ddiBddarray.c

double 
Ddi_CountMinterm(
  Ddi_Bdd_t * f, 
  int  nvar 
)
Check for inclusion (f in g). Return non 0 if true. This test requires the second operand (g) to be monolithic, whereas monolithic and disjunctively partitioned forms are allowed for first operand (f).

Defined in ddiBdd.c

char * 
Ddi_DenseMethodEnum2String(
  Ddi_DenseMethod_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none

Defined in ddiUtil.c

Ddi_DenseMethod_e 
Ddi_DenseMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none

Defined in ddiUtil.c

Ddi_Expr_t * 
Ddi_ExprBoolMake(
  Ddi_Mgr_t * mgr, 
  Ddi_Expr_t * op1, 
  Ddi_Expr_t * op2 
)
Build a Boolean Ddi_Expr_t from given sub-expressions.

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString
Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprCtlMake(
  Ddi_Mgr_t * mgr, 
  int  opcode, 
  Ddi_Expr_t * op1, 
  Ddi_Expr_t * op2, 
  Ddi_Expr_t * op3 
)
Build a Ctl Ddi_Expr_t from given sub-expressions.

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString
Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprDup(
  Ddi_Expr_t * f expression to be duplicated
)
Duplicate a Ddi_Expr_t. Duplication is propagated recursively.

Defined in ddiExpr.c

int 
Ddi_ExprIsTerminal(
  Ddi_Expr_t * e 
)
Return true (non 0) if expression is terminal (Bdd or string).

Side Effects none

Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprLoad(
  Ddi_BddMgr * dd, dd manager
  char * filename, file name
  FILE * fp file pointer
)
Load EXPRESSION from file

Side Effects None

Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprMakeFromBdd(
  Ddi_Bdd_t * f 
)
Build the Ddi_Expr_t structure (by means of DdiGenericAlloc) from BDD handle.

See Also DdiGenericAlloc Ddi_ExprToBdd
Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprMakeFromString(
  Ddi_Mgr_t * mgr, 
  char * s 
)
Build a Ddi_Expr_t from a given string.

Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprPrint(
  Ddi_Expr_t * f, 
  FILE * fp 
)
Print a Ddi_Expr_t

Defined in ddiExpr.c

int 
Ddi_ExprReadOpcode(
  Ddi_Expr_t * e 
)
Read expression opcode

Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprReadSub(
  Ddi_Expr_t * e, 
  int  i 
)
Rear sub-expression at given position

Defined in ddiExpr.c

int 
Ddi_ExprSubNum(
  Ddi_Expr_t * e 
)
Read the number of sub-expressions. In case of terminal expressioins (Bdd or String), 0 is returned.

Defined in ddiExpr.c

Ddi_Bdd_t * 
Ddi_ExprToBdd(
  Ddi_Expr_t * e 
)
Retrieve the Bdd associated to the expression

See Also Ddi_ExprMakeFromBdd
Defined in ddiExpr.c

char * 
Ddi_ExprToString(
  Ddi_Expr_t * e 
)
Retrieve the string associated to the expression

See Also Ddi_ExprMakeFromString
Defined in ddiExpr.c

Ddi_Expr_t * 
Ddi_ExprWriteSub(
  Ddi_Expr_t * e, 
  int  pos, 
  Ddi_Expr_t * op 
)
Write operand sub-expression to expression at given position. Sub-expression is added if not present, rewritten (by freeing the old one) if present at specified position

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString
Defined in ddiExpr.c

Ddi_Generic_t * 
Ddi_GenericDup(
  Ddi_Generic_t * f 
)
Generic dup

Side Effects none

Defined in ddiGeneric.c

void 
Ddi_GenericFree(
  Ddi_Generic_t * f block to be freed
)
Free the content of a generic DDI node

Defined in ddiGeneric.c

void 
Ddi_GenericLock(
  Ddi_Generic_t * f 
)
Lock DDI node so that cannot be freed unless unlocked. Used as a protection mechanism for internal objects (array entries, partitions, ...

See Also Ddi_GenericUnlock
Defined in ddiGeneric.c

Ddi_Generic_t * 
Ddi_GenericOpAcc(
  Ddi_OpCode_e  opcode, operation code
  Ddi_Generic_t * f, first operand
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Compute generic operation. Result accumulated

Side Effects none

Defined in ddiGeneric.c

Ddi_Generic_t * 
Ddi_GenericOp(
  Ddi_OpCode_e  opcode, operation code
  Ddi_Generic_t * f, first operand
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Compute generic operation. Result generated

Side Effects none

Defined in ddiGeneric.c

Ddi_Code_e 
Ddi_GenericReadCode(
  Ddi_Generic_t * f 
)
called through Ddi_ReadCode.

Side Effects Ddi_ReadCode

Defined in ddiGeneric.c

Ddi_Mgr_t * 
Ddi_GenericReadMgr(
  Ddi_Generic_t * f 
)
called through Ddi_ReadMgr.

Side Effects Ddi_ReadMgr

Defined in ddiGeneric.c

char * 
Ddi_GenericReadName(
  Ddi_Generic_t * f 
)
called through Ddi_ReadName.

Side Effects Ddi_ReadName

Defined in ddiGeneric.c

void 
Ddi_GenericSetName(
  Ddi_Generic_t * f, block to be freed
  char * name 
)
Set name field of DDI node

Defined in ddiGeneric.c

void 
Ddi_GenericUnlock(
  Ddi_Generic_t * f 
)
Unlock DDI node so that can be freed again.

See Also Ddi_GenericLock
Defined in ddiGeneric.c

Ddi_Var_t * 
Ddi_IthVar(
  Ddi_BddMgr * ddm, 
  int  index 
)
Return the variable of a given index

Side Effects none

See Also Ddi_VarIndex Ddi_VarAtLevel
Defined in ddiVar.c

int 
Ddi_MetaActive(
  Ddi_Mgr_t * ddm 
)
Return true if Meta handling active (Ddi_MetaInit done)

Defined in ddiMeta.c

void 
Ddi_MetaInit(
  Ddi_Mgr_t * ddm, 
  Ddi_Meta_Method_e  method, 
  Ddi_Bdd_t * ref, 
  Ddi_Varset_t * firstGroup, 
  int  sizeMin 
)
Initialize Meta BDD handling in DDI manager

Defined in ddiMeta.c

void 
Ddi_MetaQuit(
  Ddi_Mgr_t * ddm 
)
Close Meta BDD handling in DDI manager. This enables further opening of Meta BDD management with different method/parameters

Defined in ddiMeta.c

void 
Ddi_MgrAlign(
  Ddi_Mgr_t * dd, dd manager to be aligned
  Ddi_Mgr_t * ddRef reference dd manager
)
Aligns the order of two managers.

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrAutodynResume(
  Ddi_Mgr_t * dd dd manager
)
Resume autodyn if suspended.

Side Effects none

See Also Ddi_MgrInit
Defined in ddiMgr.c

void 
Ddi_MgrAutodynSuspend(
  Ddi_Mgr_t * dd dd manager
)
Suspend autodyn if active.

Side Effects none

See Also Ddi_MgrInit
Defined in ddiMgr.c

int 
Ddi_MgrCheckExtRef(
  Ddi_Mgr_t * ddm, 
  int  n 
)
Check number of externally referenced DDI handles. This is the numer of generic nodes (allocated - freed), diminished by the number of locked nodes + 3 (2 constants + variable array). Return 0 upon failure.

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrConsistencyCheck(
  Ddi_Mgr_t * ddm 
)
make checks on DDI manager. Return 0 for failure

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrCreateGroups2(
  Ddi_Mgr_t * dd, manager
  Ddi_Vararray_t * vfix, first array
  Ddi_Vararray_t * vmov first array
)
Create groups of 2 variables: variables of corresponding indexes in vfix and vmov are coupled. If vmov[i

Side Effects none

Defined in ddiMgr.c

Ddi_Mgr_t * 
Ddi_MgrDup(
  Ddi_Mgr_t * dd source dd manager
)
Creates a copy of a DdManager.

Side Effects none

See Also Ddi_MgrQuit
Defined in ddiMgr.c

Ddi_Mgr_t * 
Ddi_MgrInit(
  char * ddiName, Name of the DDI structure
  DdManager * CUMgr, Input CD manager. Created if NULL
  unsigned int  nvar, Initial Number of Variables
  unsigned int  numSlots, Initial Size of Unique Table
  unsigned int  cacheSize, Initial Size of Computed Table (cache)
  unsigned long  memorySizeMax Max size of Memory
)
Creates a DdManager.

Side Effects none

See Also Ddi_MgrQuit
Defined in ddiMgr.c

int 
Ddi_MgrOperation(
  Ddi_Mgr_t ** ddMgrP, DD Manager Pointer
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlagP Type of the Pointer Returned
)

Side Effects To be congruent operationFlag should be a Pdtutil_MgrOp_t type, and returnFlag of Pdtutil_MgrRet_t type.

Defined in ddiMgr.c

int 
Ddi_MgrOrdWrite(
  Ddi_Mgr_t * dd, Decision Diagram Manager
  char * filename, File Name
  FILE * fp, Pointer to Store File
  Pdtutil_VariableOrderFormat_e  ordFileFormat File Format
)
This function stores the variable ordering of a dd manager. Variable names and aux ids are used.

Side Effects None

Defined in ddiMgr.c

void 
Ddi_MgrPeakProdLocalReset(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Reset peak product local

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrPeakProdUpdate(
  Ddi_Mgr_t * ddiMgr, Decision Diagram Interface Manager
  int  size 
)
Update peak product stats

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrPrintAllocStats(
  Ddi_Mgr_t * ddm, 
  FILE * fp 
)
Print DDI manager allocation statistics

Defined in ddiMgr.c

void 
Ddi_MgrPrintExtRef(
  Ddi_Mgr_t * ddm, 
  int  minNodeId 
)
print ids of external refs

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrPrintStats(
  Ddi_Mgr_t * dd source dd manager
)
Prints on standard outputs statistics on a DD manager

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrQuit(
  Ddi_Mgr_t * dd dd manager
)
Close a DdManager.

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadCurrNodeId(
  Ddi_Mgr_t * dd source dd manager
)
Reads currend node id field

Side Effects none

Defined in ddiMgr.c

unsigned int 
Ddi_MgrReadDynordThresh(
  Ddi_Mgr_t * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadExtBddRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced BDD handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadExtBddarrayRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced BDD array handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadExtRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced DDI handles. This is the numer of generic nodes (allocated - freed), diminished by the number of locked nodes + 3 (2 constants + variable array).

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadExtVarsetRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced varset handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none

Defined in ddiMgr.c

DdManager * 
Ddi_MgrReadMgrCU(
  Ddi_Mgr_t * dd source dd manager
)
Reads the Cudd Manager

Side Effects none

Defined in ddiMgr.c

Ddi_Bdd_t * 
Ddi_MgrReadOne(
  Ddi_Mgr_t * dd source dd manager
)
Reads one constant

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadOrdNamesAuxids(
  Ddi_Mgr_t * dd, Manager
  char * filename, File Name
  FILE * fp, Pointer to the Store File
  Pdtutil_VariableOrderFormat_e  ordFileFormat File Format
)
This function reads the variable ordering of a dd manager. Existing variables with names in the ordering are shuffled to match the ordering.

Side Effects None

Defined in ddiMgr.c

int 
Ddi_MgrReadPeakProdGlobal(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read peak product global

Side Effects none

Defined in ddiMgr.c

int 
Ddi_MgrReadPeakProdLocal(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read peak product local

Side Effects none

Defined in ddiMgr.c

int * 
Ddi_MgrReadVarauxids(
  Ddi_Mgr_t * dd source dd manager
)
Reads the variable auxiliary ids

Side Effects none

Defined in ddiMgr.c

char** 
Ddi_MgrReadVarnames(
  Ddi_Mgr_t * dd source dd manager
)
Reads the variable names

Side Effects none

Defined in ddiMgr.c

Pdtutil_VerbLevel_e 
Ddi_MgrReadVerbosity(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read verbosity

Side Effects none

Defined in ddiMgr.c

Ddi_Bdd_t * 
Ddi_MgrReadZero(
  Ddi_Mgr_t * dd source dd manager
)
Reads zero constant

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetDynordThresh(
  Ddi_Mgr_t * dd, source dd manager
  unsigned int  th threshold
)
Returns the threshold for the next dynamic reordering.

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetMgrCU(
  Ddi_Mgr_t * dd, source dd manager
  DdManager * m CUDD manager
)
Sets the CUDD manager

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetOne(
  Ddi_Mgr_t * dd, source dd manager
  Ddi_Bdd_t * one one constant
)
Sets the one constant

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetVarauxids(
  Ddi_Mgr_t * dd, source dd manager
  int * va auxiliary variable ids
)
Sets the auxiliary variable ids

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetVarnames(
  Ddi_Mgr_t * dd, source dd manager
  char ** vn names of variables
)
Sets the names of variables

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetVerbosity(
  Ddi_Mgr_t * ddiMgr, Decision Diagram Interface Manager
  Pdtutil_VerbLevel_e  verbosity Verbosity Level
)
Set verbosity

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrSetZero(
  Ddi_Mgr_t * dd, source dd manager
  Ddi_Bdd_t * zero zero constant
)
Sets the zero constant

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrShuffle(
  Ddi_Mgr_t * dd, dd Manager to be Alligned
  int * sortedIds, Array of sorted ids
  int  nids Number of ids
)
Reorders all DDs in a manager according to the input order. The input specification may be partial, i.e. it may include only a subset of variables.

Side Effects none

Defined in ddiMgr.c

void 
Ddi_MgrUpdate(
  Ddi_Mgr_t * ddm 
)
update DDI manager after directly working on CUDD manager. New variables have possibly been created.

Side Effects none

Defined in ddiMgr.c

void 
Ddi_PrintCuddVersion(
  FILE * fp 
)
Returns the version of CUDD package

Side Effects none

Defined in ddiUtil.c

void 
Ddi_PrintDdArray(
  Ddi_Bddarray_t * array 
)
Prints the size of each function in a DdArray

Side Effects None

See Also Ddi_PrintVararray
Defined in ddiNew.c

void 
Ddi_PrintVararray(
  Ddi_Vararray_t * array 
)
Prints the indices of a Vararray

Side Effects None

See Also Ddi_PrintDdArray
Defined in ddiNew.c

char * 
Ddi_ProfileHeuristicEnum2String(
  Cuplus_PruneHeuristic_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none

Defined in ddiUtil.c

Cuplus_PruneHeuristic_e 
Ddi_ProfileHeuristicString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none

Defined in ddiUtil.c

double 
Ddi_ReadCacheHits(
  Ddi_Mgr_t * dd dd manager
)
Returns the number of cache hits.

Side Effects none

Defined in ddiMgr.c

double 
Ddi_ReadCacheLookUps(
  Ddi_Mgr_t * dd dd manager
)
Returns the number of cache look-ups.

Side Effects none

Defined in ddiMgr.c

unsigned int 
Ddi_ReadCacheSlots(
  Ddi_Mgr_t * dd source dd manager
)
Reads the number of slots in the cache.

Side Effects none

Defined in ddiMgr.c

Ddi_Bdd_t * 
Ddi_ReadCube(
  Ddi_Mgr_t * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none

Defined in ddiNew.c

char * 
Ddi_ReadDdiName(
  Ddi_Mgr_t * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none

Defined in ddiMgr.c

unsigned int 
Ddi_ReadMaxCacheHard(
  Ddi_Mgr_t * dd dd manager
)
Reads the maxCacheHard parameter of the manager.

Side Effects none

Defined in ddiMgr.c

unsigned int 
Ddi_ReadMaxCache(
  Ddi_Mgr_t* dd dd manager
)
Returns the soft limit for the cache size.

Side Effects none

Defined in ddiMgr.c

unsigned int 
Ddi_ReadMinHit(
  Ddi_Mgr_t * dd dd manager
)
Reads the hit ratio that causes resizing of the computed table.

Side Effects none

Defined in ddiMgr.c

Ddi_Varset_t * 
Ddi_ReadVarset(
  Ddi_Mgr_t * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none

Defined in ddiNew.c

char * 
Ddi_ReorderingMethodEnum2String(
  Cudd_ReorderingType  enumType 
)
Given an Enumerated type Returns a string

Side Effects none

Defined in ddiUtil.c

Cudd_ReorderingType 
Ddi_ReorderingMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none

Defined in ddiUtil.c

void 
Ddi_SetDdiName(
  Ddi_Mgr_t * dd, source dd manager
  char * ddiName 
)
Returns the threshold for the next dynamic reordering.

Side Effects none

Defined in ddiMgr.c

Ddi_Var_t * 
Ddi_VarAtLevel(
  Ddi_BddMgr * ddm, 
  int  lev 
)
Returns variable at a given level in the order

Side Effects none

See Also Ddi_IthVar
Defined in ddiVar.c

void 
Ddi_VarAttachAuxid(
  Ddi_Var_t * var, 
  int  auxid 
)
Set the variable auxid of a variable

Side Effects none

Defined in ddiVar.c

void 
Ddi_VarAttachName(
  Ddi_Var_t * var, 
  char * name 
)
Returns the variable name given the index

Side Effects none

Defined in ddiVar.c

int 
Ddi_VarAuxid(
  Ddi_Var_t * var 
)
Return the variable auxid (-1 if auxids not defined)

Side Effects none

See Also Ddi_VarName
Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarCopy(
  Ddi_BddMgr * dd2, destination manager
  Ddi_Var_t * v variable to be copied
)
Find the variable corresponding to v in the destination manager. Variable correspondence is for now limited to index matching.

Side Effects none

Defined in ddiVar.c

int 
Ddi_VarCurrPos(
  Ddi_Var_t * var 
)
Return current position of var in variable order

Side Effects none

Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarFromAuxid(
  Ddi_BddMgr * ddm, 
  int  auxid 
)
Still a linear search !

Side Effects none

See Also Ddi_VArFromName
Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarFromCU(
  Ddi_BddMgr * ddm, 
  DdNode * v 
)
Convert a CUDD variable to a DDI variable

Side Effects none

Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarFromName(
  Ddi_BddMgr * ddm, 
  char * name 
)
Still a linear search !

Side Effects none

See Also Ddi_VarFromAuxid
Defined in ddiVar.c

int 
Ddi_VarInVarset(
  Ddi_Varset_t * varset, var-set
  Ddi_Var_t * var variable
)
Return true (non 0) if var is in varset

Side Effects none

Defined in ddiVarset.c

int 
Ddi_VarIndex(
  Ddi_Var_t * var 
)
Return the variable index (CUDD variable index)

Side Effects none

See Also Ddi_IthVar
Defined in ddiVar.c

int 
Ddi_VarIsGrouped(
  Ddi_Var_t * v 
)
Return true (non 0) if variable is in variable group

Side Effects none

Defined in ddiVar.c

void 
Ddi_VarMakeGroupFixed(
  Ddi_BddMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize 
)
Same as Ddi_VarMakeGroup but no dynamic reordering allowed within group

Side Effects none

See Also Ddi_VarMakeGroupFixed
Defined in ddiVar.c

void 
Ddi_VarMakeGroup(
  Ddi_BddMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize 
)
A group of variables is created for group sifting. The group starts at v and contains grpSize variables (following v in the ordering. Sifting is allowed within the group

Side Effects none

See Also Ddi_VarMakeGroupFixed
Defined in ddiVar.c

char * 
Ddi_VarName(
  Ddi_Var_t * var 
)
Return the name of a variable

Side Effects none

Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarNewAtLevel(
  Ddi_BddMgr * ddm, 
  int  lev 
)
Returns a new variable at a given level in the order

Side Effects none

See Also Ddi_VarNew
Defined in ddiVar.c

Ddi_Var_t * 
Ddi_VarNew(
  Ddi_BddMgr * ddm 
)
Create a new variable (generated within a CUDD manager)

Side Effects none

See Also Ddi_VarNewAtLevel Ddi_VarFromCU
Defined in ddiVar.c

Ddi_Varset_t * 
Ddi_VarReadGroup(
  Ddi_Var_t * v 
)
Return variable group including v. NULL if v is not in a group

Side Effects none

Defined in ddiVar.c

Ddi_Bdd_t * 
Ddi_VarSubst(
  Ddi_Bdd_t * f, BDD
  Ddi_Vararray_t * x, first array of variables
  Ddi_Vararray_t * y second array of variables
)
The function returns the pointer to a new function with the variables swapped (x replace y), or NULL otherwise.

Side Effects none

Defined in ddiNew.c

DdNode * 
Ddi_VarToCU(
  Ddi_Var_t * v 
)
Return the CUDD bdd node of a variable

Side Effects none

Defined in ddiVar.c

Ddi_Vararray_t * 
Ddi_VararrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  size array length
)
Allocate a new array of variables of given length

Side Effects none

Defined in ddiVararray.c

void 
Ddi_VararrayAppend(
  Ddi_Vararray_t * array1, first array
  Ddi_Vararray_t * array2 array to be appended
)
Append the elements of array2 at the end of array1

Side Effects none

See Also Ddi_VararrayJoin
Defined in ddiVararray.c

Ddi_Vararray_t * 
Ddi_VararrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Vararray_t * old array of variables
)
Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_VararrayDup
Defined in ddiVararray.c

Ddi_Vararray_t * 
Ddi_VararrayDup(
  Ddi_Vararray_t * old array to be duplicated
)
Only the "array" part is duplicated. Variables are never duplicated nor freed, except when closing the owner manager

Side Effects none

See Also Ddi_VararrayAlloc
Defined in ddiVararray.c

Ddi_Vararray_t * 
Ddi_VararrayMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode ** array, 
  int  n 
)
No variable dup is done (as all DDI operations working with variables)

Side Effects none

See Also Ddi_VararrayToCU
Defined in ddiVararray.c

Ddi_Vararray_t * 
Ddi_VararrayMakeFromInt(
  Ddi_Mgr_t * mgr, 
  int * array, 
  int  n 
)
Integer indexes are used as CUDD indexes. No variable dup is done (as all DDI operations working with variables)

Side Effects none

See Also Ddi_VararrayToCU
Defined in ddiVararray.c

int 
Ddi_VararrayNum(
  Ddi_Vararray_t * array 
)
Return the number of variables (entries) in array

Side Effects none

Defined in ddiVararray.c

Ddi_Var_t * 
Ddi_VararrayRead(
  Ddi_Vararray_t * array, variable array
  int  i position
)
Return the variable at i-th position in array

Side Effects none

See Also Ddi_VararrayInsert
Defined in ddiVararray.c

DdNode ** 
Ddi_VararrayToCU(
  Ddi_Vararray_t * array 
)
Generate a dynamic allocated array of pointers to CUDD BDDs representing variables in input array.

Side Effects none

See Also Ddi_VararrayMakeFromCU
Defined in ddiVararray.c

int * array of integer
Ddi_VararrayToInt(
  Ddi_Vararray_t * array array of variables
)
Integer indexes are taken from CUDD indexes.

Side Effects none

See Also Ddi_VararrayToCU
Defined in ddiVararray.c

void 
Ddi_VararrayWrite(
  Ddi_Vararray_t * array, array of variables
  int  pos, position of new element
  Ddi_Var_t * var variable to be inserted
)
Write a variable in array at given position

Side Effects none

See Also Ddi_VararrayRead
Defined in ddiVararray.c

Ddi_Varset_t * 
Ddi_VarsetAddAcc(
  Ddi_Varset_t * vs, var-set
  Ddi_Var_t * v the new variable added to var-set
)
Add variable to var-set. Result is accumulated

Side Effects none

See Also Ddi_VarsetAdd
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetAdd(
  Ddi_Varset_t * vs, var-set
  Ddi_Var_t * v the new variable added to var-set
)
Add variable to var-set. Result is generated

Side Effects none

See Also Ddi_VarsetAddAcc Ddi_VarsetRemove Ddi_VarsetRemoveAcc
Defined in ddiVarset.c

Ddi_Var_t * 
Ddi_VarsetBottom(
  Ddi_Varset_t * varset var-set
)
Return the bottom variable in the ordering

Side Effects none

See Also Ddi_VarsetTop
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetCopy(
  Ddi_BddMgr * dd2, destination manager
  Ddi_Varset_t * src var-set to be copied
)
Copy a var-set to another manager

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetDiffAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return difference of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetDiff(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return difference of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnionAcc Ddi_VarsetIntersect Ddi_VarsetDiff
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetDup(
  Ddi_Varset_t * src var-set to be copied
)
Duplicate a var-set

Side Effects none

Defined in ddiVarset.c

int 
Ddi_VarsetEqual(
  Ddi_Varset_t * varset1, first var-set
  Ddi_Varset_t * varset2 second var-set
)
Return true (non 0) if the two var-sets are equal

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetEvalFree(
  Ddi_Varset_t * f, expression
  Ddi_Varset_t * g varset to be freed
)
Evaluates an expression and frees first argument

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetIntersectAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return intersection of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetIntersect(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return intersection of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnion Ddi_VarsetIntersectAcc Ddi_VarsetDiff
Defined in ddiVarset.c

int 
Ddi_VarsetIsVoid(
  Ddi_Varset_t * varset 
)
Return true (non 0) if var-set is empty

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetMakeFromArray(
  Ddi_Vararray_t * va 
)
Build a Ddi_Varset_t from a given variable array.

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode * bdd 
)
Builds the Ddi_Varset_t structure from manager and node. The reference count of the node is increased.

See Also DdiGenericAlloc
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetMakeFromVar(
  Ddi_Var_t * v 
)
Builds a Ddi_Varset_t structure from variable.

See Also Ddi_VarsetMakeFromCU Ddi_VarsetMakeFromArray
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetNextAcc(
  Ddi_Varset_t * vs 
)
Remove top variable from var-set. Result accumulated

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetNext(
  Ddi_Varset_t * vs 
)
Remove top variable from var-set. Result generated

Side Effects none

Defined in ddiVarset.c

int 
Ddi_VarsetNum(
  Ddi_Varset_t * vars varset
)
Return the number of variables in varset

Side Effects none

Defined in ddiVarset.c

void 
Ddi_VarsetPrint(
  Ddi_Varset_t * vars, Varset to Print
  int  numberPerRow, Number of Names Printed on a Single Row
  char * filename, File Name
  FILE * fp output file pointer
)
If numberPerRow is less or equal to 0 all the names are printed-out on a single row.

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetRemoveAcc(
  Ddi_Varset_t * vs, 
  Ddi_Var_t * v 
)
Remove variable from var-set. Result is accumulated

Side Effects none

See Also Ddi_VarsetAdd Ddi_VarsetRemove
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetRemove(
  Ddi_Varset_t * vs, 
  Ddi_Var_t * v 
)
Remove variable from var-set. Result is generated

Side Effects none

See Also Ddi_VarsetAdd Ddi_VarsetRemoveAcc
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetSwapVarsAcc(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap two sets of variables in varset. Result accumulated

Side Effects none

Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetSwapVars(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Return a new varset with the variables swapped (x replaces y and viceversa).

Side Effects none

Defined in ddiVarset.c

Ddi_BddNode * 
Ddi_VarsetToCU(
  Ddi_Varset_t * vs 
)
Convert a varset to a Cudd cube

Side Effects None

See Also Ddi_VarsetMakeFromCU
Defined in ddiVarset.c

Ddi_Var_t * 
Ddi_VarsetTop(
  Ddi_Varset_t * varset var-set
)
Return the top variable (in the ordering) in varset

Side Effects none

See Also Ddi_VarsetBottom
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetUnionAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return union of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetUnion(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return union of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnionAcc Ddi_VarsetIntersect Ddi_VarsetDiff
Defined in ddiVarset.c

Ddi_Varset_t * 
Ddi_VarsetVoid(
  Ddi_BddMgr * ddm 
)
The varset is generated, so it must eventually be freed

Side Effects none

Defined in ddiVarset.c

Ddi_Var_t * 
Ddi_VarsetWalkCurr(
  Ddi_Varset_t * vs 
)
Return curr var in varset walk

Side Effects none

Defined in ddiVarset.c

int 
Ddi_VarsetWalkEnd(
  Ddi_Varset_t * vs 
)
test for varset walk end. Return trur (non 0) if end reached

Side Effects none

Defined in ddiVarset.c

void 
Ddi_VarsetWalkStart(
  Ddi_Varset_t * vs 
)
Start Varset walk process. Set curr pointer to top BDD node

Side Effects none

Defined in ddiVarset.c

void 
Ddi_VarsetWalkStep(
  Ddi_Varset_t * vs 
)
Varset walk process step. Set curr pointer to next BDD node

Side Effects none

Defined in ddiVarset.c

Ddi_Varsetarray_t * 
Ddi_VarsetarrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  length array length
)
Allocate a new array of varsets. The array slots are initialized with NULL pointers, so further Write operations are required.

Side Effects none

See Also Ddi_VarsetarrayWrite
Defined in ddiVarsetarray.c

void 
Ddi_VarsetarrayClear(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos position of element to be cleared
)
clear array at given position (BDD freed and replaced by NULL)

Side Effects none

See Also Ddi_VarsetarrayRead
Defined in ddiVarsetarray.c

Ddi_Varsetarray_t * 
Ddi_VarsetarrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Varsetarray_t * old array of varsets
)
Copy an array of varsets to a destination manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_VarsetarrayDup
Defined in ddiVarsetarray.c

Ddi_Varsetarray_t * 
Ddi_VarsetarrayDup(
  Ddi_Varsetarray_t * old array to be duplicated
)
Duplicate an array of Varsets

Side Effects none

See Also Ddi_VarsetarrayAlloc
Defined in ddiVarsetarray.c

void 
Ddi_VarsetarrayInsertLast(
  Ddi_Varsetarray_t * array, array of varsets
  Ddi_Varset_t * vs varset to be written
)
Insert varset in array at last position. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayInsert
Defined in ddiVarsetarray.c

void 
Ddi_VarsetarrayInsert(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos, position of new element
  Ddi_Varset_t * vs varset to be written
)
Insert varset in array at given position. Previous non NULL entry is moved up. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayRead
Defined in ddiVarsetarray.c

int 
Ddi_VarsetarrayNum(
  Ddi_Varsetarray_t * array 
)
Return the number of entries in array

Side Effects none

Defined in ddiVarsetarray.c

Ddi_Varset_t * 
Ddi_VarsetarrayRead(
  Ddi_Varsetarray_t * array, varset array
  int  i position
)
Read varset at i-th position in array. As all read operations no data duplication is done, so the returned varset should be duplicated if further manipulations are required on it.

Side Effects none

See Also Ddi_VarsetarrayWrite
Defined in ddiVarsetarray.c

void 
Ddi_VarsetarrayWrite(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos, position of new element
  Ddi_Varset_t * vs varset to be written
)
Write varset in array at given position. Previous non NULL entry is freed. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayRead
Defined in ddiVarsetarray.c

static void 
GenBddRootsRecur(
  Ddi_Generic_t * f, 
  Ddi_ArrayData_t * roots 
)
Recursive step of root pointers generation

Side Effects none

See Also GenBddRoots
Defined in ddiGeneric.c

static Ddi_ArrayData_t * 
GenBddRoots(
  Ddi_Generic_t * f 
)
Recursively visits a partitioned Dd structure and builds the array of leaves bdds. The array is used by functions counting BDD nodes, computing support, printing/storing

Side Effects none

See Also GenPartRootsRecur
Defined in ddiGeneric.c

static Ddi_Generic_t * 
GenericDupIntern(
  Ddi_Generic_t * r, destination
  Ddi_Generic_t * f source
)
Duplicate a DDI node

Defined in ddiGeneric.c

static void 
GenericFreeIntern(
  Ddi_Generic_t * f block to be freed
)
Frees a generic block. Internal procedure

Side Effects none

Defined in ddiGeneric.c

static Ddi_Bdd_t * 
MetaConstrainOpt(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
return constrain only if size reduced

Side Effects none

Defined in ddiMeta.c

static void 
MetaConvertBdd(
  Ddi_Generic_t * f, 
  Meta_Convert_e  sel 
)
Conversion between BDD and Meta BDD

Defined in ddiMeta.c

static Ddi_Generic_t * 
MetaConvert(
  Ddi_Generic_t * f, 
  Meta_Convert_e  sel 
)
Transform between generic DDI node and Meta BDD. Result accumulated. The transformation is applied to leaf BDDs, whereas the DDI structure is kept as it is

Defined in ddiMeta.c

static void 
MetaFromMono(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD

Defined in ddiMeta.c

static Ddi_Bdd_t * 
MetaLinearAndExistAcc(
  Ddi_Bdd_t * fMeta, 
  Ddi_Bdd_t * gBdd, 
  Ddi_Varset_t * smooth 
)
Operate And-Exist between Meta BDD and conj. part. BDD

Defined in ddiMeta.c

static void 
MetaReduce(
  Ddi_Bdd_t * f, 
  int  init start from this layer: < 0 for full reduction
)
Apply bottom-up reduction process to meta BDD

Defined in ddiMeta.c

static void 
MetaSetConj(
  Ddi_Bdd_t * f 
)
Apply top-down reduction of ones to bottom layer. This reduces a Meta BDD to a conjunctive form

Defined in ddiMeta.c

static void 
MetaSimplify(
  Ddi_Bdd_t * f, 
  int  init apply simplification starting from this layer
)
Apply top-down cofactor based simplification

Defined in ddiMeta.c

static void 
MetaToMono(
  Ddi_Bdd_t * f 
)
Transform a Meta BDD to monolitic BDD

Defined in ddiMeta.c

static int 
MetaUpdate(
  Ddi_Mgr_t * ddm 
)
Update Meta handling by calling Init. This is activated if new variables have been created or reordering has taken place from previous. Return true (non 0) if activated

Defined in ddiMeta.c

 
(
    
)
Compute unary, binary or tenary operation returning a BDD. Result is generated. Requires an operation code and three operand parameters. It is also available in the ...Opi version, where i = 1, 2, or 3, is the number of operands. The same functions are also available in the accumulated version. The complete list of related functions follows: whereas the list of available operation codes is:

See Also Ddi_BddarrayOp
Defined in ddi.h

 
(
    
)
The function, for all elements of the array, computes unary, binary or tenary operation involving the i-th element of the array. Result is generated. The function requires an operation code and three operand parameters. It is also available in the ...Op version, where = 1, 2, or 3, is the number of operands. All functions operate in accumulated mode, i.e. they modify the first parameter instead of generating a new array. The complete list of related functions follows:
  • Ddi_BddarrayOp(op,f,g,h)
  • Ddi_BddarrayOp1(op,f)
  • Ddi_BddarrayOp2(op,f,g)
  • Ddi_BddarrayOp3(op,f,g,h)

    See Also Ddi_BddOp
    Defined in ddi.h
    
     
    (
        
    )
    
    Free DDI node (compatible with all DDI handles).

    Defined in ddi.h
    
     
    (
        
    )
    
    Lock DDI node so that cannot be freed unless unlocked. Used as a protection mechanism for internal objects (array entries, partitions, ...

    Side Effects Ddi_Unlock

    Defined in ddi.h
    
     
    (
        
    )
    
    Read handle code. The code field of DDI nodes is a sort of subtype. In case of BDDs, it selects among monolithic, partitioned and meta formats. In other cases it is not used. Allowed return values are:
    • Ddi_Bdd_Mono_c (monolithic BDD)
    • Ddi_Bdd_Part_Conj_c (disjunctively partitioned BDD)
    • Ddi_Bdd_Part_Disj_c (conjunctively partitioned BDD)
    • Ddi_Bdd_Meta_c (meta BDD)
    • Ddi_Expr_Op_c (operation node in expressions)
    • Ddi_Expr_String_c (string identifier terminal node of expressions)
    • Ddi_Expr_Bdd_c (BDD terminal of expressions)
    • Ddi_Null_code_c (no BDD pointed, possibly wrong DDI node)

    Defined in ddi.h
    
     
    (
        
    )
    
    Read name field of DDI node

    Defined in ddi.h
    
     
    (
        
    )
    
    Read the DDI Manager field. This is a pointer to the owner DDI manager.

    Defined in ddi.h
    
     
    (
        
    )
    
    Read the name field. Mainly thought for debug/report purposes.

    Defined in ddi.h
    
     
    (
        
    )
    
    Set name field of DDI node

    Defined in ddi.h
    
     
    (
        
    )
    
    Unlock DDI node so that can be freed again.

    Side Effects Ddi_Lock

    Defined in ddi.h

  • Last updated on 1010204 20h20