static int 
BddSizeCompare(
  const void * s1, 
  const void * s2 
)
The function compares two BDDs and return:
1, if size of 1st BDD is greater then 2nd
-1, if size of 1st BDD is smaller then 2nd
0, if both 1st and 2nd BDD have the same size.

Side Effects none

See Also Tr_DdArraySort()
Defined in trSort.c

static int 
MaxMinVSupportCompare(
  const void * s1, 
  const void * s2 
)
Compares BDDs for MAX-MIN-V-SORTING method.

Side Effects none

See Also Tr_DdArraySort()
Defined in trSort.c

static void 
SetSortWeights(
  Tr_Mgr_t * trMgr, Traversal Manager
  char * weights Weights
)
Set sort settings in the Transition Relation Manager reading them from a string.

Side Effects none

Defined in trMgr.c

static char * 
ShowSortWeights(
  Tr_Mgr_t * trMgr Traversal Manager
)
Show sort settings reading them from the Transition Relation manager. Return a string containing them.

Side Effects none

Defined in trMgr.c

Ddi_Dd_t * 
TrBuildTransClosure(
  Tr_Mgr_t * trMgr, TR manager
  Ddi_Dd_t * TR, Transition Relation
  Ddi_VarArray_t * s, Present state vars
  Ddi_VarArray_t * y, Next state vars
  Ddi_VarArray_t * z Intermediate state vars
)
Internal procedure to build the transitive closure of a transition relation. This can now handle a Monolithic TR as well as a disjunctively partitioned one. In the latter case closure is only partial: it is operated within single partitions. The iterative squaring method, expressed by the following recurrence equations:

T(0)(s,y) = TR(s,y)
T(i+1)(s,y)= TR(s,y) + Exist(z) ( T(i)(s,z) * T(i)(z,y) )

The least fixed point is T* (transitive closure) and the number of iterations required to compute T* is logarithmic in the sequential depth of TR (the diameter of the state transition graph represented by TR).
The transitive closure describes the pairs of states that are connected by at least one path in the state graph of FSM.

See Also TrCompose
Defined in trClosure.c

static Ddi_Dd_t * 
TrCompose(
  Tr_Mgr_t * trMgr, Tr Manager
  Ddi_Dd_t * f, first function
  Ddi_Dd_t * g, second function
  Ddi_VarArray_t * s, array of s variables
  Ddi_VarArray_t * y, array of y variables
  Ddi_VarArray_t * z, array of z variables
  Ddi_VarSet_t * suppZ z variables as a set
)
Computes the relational composition of f(s,z) and g(z,y), after proper variable substitutions on the initial f(s,y): initially both f and g are expressed as functions of (s,y). This is the basic step of iterative squaring using monolithic transition relations.

Side Effects None

Defined in trClosure.c

Ddi_Dd_t * 
Tr_BuildClusteredTR(
  Tr_Mgr_t * trMgr, Tr manager
  Ddi_Dd_t * tr, Input partitioned/clustered relation
  Ddi_VarSet_t * svars, Set of smoothing variables
  Ddi_VarSet_t * qvars, Set of quantifying variables
  Ddi_VarSet_t * rvars, Set of range variables
  int  threshold Threshold for creating clusters
)
Create the clustered TR from transition relation by clustering several function together.
The size of clustering is controlled by a threshold value. -1 is used to specify that there is no threshold.

See Also Trav_BuildPartTranRel
Defined in trBuild.c

Ddi_Dd_t * 
Tr_BuildMonoTR(
  Tr_Mgr_t * trMgr, TR manager
  Ddi_Dd_t * tr, Input partitioned/clustered relation
  Ddi_VarSet_t * svars, Set of smoothing variables
  Ddi_VarSet_t * qvars, Set of quantifying variables
  Ddi_VarSet_t * rvars Set of range variables
)
Create the monilithic transition relation using clustering with infinite threshold.

See Also Trav_BuildClusteredTR
Defined in trBuild.c

Ddi_Dd_t * 
Tr_BuildPartTR(
  Ddi_DdArray_t * delta, array of state function
  Ddi_VarArray_t * y array of next state variables
)
The function receives the array of next state functions and the array of next state variables.
It returns a cojunctively partitioned transition relation, or NULL in case of failure.

Side Effects None

See Also Trav_BuildClusteredTR
Defined in trBuild.c

Ddi_Dd_t * 
Tr_BuildTransClosure(
  Tr_Mgr_t * trMgr, Tr manager
  Ddi_Dd_t * TR, Transition Relation
  Ddi_VarArray_t * s, present state vars
  Ddi_VarArray_t * y, next state vars
  Ddi_VarArray_t * z intermediate state vars
)
Transitive closure of a Monolithic or Disjunctively partitioned Transition Relation is operated using the iterative squaring method, expressed by the following recurrence equations:

T(0)(s,y) = TR(s,y)
T(i+1)(s,y)= TR(s,y) + Exist(z) ( T(i)(s,z) * T(i)(z,y) )

The least fixed point is T* (transitive closure) and the number of iterations required to compute T* is logarithmic in the sequential depth of TR (the diameter of the state transition graph represented by TR).
The transitive closure describes the pairs of states that are connected by at least one path in the state graph of FSM. This function is a shell to TrBuildTransClosure, where the job is really done. Nothing is done here if the array of "intermediate" z variables is not NULL, whereas a temporary BDD manager is created (and destroyed when the job is done) if z is NULL, to avoid creating new variables in the original manager. Primary input variables (NON quantifying and NON state variables) are not taken into account. This means that they are NOT duplicated at every step as in standart squaring. They should (since they could) be quantifyed out from a monolithic or disjunctively partitioned TR. Otherwise the algorithm only closes paths with constant input values.

Side Effects A Ddi Manager (a BDD manager) is temporarily allocated if required for all the operations involved, if the auxiliary set of variables (Zs) must be created.

See Also TrBuildTransClosure
Defined in trClosure.c

int 
Tr_DdSortPartitions(
  Tr_Mgr_t * trMgr, Tr manager
  Ddi_Dd_t * F, Partitioned TR
  Ddi_VarSet_t * svars, Set of smoothing variables
  Ddi_VarSet_t * qvars, Set of quantifying variables
  Ddi_VarSet_t * rvars, Set of range variables
  Tr_Sort_e  method Sorting method
)
Given an BDDs'array , the function sorts the BDDs in the array in order to find the best sort for compute esistential abstraction of BDDs product. The smoothing variable set should include the quantifying ones, too. It returns 1 if successfully sorted, 0 otherwise.

Side Effects none

Defined in trSort.c

Tr_Mgr_t * 
Tr_MgrInit(
  char * trName, Name of the FSM structure
  Ddi_DdMgr * dd Decision Diagram Manager
)
Creates a DdManager.

Side Effects none

See Also Ddi_DdiMgrQuit
Defined in trMgr.c

int 
Tr_MgrOperation(
  Tr_Mgr_t * trMgr, TR Manager
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlagP Type of the Pointer Returned
)
Performs an Operation on a Transition Relation Manager. The allowed operations are specified by the enumerated type Pdtutil_MgrOp_t. Returns the result of the operation, the enumerated type Pdtutil_MgrRet_t.

See Also CmdMgrOperation CmdRegOperation Fsm_MgrOperation Trav_MgrOperation
Defined in trMgr.c

int 
Tr_MgrPrintStats(
  Tr_Mgr_t * trMgr Tr manager
)
Prints Statistics on a Transition Relation Manager on standard output.

Defined in trMgr.c

void 
Tr_MgrQuit(
  Tr_Mgr_t * trMgr Tr manager
)
Closes a Transition Relation Manager freeing all the correlated fields.

Side Effects none

See Also Ddi_DdiMgrInit
Defined in trMgr.c

int 
Tr_MgrReadClustThreshold(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read cluster threshold

Side Effects none

Defined in trMgr.c

Ddi_DdMgr * 
Tr_MgrReadDdiMgrDefault(
  Tr_Mgr_t * trMgr trersal manager
)
Read default DDi Mgr

Side Effects none

Defined in trMgr.c

Ddi_VarArray_t * 
Tr_MgrReadI(
  Tr_Mgr_t * trMgr tr manager
)
Read PI array

Side Effects none

Defined in trMgr.c

int 
Tr_MgrReadMaxIter(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read the maximum number of closure iterations.

Side Effects none

Defined in trMgr.c

Ddi_VarArray_t * 
Tr_MgrReadNS(
  Tr_Mgr_t * trMgr tr manager
)
Read NS array in the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

Ddi_VarArray_t * 
Tr_MgrReadPS(
  Tr_Mgr_t * trMgr tr manager
)
Read PS array in the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

Tr_Sort_e 
Tr_MgrReadSortMethod(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read sort method

Side Effects none

Defined in trMgr.c

double 
Tr_MgrReadSortW(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  int  i 
)
Read sort weight

Side Effects none

Defined in trMgr.c

int 
Tr_MgrReadSquaringMethod(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read the squaring method

Side Effects none

Defined in trMgr.c

char * 
Tr_MgrReadTrName(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read verbosity

Side Effects none

Defined in trMgr.c

Ddi_Dd_t * 
Tr_MgrReadTr(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read TR in the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

Pdtutil_VerbLevel_e 
Tr_MgrReadVerbosity(
  Tr_Mgr_t * trMgr Transition Relation Manager
)
Read verbosity

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetClustThreshold(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  int  ClustThreshold Threshold
)
Set the cluster threshold

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetDdiMgrDefault(
  Tr_Mgr_t * trMgr, trersal manager
  Ddi_DdMgr * mgr dd Manager
)
Set default DDi Mgr on the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetI(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Ddi_VarArray_t * i Array of variables
)
Set the PI array

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetMaxIter(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  int  maxIter max iterations
)
Set the maximum number of closure iterations

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetNS(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Ddi_VarArray_t * ns Array of variables
)
Set the NS array in the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetPS(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Ddi_VarArray_t * ps Array of Variables
)
Set the PS array

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetSortMethod(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Tr_Sort_e  sortMethod Method
)
Set the sort Method

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetSortW(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  int  i, 
  double  SortW Weight
)
Set the sort weight

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetSquaringMethod(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  int  method Method
)
Set the squaring method

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetTrName(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  char * trName Traversal Manager Name
)

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetTr(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Ddi_Dd_t * tr Transition Relation
)
Set the Transition Relation in the Transition Relation Manager.

Side Effects none

Defined in trMgr.c

void 
Tr_MgrSetVerbosity(
  Tr_Mgr_t * trMgr, Transition Relation Manager
  Pdtutil_VerbLevel_e  verbosity Verbosity
)
Set the period for verbosity enabling.

Side Effects none

Defined in trMgr.c

void 
Tr_RemoveLambdaLatches(
  Tr_Mgr_t * trMgr TR manager
)
Remove the so-called lambda-latches following the strategy presented at ICCAD'96 by Cabodi, Camurati, Quer.

See Also Trav_BuildClusteredTR
Defined in trBuild.c

char * 
Tr_TrSortEnum2String(
  Tr_Sort_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none

Defined in trUtil.c

Tr_Sort_e 
Tr_TrSortString2Enum(
  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 verbosity enumerated type.

Side Effects none

Defined in trUtil.c

static int 
WeightedSort(
  Tr_Mgr_t * trMgr, Tr manager
  Ddi_DdMgr * dd, dd manager
  PartitionInfo_t ** FSa, array of Partition Infos
  int  nPart, number of partitions
  Tr_Sort_e  method sorting method
)
The method of sorting is the heuristic method of Ranjan

Side Effects none

See Also Tr_DdArraySort()
Defined in trSort.c

Last updated on 990617 11h53