19 #ifndef ABC__bdd__reo__reo_h
20 #define ABC__bdd__reo__reo_h
37 #define REO_REORDER_LIMIT 1.15 // determines the quality/runtime trade-off
38 #define REO_QUAL_PAR 3 // the quality [1 = simple lower bound, 2 = strict, larger = heuristic]
40 #define REO_CONST_LEVEL 30000 // the number of the constant level
41 #define REO_TOPREF_UNDEF 30000 // the undefined top reference
42 #define REO_CHUNK_SIZE 5000 // the number of units allocated at one time
43 #define REO_COST_EPSILON 0.0000001 // difference in cost large enough so that it counted as an error
44 #define REO_HIGH_VALUE 10000000 // a large value used to initialize some variables
46 #define REO_ENABLE 1 // the value of the enable flag
47 #define REO_DISABLE 0 // the value of the disable flag
174 #define Unit_Regular(u) ((reo_unit *)((ABC_PTRUINT_T)(u) & ~01))
175 #define Unit_Not(u) ((reo_unit *)((ABC_PTRUINT_T)(u) ^ 01))
176 #define Unit_NotCond(u,c) ((reo_unit *)((ABC_PTRUINT_T)(u) ^ (c)))
177 #define Unit_IsConstant(u) ((int)((u)->lev == REO_CONST_LEVEL))
void Extra_ReorderTest(DdManager *dd, DdNode *Func)
DECLARATIONS ///.
void reoReorderArray(reo_man *p, DdManager *dd, DdNode *Funcs[], DdNode *FuncsRes[], int nFuncs, int *pOrder)
FUNCTION DEFINITIONS ///.
void reoProfileAplStart(reo_man *p)
void Extra_ReorderSetVerbosity(reo_man *p, int fVerbose)
void reoProfileWidthStart(reo_man *p)
void Extra_ReorderSetVerification(reo_man *p, int fVerify)
DdNode * Extra_Reorder(reo_man *p, DdManager *dd, DdNode *Func, int *pOrder)
DdNode * Extra_ReorderCudd(DdManager *dd, DdNode *aFunc, int pPermuteReo[])
void reoProfileWidthPrint(reo_man *p)
reo_unit * reoTransferNodesToUnits_rec(reo_man *p, DdNode *F)
DECLARATIONS ///.
reo_unit * reoUnitsGetNextUnit(reo_man *p)
FUNCTION DEFINITIONS ///.
DdNode * reoTransferUnitsToNodes_rec(reo_man *p, reo_unit *pUnit)
void Extra_ReorderSetMinimizationType(reo_man *p, reo_min_type fMinType)
void reoUnitsRecycleUnitList(reo_man *p, reo_plane *pPlane)
int Extra_bddReorderTest(DdManager *dd, DdNode *bF)
void reoUnitsAddUnitToPlane(reo_plane *pPlane, reo_unit *pUnit)
void reoUnitsStopDispenser(reo_man *p)
void reoProfileWidthVerifyLevel(reo_plane *pPlane, int Level)
void reoProfileNodesStart(reo_man *p)
DECLARATIONS ///.
int Extra_addReorderTest(DdManager *dd, DdNode *aF)
void reoResizeStructures(reo_man *p, int nDdVarsMax, int nNodesMax, int nFuncs)
void Extra_ReorderArray(reo_man *p, DdManager *dd, DdNode *Funcs[], DdNode *FuncsRes[], int nFuncs, int *pOrder)
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
void reoProfileAplPrint(reo_man *p)
#define ABC_NAMESPACE_HEADER_END
void reoReorderSift(reo_man *p)
DECLARATIONS ///.
double reoReorderSwapAdjacentVars(reo_man *p, int Level, int fMovingUp)
FUNCTION DEFINITIONS ///.
void reoUnitsRecycleUnit(reo_man *p, reo_unit *pUnit)
void reoProfileNodesPrint(reo_man *p)
void Extra_ReorderSetIterations(reo_man *p, int nIters)
reo_man * Extra_ReorderInit(int nDdVarsMax, int nNodesMax)
FUNCTION DECLARATIONS ///.
void Extra_ReorderQuit(reo_man *p)
void reoProfileWidthStart2(reo_man *p)
void Extra_ReorderSetRemapping(reo_man *p, int fRemapUp)
struct _reo_test reo_test