VIS
|
#include "mvfaigInt.h"
Go to the source code of this file.
Functions | |
void | MvfAig_Init (void) |
void | MvfAig_End (void) |
MvfAig_Function_t * | MvfAig_FunctionAlloc (int n) |
void | MvfAig_FunctionFree (MvfAig_Function_t *function) |
MvfAig_Function_t * | MvfAig_FunctionDuplicate (MvfAig_Function_t *function) |
void | MvfAig_FunctionArrayFree (array_t *functionArray) |
int | MvfAig_FunctionReadNumComponents (MvfAig_Function_t *function) |
mAigEdge_t | MvfAig_FunctionReadComponent (MvfAig_Function_t *function, int i) |
MvfAig_Function_t * | MvfAig_FunctionCreateFromVariable (mAig_Manager_t *manager, mAigEdge_t mVarId) |
void | MvfAig_FunctionAddMintermsToComponent (mAig_Manager_t *manager, MvfAig_Function_t *function, int i, mAigEdge_t g) |
mAigEdge_t | MvfAig_FunctionsComputeEquivalentSet (mAig_Manager_t *manager, MvfAig_Function_t *function1, MvfAig_Function_t *function2) |
mAigEdge_t | MvfAig_FunctionComputeDomain (mAig_Manager_t *manager, MvfAig_Function_t *function) |
void MvfAig_End | ( | void | ) |
Function********************************************************************
Synopsis [Ends the mvfAig package.]
SideEffects []
SeeAlso [MvfAig_Init]
Definition at line 58 of file mvfaigUtil.c.
{ }
void MvfAig_FunctionAddMintermsToComponent | ( | mAig_Manager_t * | manager, |
MvfAig_Function_t * | function, | ||
int | i, | ||
mAigEdge_t | g | ||
) |
Function********************************************************************
Synopsis [Adds a set of minterms to the ith component of a function.]
Description [Adds a set of minterms, represented by the onset of an mAig g, to the onset of the ith component of a function. The mAig g is not freed.]
SideEffects []
SeeAlso [Mvf_FunctionAlloc]
Definition at line 263 of file mvfaigUtil.c.
{ mAigEdge_t oldComponent; mAigEdge_t newComponent; array_t *mAigArray = (array_t *) function; assert((i >= 0) && (i < array_n(mAigArray))); oldComponent = array_fetch(mAigEdge_t , mAigArray, i); newComponent = mAig_Or(manager, oldComponent, g); array_insert(mAigEdge_t , mAigArray, i, newComponent); }
MvfAig_Function_t* MvfAig_FunctionAlloc | ( | int | n | ) |
Function********************************************************************
Synopsis [Allocates a multi-valued function of n components.]
Description [Allocates a multi-valued function of n components. Each component is initialized to the zero bAig.]
SideEffects []
SeeAlso []
Definition at line 76 of file mvfaigUtil.c.
{ int i; array_t *bAndInvArray = array_alloc(bAigEdge_t, n); for (i = 0; i < n; i++) { array_insert(bAigEdge_t, bAndInvArray, i, bAig_Zero); } return ((MvfAig_Function_t *) bAndInvArray); }
void MvfAig_FunctionArrayFree | ( | array_t * | functionArray | ) |
Function********************************************************************
Synopsis [Frees an array of multi-valued output functions.]
Description [Frees an array of multi-valued output functions. Does nothing if functionArray is NULL.]
SideEffects []
SeeAlso [Mvf_FunctionFree]
Definition at line 140 of file mvfaigUtil.c.
{ int i; if (functionArray != NIL(array_t)) { for (i = 0; i < array_n(functionArray); i++) { MvfAig_Function_t *function = array_fetch(MvfAig_Function_t*, functionArray, i); MvfAig_FunctionFree(function); } array_free(functionArray); } }
mAigEdge_t MvfAig_FunctionComputeDomain | ( | mAig_Manager_t * | manager, |
MvfAig_Function_t * | function | ||
) |
Function********************************************************************
Synopsis [Computes the domain of a multi-valued function.]
Description [Returns an mAig representing the set of minterms which turn on some component of a function. In other words, returns the union of the onsets of the components. The domain is the tautology if and only if the function is completely specified.]
SideEffects []
SeeAlso [Mvf_FunctionTestIsCompletelySpecified]
Definition at line 335 of file mvfaigUtil.c.
{ int i; array_t *mAigArray = (array_t *) function; int numComponents = array_n(mAigArray); mAigEdge_t sum = mAig_Zero; for (i = 0; i < numComponents; i++) { mAigEdge_t ithComponent = array_fetch(mAigEdge_t , mAigArray, i); mAigEdge_t temp = sum; sum = mAig_Or(manager, temp, ithComponent); } return sum; }
MvfAig_Function_t* MvfAig_FunctionCreateFromVariable | ( | mAig_Manager_t * | manager, |
mAigEdge_t | mVarId | ||
) |
Function********************************************************************
Synopsis [Creates the multi-output function for a variable.]
Description [Given a variable, creates a function with as many components as values of the variable. The ith component of the function is true exactly when the variable is equal to the ith value (i.e. fi(x) = (x==i), where x is the variable specified by mddId). For the case where x is binary valued, the result is \[!x, x\]. Assumes that mddId is non-negative.]
SideEffects []
SeeAlso [Mvf_FunctionAlloc]
Definition at line 214 of file mvfaigUtil.c.
{ int i; array_t *mVarList = mAigReadMulVarList(manager); mAigMvar_t mVar; array_t *result; assert( (mVarId >= 0) && (mVarId <= array_n(mVarList))); mVar = array_fetch(mAigMvar_t, mVarList, mVarId); result = array_alloc(bAigEdge_t, mVar.values); /* array of all possible values of this variable */ for(i = 0; i < mVar.values; i++) { bAigEdge_t literal; literal = mAig_EquC(manager, mVarId, i); /* AndInv graph = 1 if the variable = i*/ array_insert(bAigEdge_t, result, i, literal); { /* The name of the node in AIG is node name = node value. */ /* char *valueStr = util_inttostr(i); char *name = util_strcat3(mVar.name,"=", valueStr); char *tmpName; int index; bAig_NodeSetName(manager, literal, name); FREE(valueStr); */ } } return ((MvfAig_Function_t *) result); }
MvfAig_Function_t* MvfAig_FunctionDuplicate | ( | MvfAig_Function_t * | function | ) |
Function********************************************************************
Synopsis [Duplicates a multi-valued output function.]
Description [Returns a new multi-valued output function, whose constituent MAIGs have been duplicated. Assumes that function is not NULL.]
SideEffects []
SeeAlso [Mvf_FunctionFree]
Definition at line 120 of file mvfaigUtil.c.
{
return ((MvfAig_Function_t *) array_dup((array_t *) function));
}
void MvfAig_FunctionFree | ( | MvfAig_Function_t * | function | ) |
Function********************************************************************
Synopsis [Frees a multi-valued output function.]
Description [Frees a multi-valued output function. Does nothing if function is NULL.]
SideEffects []
SeeAlso [MvfAig_FunctionAlloc]
Definition at line 101 of file mvfaigUtil.c.
{ array_free((array_t *) function); }
mAigEdge_t MvfAig_FunctionReadComponent | ( | MvfAig_Function_t * | function, |
int | i | ||
) |
Function********************************************************************
Synopsis [Returns the ith component of a multi-valued function.]
Description [Returns the mAndInv giving the minterms for which a multi-valued function evaluates to its ith value. ]
SideEffects []
SeeAlso []
Definition at line 189 of file mvfaigUtil.c.
{
bAigEdge_t component = array_fetch(bAigEdge_t, (array_t *) function, i);
return (component);
}
int MvfAig_FunctionReadNumComponents | ( | MvfAig_Function_t * | function | ) |
Function********************************************************************
Synopsis [Returns the number of components of a multi-valued function.]
Description [Returns the number of components of a multi-valued function. This is the same number as the value of the parameter passed to Mvf_FunctionAlloc.]
SideEffects []
SeeAlso [Mvf_FunctionAlloc]
Definition at line 169 of file mvfaigUtil.c.
{
return (array_n((array_t *) function));
}
mAigEdge_t MvfAig_FunctionsComputeEquivalentSet | ( | mAig_Manager_t * | manager, |
MvfAig_Function_t * | function1, | ||
MvfAig_Function_t * | function2 | ||
) |
Function********************************************************************
Synopsis [Returns the set of minterms on which two functions agree.]
Description [Returns the set of minterms on which two functions agree. For f = \[f1, f2, ..., fn\] and g = \[g1, g2, ..., gn\], the returned set is: AND(i = 1, ..., n) (fi XNOR gi). For the special case where f and g are binary valued, this function computes (f XNOR g). It is an error if the two functions have a different number of components.]
SideEffects []
Definition at line 294 of file mvfaigUtil.c.
{ int i; array_t *mAigArray1 = (array_t *) function1; array_t *mAigArray2 = (array_t *) function2; int numComponents = array_n(mAigArray1); mAigEdge_t product = mAig_One; assert(numComponents == array_n(mAigArray1)); assert(numComponents == array_n(mAigArray2)); for (i = 0; i < numComponents; i++) { mAigEdge_t mAig1 = array_fetch(mAigEdge_t, mAigArray1, i); mAigEdge_t mAig2 = array_fetch(mAigEdge_t, mAigArray2, i); mAigEdge_t xnor = mAig_Eq(manager, mAig1, mAig2); mAigEdge_t temp = product; product = mAig_And(manager, temp, xnor); } return product; }
void MvfAig_Init | ( | void | ) |
CFile***********************************************************************
FileName [mvfaigUtil.c]
PackageName [mvfaig]
Synopsis [Routines to create, manipulate and free multi-valued functions.]
SeeAlso [mvfAig.h]
Author [Mohammad Awedh]
Copyright [.]AutomaticStart AutomaticEnd Function********************************************************************
Synopsis [Initializes the mvfAig package.]
SideEffects []
SeeAlso [MvfAig_End]
Definition at line 43 of file mvfaigUtil.c.
{ }