ddi.h
External header file
ddiInt.h
Internal header file
ddiDd.c
Functions working on Boolean functions (Ddi_Dd_t)
ddiDdArray.c
Functions to manage arrays of BDDs
ddiDdNode.c
Functions to access DD nodes
ddiMgr.c
Functions to deal with DD Managers
ddiNew.c
Utility Functions
ddiUtil.c
utility functions
ddiVar.c
Functions to manipulate BDD variables
ddiVarArray.c
Functions to manage arrays of variables
ddiVarSet.c
Functions to manage sets of variables

ddi.h

External header file

By: Gianpiero Cabodi and Stefano Quer


ddiInt.h

Internal header file

By: Gianpiero Cabodi and Stefano Quer


ddiDd.c

Functions working on Boolean functions (Ddi_Dd_t)

By: Gianpiero Cabodi and Stefano Quer

This file includes the set of operators working on Boolean functions represented by the Ddi_Dd_t type. Internally, functions are implemented using handles (wrappers) pointing to BDD roots. Externally, they are accessed only by pointers. All the results of operations are implicitly referenced, while explicit free-ing (dereferencing) is required.
External procedures in this module include

DdiDdOp()
Computes an operation on Boolean functions
Ddi_DdDenseSet()
Computes the Dense Super or Subset of a Boolean functions
Ddi_DdReadCode()
Reads the code.
Ddi_DdSetCode()
Sets the code of the boolean function.
Ddi_DdReadMgr()
Reads the DD Manager of the boolean function f.
Ddi_DdSetMgr()
Sets the DD Manager of the boolean function f.
Ddi_DdReadPart()
Reads the array of partitions of the boolean function f.
Ddi_DdSetPart()
Sets the array of partitions of the boolean function f.
Ddi_DdReadPartNum()
Reads the number of partitions of the boolean function f.
Ddi_DdReadIthPart()
Reads the i-th partition of the boolean function f.
Ddi_DdCreateFromCU()
Builds a Ddi_Dd_t from a given CUDD node.
Ddi_DdPrint()
Prints a BDD
Ddi_DdSupportPrint()
Prints the support of a BDD
Ddi_DdSize()
Gets the size of a BDD
Ddi_DdPrintStats()
Prints Statistics of a BDD
Ddi_DdFree()
Frees a BDD by De-referencing it
Ddi_DdDup()
Duplicates a BDD
Ddi_DdCopy()
Copies a BDD to a destination dd manager
Ddi_DdCopyWithAuxMgr()
Copies a BDD to a destination dd manager using a third manager
Ddi_DdSwapVariablesWithAuxMgr()
Copies a BDD to a destination dd manager using a third manager
Ddi_DdEvalFree()
Evaluates an expression and frees a function
Ddi_DdTopvarIndex()
Returns the variable index
Ddi_DdLiteral()
Returns a literal from a variable
Ddi_DdComplLiteral()
Returns a complemented literal from a variable
Ddi_DdEqual()
The function returns 1 if the two DDs are equal
Ddi_DdIsZero()
The function returns 1 if the DD f is the zero constant.
Ddi_DdIsOne()
The function returns 1 if the DD f is the one constant.
Ddi_DdNot()
Returns the complement of a function
Ddi_DdAnd()
Computes the AND of two BDDs
Ddi_DdOr()
Computes the OR of two BDDs
Ddi_DdXor()
Computes the XOR of two BDDs
Ddi_DdXnor()
Computes the XNOR of two BDDs
Ddi_DdIte()
ITE operator
Ddi_DdAndExist()
Computes the AND-Abstract of two BDDs
Ddi_DdExist()
Computes the existential abstraction of a BDD with respect to a support
Ddi_DdConstrain()
Computes the constrain cofactor between F and C
Ddi_DdRestrict()
Computes the restrict cofactor between F and C
Ddi_DdSwapVariables()
Swaps two sets of variables in a function
Ddi_DdSupport()
Returns the support of BDD
Ddi_DdStore()
Stores BDD on file
Ddi_DdLoad()
Loads BDD from file
Ddi_DdAddCpart()
Adds conjoined partition
Ddi_DdAddDpart()
Adds disjoined partition
Ddi_DdReplaceIthPart()
Replaces i-th partition with a new one
Ddi_DdRemPart()
Removes a partition
Ddi_DdPart2Mono()
Creates a monolithic BDD from a partitioned one
Ddi_DdPartFromArray()
Builds a partitioned function
Ddi_ProfileInfoInit()
Ddi_ProfileInfoFree()
Ddi_ProfileInfoPrint()
Ddi_PruneProfiled()
Ddi_MulvarInterleave()
generates a common ordering given 2 input BDDs
Ddi_DdToCU()
Converts a DD into the correspondent Cudd Node
GenPartDdRoots()
Generates root pointers for partitioned DDs
GenPartDdRootsRecur()
Generates root pointers for partitioned DDs (recursive)

ddiDdArray.c

Functions to manage arrays of BDDs

By: Gianpiero Cabodi and Stefano Quer

The basic manipulation allowed for BDD arrays are:

  1. Alloc and free an array
  2. Insert, fetch, extract and include a BDD into/from array
  3. Duplicate an array
  4. Join and append a new array
  5. Store and load to/from file
  6. Other features as resize, and size
For each element of array can be apply any boolean operator as AND,OR,XOR,XNOR,Restrict and Constrain.

Ddi_DdArrayAlloc()
Allocates a new array of BDDs
Ddi_DdArrayFree()
Frees an array of BDDs
Ddi_DdArrayInsert()
Inserts a BDD in the array
Ddi_DdArrayInsertLast()
Inserts an element at the end of array
Ddi_DdArrayInclude()
Includes a BDD into an array at the i-th position.
Ddi_DdArrayFetch()
Returns an element of the array
Ddi_DdArrayExtract()
Extracts an element of the array
Ddi_DdArray_n()
Returns the number of elements of the array
Ddi_DdArrayFetchLast()
Returns the last element of the array
Ddi_DdArrayDup()
Duplicates a BDD array.
Ddi_DdArrayCopy()
Copy a BDD array to a destination manager.
Ddi_DdArrayAppend()
Appends array2 at the end of array1
Ddi_DdArrayJoin()
Joins two arrays
Ddi_DdArrayReadData()
Converts Ddi_DdArray_t * into an array of Ddi_Dd_t **
Ddi_DdArrayToCU()
Converts Ddi_DdArray_t * into an array of Ddi_Dd_t **
Ddi_DdArrayFromCU()
Converts Ddi_DdArray_t * into an array of Ddi_Dd_t **
Ddi_DdArrayConstrainIthToN()
From the i0-th to last BDD in the array , take the constrain
Ddi_DdArrayConstrain()
For each BDDs in the array takes the constrain
Ddi_DdArrayRestrictIthToN()
From the i0-th to last BDD in the array , take the restrict
Ddi_DdArrayRestrict()
For each BDDs in the array takes the restrict
Ddi_DdArrayPrint()
prints the BDDs'array
Ddi_DdArraySize()
Returns the numbers of nodes in a BDDs'array
Ddi_DdArrayPrintStats()
Prints Statistics of a BDD
Ddi_DdArrayAndIthToN()
From the i0-th to last BDD in the array , computes AND
Ddi_DdArrayAnd()
For each BDD in the array , computes AND
Ddi_DdArrayExistIthToN()
From the i0-th to last BDD in the array , applies Exist
Ddi_DdArrayExist()
For each BDD in the array , applies Exist
Ddi_DdArrayOrDdArray()
Computes OR among two BDDs
Ddi_DdArrayStore()
Writes array of BDDs in a dump file
Ddi_DdArrayLoad()
Reads array of BDDs from a dump file
Ddi_DdArraySupportIthToN()
Returns the support of BDDs'array from i0-th to last element
Ddi_DdArraySupport()
Returns the support of BDDs'array
Ddi_DdArraySupportArray()
Returns a vector of supports of BDDs'array
DdArrayResize()
Resize a BDD array

ddiDdNode.c

Functions to access DD nodes

By: Gianpiero Cabodi and Stefano Quer

Ddi_DdRootNode()
Returns the root node of the BDD
Ddi_DdNodeReadIndex()
Returns variable index of f
Ddi_DdNodeThen()
Returns Then branch of f (complemented if f compl.
Ddi_DdNodeElse()
Returns Else branch of f (complemented if f compl.
Ddi_DdNodeIsVisited()
Returns true if node is visited
Ddi_DdNodeSetVisited()
Marks a node as visited
Ddi_DdNodeClearVisited()
Clears visited flag
Ddi_DdNodeToCU()
Converts into a Cudd node
Ddi_DdNodeFromCU()
Converts a Cudd node into a Dd node

ddiMgr.c

Functions to deal with DD Managers

By: Gianpiero Cabodi and Stefano Quer

Ddi_MgrOperation()
Ddi_MgrPrintStats()
Prints on standard outputs statistics on a DD manager
DdiMgrCheckVarArraySize()
make checks and resizes arrays if required
Ddi_MgrInit()
Creates a DdManager.
Ddi_DdiMgrQuit()
Closes a DdManager.
Ddi_MgrDup()
Creates a copy of a DdManager.
Ddi_MgrShuffle()
Reorders all DDs in a manager.
Ddi_MgrAlign()
Aligns the order of two managers.
Ddi_MgrCreateGroups2()
Create groups of 2 variables
Ddi_MgrWriteOrd()
Stores the variable ordering
Ddi_MgrReadOrdNamesAuxids()
Reads the variable ordering
Ddi_MgrAutodynSuspend()
Suspend autodyn if active.
Ddi_MgrAutodynResume()
Resume autodyn if suspended.
Ddi_MgrReadMgrCU()
Reads the Cudd Manager
Ddi_MgrReadOne()
Reads one constant
Ddi_MgrReadZero()
Reads zero constant
Ddi_MgrReadVarnames()
Reads the variable names
Ddi_MgrReadVarauxids()
Reads the variable auxiliary ids
Ddi_MgrReadDdNum()
Reads the counter of Dd Handles
Ddi_MgrReadDynordThresh()
Returns the threshold for the next dynamic reordering.
Ddi_ReadDdiName()
Returns the threshold for the next dynamic reordering.
Ddi_SetDdiName()
Returns the threshold for the next dynamic reordering.
Ddi_MgrReadVerbosity()
Read verbosity
Ddi_MgrSetVerbosity()
Set verbosity
Ddi_MgrSetMgrCU()
Sets the CUDD manager
Ddi_MgrSetOne()
Sets the one constant
Ddi_MgrSetZero()
Sets the zero constant
Ddi_MgrSetVarnames()
Sets the names of variables
Ddi_MgrSetVarauxids()
Sets the auxiliary variable ids
Ddi_MgrSetDynordThresh()
Returns the threshold for the next dynamic reordering.
Ddi_ReadCacheSlots()
Reads the number of slots in the cache.
Ddi_ReadCacheLookUps()
Returns the number of cache look-ups.
Ddi_ReadCacheHits()
Returns the number of cache hits.
Ddi_ReadMinHit()
Reads the hit ratio that causes resizing of the computed table.
Ddi_ReadMaxCacheHard()
Reads the maxCacheHard parameter of the manager.
Ddi_ReadMaxCache()
Returns the soft limit for the cache size.

ddiNew.c

Utility Functions

By: Gianpiero Cabodi and Stefano Quer

Ddi_BddOperation()
Ddi_BddArrayOperation()
Ddi_ReadCube()
Reads a cube from stdin
Ddi_ReadVarSet()
Reads a variable set from file
Ddi_VarSubst()
The function does a substitution of variables of a BDD
Ddi_PrintVarArray()
Prints the indices of a VarArray
Ddi_PrintDdArray()
Prints the size of each function in a DdArray

ddiUtil.c

utility functions

By: Gianpiero Cabodi and Stefano Quer

Ddi_ProfileHeuristicString2Enum()
Given a string it Returns an Enumerated type
Ddi_ProfileHeuristicEnum2String()
Given an Enumerated type Returns a string
Ddi_ReorderingMethodString2Enum()
Given a string it Returns an Enumerated type
Ddi_ReorderingMethodEnum2String()
Given an Enumerated type Returns a string
Ddi_DenseMethodString2Enum()
Given a string it Returns an Enumerated type
Ddi_DenseMethodEnum2String()
Given an Enumerated type Returns a string
Ddi_PrintVersion()
Returns the version of CUDD package

ddiVar.c

Functions to manipulate BDD variables

By: Gianpiero Cabodi and Stefano Quer

Ddi_VarIndex()
Returns the variable index
Ddi_IthVar()
Returns the variable of a given index
Ddi_DdNewVar()
Returns a new variable
Ddi_DdNewVarAtLevel()
Returns a new variable at a given level in the order
Ddi_VarCurrPos()
Returns the current position of the variable in the order
Ddi_VarId2Name()
Returns the variable name given the index
Ddi_VarName()
Returns the variable name given the index
Ddi_VarSetName()
Returns the variable name given the index
Ddi_VarId2Auxid()
Returns the variable auxid given the index
Ddi_VarAuxid()
Returns the variable auxid
Ddi_VarSetAuxid()
Returns the variable name given the index
Ddi_VarName2Id()
Returns the variable index given the name
Ddi_VarAuxid2Id()
Returns the variable index given the auxid
Ddi_VarToCU()
Converts a variable into a Cudd node
Ddi_VarFromCU()
Converts a Cudd node into a variable
Ddi_VarCopy()
Copies a variable to a destination dd manager
Ddi_VarMakeGroup()
Create a variable group

ddiVarArray.c

Functions to manage arrays of variables

By: Gianpiero Cabodi and Stefano Quer

Array of variables is implemented as an array of BDD nodes (called "projection funtions" in CUDD package).
The basic manipulation allowed for variable arrays are:

  1. Alloc and free an array
  2. Insert and fetch a variable
  3. Duplicate an array
  4. Join and append a new array
  5. Convert into array of integer
  6. Convert into a set of variables

Ddi_VarArrayFromCU()
Generates a variable array from CU vars
Ddi_VarArrayToCU()
Duplicates the data field of an array of variables
DdiVarArrayReadData()
Returns the data field of an array of variables
Ddi_VarArrayAlloc()
Allocates a new array of variables of length "size"
Ddi_VarArrayFree()
Frees an array of variables
Ddi_VarArray_n()
Returns the number of elements in a variable array
Ddi_VarArrayInsert()
Inserts a variable into an array at a given position
Ddi_VarArrayFetch()
Returns a variable of the array at the i-th position
Ddi_VarArrayDup()
Duplicates an array of variables
Ddi_VarArrayCopy()
Duplicates an array of variables
Ddi_VarArrayAppend()
Appends the elements of array2 at the end of array1
Ddi_VarArrayJoin()
Joins two arrays, returning a new array
Ddi_VarArrayToInt()
Returns the indices of variables
Ddi_VarArrayToVarSet()
Converts an array of variables into a set of variables
Ddi_VarArrayIndex()
Returns the index of the i-th element of the array
VarArrayResize()
Resizes an array

ddiVarSet.c

Functions to manage sets of variables

By: Gianpiero Cabodi and Stefano Quer

Sets of variables (var-set) are implemented as cubes.
The basic manipulation allowed on a var-set are:

  1. Create an empty var-set (New) and destroy one (Free)
  2. Add a new variable or remove one
  3. Duplicate a var-set
  4. Union, intersect and difference of two var-sets
  5. Other specific operations

Ddi_VarSetVoid()
Returns an empty var-set
Ddi_VarSetFree()
Frees a var-set, dereferencing all BDD nodes
Ddi_VarSetIsVoid()
The function returns 1 if the var-set is empty
Ddi_VarSetNext()
The function returns a var-set excluding the top variable
Ddi_VarSetAdd()
Adds a variable to the var-set
Ddi_VarSetDup()
Copies a var-set into another one
Ddi_VarSetCopy()
Copies a var-set to another manager
Ddi_VarSetEvalFree()
Evaluates an expression and frees first argument
Ddi_VarSet_n()
Returns the number of variables in the varset
Ddi_VarSetPrint()
Prints the varset
Ddi_VarSetUnion()
Computes the union of two var-sets
Ddi_VarSetIntersect()
Computes the intersection of two var-sets
Ddi_VarSetDifference()
Computes the difference of two var-sets
Ddi_VarSetRemove()
Removes a variable from the var-set
Ddi_VarSetEqual()
The function returns 1 if the two var-sets are equal
Ddi_VarSetTop()
Returns the top variable in the ordering
Ddi_VarSetBottom()
Returns the bottom variable in the ordering
Ddi_VarSetToCU()
Converts a varset into the correspondent Cudd Node
Ddi_VarSetSwapVariables()
Swaps two sets of variables in a varset

Last updated on 990617 11h53