21#ifndef ABC__map__if__if_h
22#define ABC__map__if__if_h
53#define IF_MAX_LUTSIZE 32
55#define IF_MAX_FUNC_LUTSIZE 15
57#define IF_INFINITY 100000000
59#define IF_COST_MAX 4095
61#define IF_BIG_CHAR ((char)120)
387static inline int If_IsComplement(
If_Obj_t *
p ) {
return (
int )(((ABC_PTRUINT_T)
p) & 01); }
389static inline int If_ManCiNum(
If_Man_t *
p ) {
return p->nObjs[
IF_CI]; }
390static inline int If_ManCoNum(
If_Man_t *
p ) {
return p->nObjs[
IF_CO]; }
392static inline int If_ManObjNum(
If_Man_t *
p ) {
return Vec_PtrSize(
p->vObjs); }
397static inline If_Obj_t * If_ManLi(
If_Man_t *
p,
int i ) {
return (
If_Obj_t *)Vec_PtrEntry(
p->vCos, If_ManCoNum(
p) -
p->pPars->nLatchesCo + i ); }
398static inline If_Obj_t * If_ManLo(
If_Man_t *
p,
int i ) {
return (
If_Obj_t *)Vec_PtrEntry(
p->vCis, If_ManCiNum(
p) -
p->pPars->nLatchesCi + i ); }
405static inline int If_ObjIsLatch(
If_Obj_t * pObj ) {
return If_ObjIsCi(pObj) && pObj->
pFanin0 != NULL; }
408static inline int If_ObjId(
If_Obj_t * pObj ) {
return pObj->
Id; }
411static inline int If_ObjFaninC0(
If_Obj_t * pObj ) {
return pObj->
fCompl0; }
412static inline int If_ObjFaninC1(
If_Obj_t * pObj ) {
return pObj->
fCompl1; }
413static inline void * If_ObjCopy(
If_Obj_t * pObj ) {
return pObj->
pCopy; }
414static inline int If_ObjLevel(
If_Obj_t * pObj ) {
return pObj->
Level; }
415static inline void If_ObjSetLevel(
If_Obj_t * pObj,
int Level ) { pObj->
Level = Level; }
416static inline void If_ObjSetCopy(
If_Obj_t * pObj,
void * pCopy ) { pObj->
pCopy = pCopy; }
419static inline int If_CutLeaveNum(
If_Cut_t * pCut ) {
return pCut->
nLeaves; }
420static inline int * If_CutLeaves(
If_Cut_t * pCut ) {
return pCut->
pLeaves; }
422static inline unsigned If_CutSuppMask(
If_Cut_t * pCut ) {
return (~(
unsigned)0) >> (32-pCut->
nLeaves); }
423static inline int If_CutTruthWords(
int nVarsMax ) {
return nVarsMax <= 5 ? 2 : (1 << (nVarsMax - 5)); }
424static inline int If_CutPermWords(
int nVarsMax ) {
return nVarsMax /
sizeof(int) + ((nVarsMax %
sizeof(
int)) > 0); }
425static inline int If_CutLeafBit(
If_Cut_t * pCut,
int i ) {
return (pCut->
uMaskFunc >> i) & 1; }
431static inline unsigned If_ObjCutSign(
unsigned ObjId ) {
return (1 << (ObjId % 31)); }
432static inline unsigned If_ObjCutSignCompute(
If_Cut_t *
p ) {
unsigned s = 0;
int i;
for ( i = 0; i < If_CutLeaveNum(
p); i++ ) s |= If_ObjCutSign(
p->pLeaves[i]);
return s; }
434static inline float If_ObjArrTime(
If_Obj_t * pObj ) {
return If_ObjCutBest(pObj)->
Delay; }
435static inline void If_ObjSetArrTime(
If_Obj_t * pObj,
float ArrTime ) { If_ObjCutBest(pObj)->Delay = ArrTime; }
437static inline float If_ObjLValue(
If_Obj_t * pObj ) {
return pObj->
LValue; }
438static inline void If_ObjSetLValue(
If_Obj_t * pObj,
float LValue ) { pObj->
LValue = LValue; }
440static inline void * If_CutData(
If_Cut_t * pCut ) {
return *(
void **)pCut; }
441static inline void If_CutSetData(
If_Cut_t * pCut,
void * pData ) { *(
void **)pCut = pData; }
443static inline int If_CutDataInt(
If_Cut_t * pCut ) {
return *(
int *)pCut; }
444static inline void If_CutSetDataInt(
If_Cut_t * pCut,
int Data ) { *(
int *)pCut = Data; }
449static inline unsigned * If_CutTruthUR(
If_Man_t *
p,
If_Cut_t * pCut) {
return (
unsigned *)If_CutTruthWR(
p, pCut); }
450static inline word * If_CutTruthW(
If_Man_t *
p,
If_Cut_t * pCut ) {
assert( pCut->
iCutFunc >= 0 ); Abc_TtCopy(
p->puTempW, If_CutTruthWR(
p, pCut),
p->nTruth6Words[pCut->
nLeaves], If_CutTruthIsCompl(pCut) );
return p->puTempW; }
451static inline unsigned * If_CutTruth(
If_Man_t *
p,
If_Cut_t * pCut ) {
return (
unsigned *)If_CutTruthW(
p, pCut); }
453static inline int If_CutDsdLit(
If_Man_t *
p,
If_Cut_t * pCut ) {
return Abc_Lit2LitL( Vec_IntArray(
p->vTtDsds[pCut->
nLeaves]), If_CutTruthLit(pCut) ); }
454static inline int If_CutDsdIsCompl(
If_Man_t *
p,
If_Cut_t * pCut ) {
return Abc_LitIsCompl( If_CutDsdLit(
p, pCut) ); }
457static inline float If_CutLutArea(
If_Man_t *
p,
If_Cut_t * pCut ) {
return pCut->
fAndCut ?
p->pPars->nAndArea : (pCut->
fUser? (float)pCut->
Cost : (
p->pPars->pLutLib?
p->pPars->pLutLib->pLutAreas[pCut->
nLeaves] : (float)1.0)); }
458static inline float If_CutLutDelay(
If_LibLut_t *
p,
int Size,
int iPin ) {
return p ? (
p->fVarPinDelays ?
p->pLutDelays[Size][iPin] :
p->pLutDelays[Size][0]) : 1.0; }
465#define IF_MIN(a,b) (((a) < (b))? (a) : (b))
466#define IF_MAX(a,b) (((a) > (b))? (a) : (b))
469#define IF_FLOAT_LARGE ((float)1.0e+20)
470#define IF_FLOAT_SMALL ((float)1.0e-20)
471#define IF_INT_LARGE (10000000)
474#define If_ManForEachCi( p, pObj, i ) \
475 Vec_PtrForEachEntry( If_Obj_t *, p->vCis, pObj, i )
477#define If_ManForEachCo( p, pObj, i ) \
478 Vec_PtrForEachEntry( If_Obj_t *, p->vCos, pObj, i )
480#define If_ManForEachPi( p, pObj, i ) \
481 Vec_PtrForEachEntryStop( If_Obj_t *, p->vCis, pObj, i, If_ManCiNum(p) - p->pPars->nLatchesCi - p->pPars->nLatchesCiBox )
483#define If_ManForEachPo( p, pObj, i ) \
484 Vec_PtrForEachEntryStartStop( If_Obj_t *, p->vCos, pObj, i, p->pPars->nLatchesCoBox, If_ManCoNum(p) - p->pPars->nLatchesCo )
486#define If_ManForEachLatchInput( p, pObj, i ) \
487 Vec_PtrForEachEntryStart( If_Obj_t *, p->vCos, pObj, i, If_ManCoNum(p) - p->pPars->nLatchesCo )
488#define If_ManForEachLatchOutput( p, pObj, i ) \
489 Vec_PtrForEachEntryStartStop( If_Obj_t *, p->vCis, pObj, i, If_ManCiNum(p) - p->pPars->nLatchesCi - p->pPars->nLatchesCiBox, If_ManCiNum(p) - p->pPars->nLatchesCiBox )
491#define If_ManForEachObj( p, pObj, i ) \
492 Vec_PtrForEachEntry( If_Obj_t *, p->vObjs, pObj, i )
494#define If_ManForEachObjReverse( p, pObj, i ) \
495 Vec_PtrForEachEntry( If_Obj_t *, p->vObjsRev, pObj, i )
497#define If_ManForEachNode( p, pObj, i ) \
498 If_ManForEachObj( p, pObj, i ) if ( pObj->Type != IF_AND ) {} else
500#define If_ObjForEachCut( pObj, pCut, i ) \
501 for ( i = 0; (i < (pObj)->pCutSet->nCuts) && ((pCut) = (pObj)->pCutSet->ppCuts[i]); i++ )
503#define If_CutForEachLeaf( p, pCut, pLeaf, i ) \
504 for ( i = 0; (i < (int)(pCut)->nLeaves) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i])); i++ )
505#define If_CutForEachLeafReverse( p, pCut, pLeaf, i ) \
506 for ( i = (int)(pCut)->nLeaves - 1; (i >= 0) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i])); i-- )
510#define If_CutForEachLeafSeq( p, pCut, pLeaf, Shift, i ) \
511 for ( i = 0; (i < (int)(pCut)->nLeaves) && ((pLeaf) = If_ManObj(p, (pCut)->pLeaves[i] >> 8)) && (((Shift) = ((pCut)->pLeaves[i] & 255)) >= 0); i++ )
563 char * pLut0,
char * pLut1,
word * pFunc0,
word * pFunc1 );
564extern int If_CluCheckExt3(
void *
p,
word * pTruth,
int nVars,
int nLutLeaf,
int nLutLeaf2,
int nLutRoot,
565 char * pLut0,
char * pLut1,
char * pLut2,
word * pFunc0,
word * pFunc1,
word * pFunc2 );
567 char * pLut0,
char * pLut1,
word * pFunc0,
word * pFunc1 );
585extern void If_DsdManPrint(
If_DsdMan_t *
p,
char * pFileName,
int Number,
int Support,
int fOccurs,
int fTtDump,
int fVerbose );
610extern unsigned If_DsdManCheckXY(
If_DsdMan_t *
p,
int iDsd,
int LutSize,
int fDerive,
unsigned uMaskNot,
int fHighEffort,
int fVerbose );
636extern If_Box_t *
If_BoxStart(
char * pName,
int Id,
int nPis,
int nPos,
int fSeq,
int fBlack,
int fOuter );
709extern int acd_evaluate(
word * pTruth,
unsigned nVars,
int lutSize,
unsigned *pdelay,
unsigned *cost,
int try_no_late_arrival );
710extern int acd_decompose(
word * pTruth,
unsigned nVars,
int lutSize,
unsigned *pdelay,
unsigned char *decomposition );
711extern int acd2_evaluate(
word * pTruth,
unsigned nVars,
int lutSize,
unsigned *pdelay,
unsigned *cost,
int try_no_late_arrival );
712extern int acd2_decompose(
word * pTruth,
unsigned nVars,
int lutSize,
unsigned *pdelay,
unsigned char *decomposition );
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
float If_LutDecPinRequired(If_Man_t *p, If_Cut_t *pCut, int i, float required)
void If_ObjPrint(If_Obj_t *pObj)
struct If_LibBox_t_ If_LibBox_t
int Ifn_NtkInputNum(Ifn_Ntk_t *p)
If_DsdMan_t * If_DsdManFilter(If_DsdMan_t *p, int Limit)
If_LibBox_t * If_LibBoxRead2(char *pFileName)
int If_CutMerge(If_Man_t *p, If_Cut_t *pCut0, If_Cut_t *pCut1, If_Cut_t *pCut)
int If_MatchCheck1(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
void If_ManCleanCutData(If_Man_t *p)
void If_DsdManCleanOccur(If_DsdMan_t *p, int fVerbose)
int acd_decompose(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition)
void * If_ManDeriveGiaFromCells(void *p)
unsigned If_DsdManCheckXY(If_DsdMan_t *p, int iDsd, int LutSize, int fDerive, unsigned uMaskNot, int fHighEffort, int fVerbose)
void If_DsdManSetNewAsUseless(If_DsdMan_t *p)
int If_CutLutBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
float If_CutEdgeRefed(If_Man_t *p, If_Cut_t *pCut)
void If_LibBoxPrint(FILE *pFile, If_LibBox_t *p)
int If_CutCheck(If_Cut_t *pCut)
void Ifn_NtkPrint(Ifn_Ntk_t *p)
void If_ManCreateChoice(If_Man_t *p, If_Obj_t *pRepr)
float If_CutAreaDeref(If_Man_t *p, If_Cut_t *pCut)
void If_ObjPerformMappingAnd(If_Man_t *p, If_Obj_t *pObj, int Mode, int fPreprocess, int fFirst)
int If_CutComputeTruthPerm(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int fCompl0, int fCompl1)
void If_ManCleanMarkV(If_Man_t *p)
void If_ManSetupCutTriv(If_Man_t *p, If_Cut_t *pCut, int ObjId)
float If_CutPowerFlow(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
float If_CutEdgeDerefed(If_Man_t *p, If_Cut_t *pCut)
void If_CutPrint(If_Cut_t *pCut)
If_Obj_t * If_ManCreateCo(If_Man_t *p, If_Obj_t *pDriver)
float If_CutDelay(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut)
If_LibLut_t * If_LibLutSetSimple(int nLutSize)
void If_DsdManPrint(If_DsdMan_t *p, char *pFileName, int Number, int Support, int fOccurs, int fTtDump, int fVerbose)
If_Box_t * If_LibBoxReadBox(If_LibBox_t *p, int Id)
void If_DsdManCleanMarks(If_DsdMan_t *p, int fVerbose)
int If_CutPerformCheck54(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
struct If_Par_t_ If_Par_t
int If_DsdManLutSize(If_DsdMan_t *p)
void If_ManSetupCiCutSets(If_Man_t *p)
float If_CutEdgeFlow(If_Man_t *p, If_Cut_t *pCut)
int If_CutFilter(If_Set_t *pCutSet, If_Cut_t *pCut, int fSaveCut0)
void If_LibLutPrint(If_LibLut_t *pLutLib)
void If_LibBoxWrite(char *pFileName, If_LibBox_t *p)
void Id_DsdManTuneStr(If_DsdMan_t *p, char *pStruct, int nConfls, int nProcs, int nInputs, int fVerbose)
float If_ManScanMapping(If_Man_t *p)
void If_DsdManMerge(If_DsdMan_t *p, If_DsdMan_t *pNew)
float If_CutPowerRefed(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
float If_CutAverageRefs(If_Man_t *p, If_Cut_t *pCut)
Vec_Ptr_t * If_ManCollectMappingDirect(If_Man_t *p)
void If_ManResetOriginalRefs(If_Man_t *p)
float If_CutPowerRef(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
int If_CluCheckXXExt(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutRoot, char *pLut0, char *pLut1, word *pFunc0, word *pFunc1)
struct If_Cut_t_ If_Cut_t
float If_CutAreaRef(If_Man_t *p, If_Cut_t *pCut)
int If_CutPerformCheck75(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
If_Set_t * If_ManSetupNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
int If_DsdManSuppSize(If_DsdMan_t *p, int iDsd)
If_LibBox_t * If_LibBoxRead(char *pFileName)
int acd_evaluate(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival)
int If_CutPerformCheckXX(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
If_Box_t * If_BoxStart(char *pName, int Id, int nPis, int nPos, int fSeq, int fBlack, int fOuter)
FUNCTION DEFINITIONS ///.
int If_ManSatFindCofigBits(void *pSat, Vec_Int_t *vPiVars, Vec_Int_t *vPoVars, word *pTruth, int nVars, word Perm, int nInps, Vec_Int_t *vValues)
int If_MatchCheck2(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
char * If_DsdManGetCellStr(If_DsdMan_t *p)
Ifn_Ntk_t * Ifn_NtkParse(char *pStr)
int If_CutPerformCheck07(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
unsigned If_ManSatCheckXYall(void *pSat, int nLutSize, word *pTruth, int nVars, Vec_Int_t *vLits)
void If_CutRotatePins(If_Man_t *p, If_Cut_t *pCut)
float If_CutAreaFlow(If_Man_t *p, If_Cut_t *pCut)
If_Obj_t * If_ManCreateXor(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
int Ifn_NtkMatch(Ifn_Ntk_t *p, word *pTruth, int nVars, int nConfls, int fVerbose, int fVeryVerbose, word *pConfig)
int If_ManSatDeriveGiaFromBits(void *pNew, Ifn_Ntk_t *p, word *pTtData, Vec_Int_t *vLeaves, Vec_Int_t *vValues)
int If_DsdManObjNum(If_DsdMan_t *p)
void Id_DsdManTuneThresh(If_DsdMan_t *p, int fUnate, int fThresh, int fThreshHeuristic, int fVerbose)
Vec_Ptr_t * If_ManReverseOrder(If_Man_t *p)
void If_ManDerefChoiceCutSet(If_Man_t *p, If_Obj_t *pObj)
int If_LibLutDelaysAreDiscrete(If_LibLut_t *pLutLib)
word If_CutPerformDerive07(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int Ifn_NtkTtBits(char *pStr)
void If_CutTraverse(If_Man_t *p, If_Obj_t *pRoot, If_Cut_t *pCut, Vec_Ptr_t *vNodes)
int If_CluCheckExt3(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutLeaf2, int nLutRoot, char *pLut0, char *pLut1, char *pLut2, word *pFunc0, word *pFunc1, word *pFunc2)
void If_DsdManInvertMarks(If_DsdMan_t *p, int fVerbose)
int If_ManPerformMappingComb(If_Man_t *p)
void If_ManMarkMapping(If_Man_t *p)
int If_CutLutBalanceEval(If_Man_t *p, If_Cut_t *pCut)
int If_ManCountSpecialPos(If_Man_t *p)
int If_DsdManCompute(If_DsdMan_t *p, word *pTruth, int nLeaves, unsigned char *pPerm, char *pLutStruct)
void If_DsdManTune(If_DsdMan_t *p, int LutSize, int fFast, int fAdd, int fSpec, int fVerbose)
int If_DsdManVarNum(If_DsdMan_t *p)
void If_CutPrintTiming(If_Man_t *p, If_Cut_t *pCut)
int If_CutDsdBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
int If_CutDelaySop(If_Man_t *p, If_Cut_t *pCut)
int If_CutPerformCheck08(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
If_LibLut_t * If_LibLutRead(char *FileName)
struct If_LibLut_t_ If_LibLut_t
word * If_DsdManGetFuncConfig(If_DsdMan_t *p, int iDsd)
void If_DsdManSave(If_DsdMan_t *p, char *pFileName)
void * If_ManSatBuildXY(int nLutSize)
DECLARATIONS ///.
int If_CutPerformCheck10(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
void If_ObjPerformMappingChoice(If_Man_t *p, If_Obj_t *pObj, int Mode, int fPreprocess)
void If_DsdManAllocIsops(If_DsdMan_t *p, int nLutSize)
void If_ManRestart(If_Man_t *p)
float If_LibLutFastestPinDelay(If_LibLut_t *p)
#define IF_MAX_LUTSIZE
INCLUDES ///.
struct If_DsdMan_t_ If_DsdMan_t
void If_LibLutFree(If_LibLut_t *pLutLib)
float If_CutDelayLutStruct(If_Man_t *p, If_Cut_t *pCut, char *pStr, float WireDelay)
void If_ManSetDefaultPars(If_Par_t *pPars)
FUNCTION DECLARATIONS ///.
Vec_Int_t * If_ManCollectMappingInt(If_Man_t *p)
int If_LutDecReEval(If_Man_t *p, If_Cut_t *pCut)
int Ifn_NtkLutSizeMax(Ifn_Ntk_t *p)
int * If_CutArrTimeProfile(If_Man_t *p, If_Cut_t *pCut)
Vec_Mem_t * If_DeriveHashTable6(int nVars, word Truth)
int If_LibBoxNum(If_LibBox_t *p)
float If_ManScanMappingSeq(If_Man_t *p)
float If_ManDelayMax(If_Man_t *p, int fSeq)
If_Obj_t * If_ManCreateAnd(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
int If_CutVerifyCuts(If_Set_t *pCutSet, int fOrdered)
int acd2_evaluate(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned *cost, int try_no_late_arrival)
struct If_Set_t_ If_Set_t
struct Ifn_Ntk_t_ Ifn_Ntk_t
If_Obj_t * If_ManCreateMux(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1, If_Obj_t *pCtrl)
float If_CutEdgeDeref(If_Man_t *p, If_Cut_t *pCut)
void If_ManComputeSwitching(If_Man_t *p)
FUNCTION DEFINITIONS ///.
If_DsdMan_t * If_DsdManAlloc(int nVars, int nLutSize)
void If_ManComputeRequired(If_Man_t *p)
void If_ManStop(If_Man_t *p)
int acd2_decompose(word *pTruth, unsigned nVars, int lutSize, unsigned *pdelay, unsigned char *decomposition)
int If_ManPerformMapping(If_Man_t *p)
void If_LibBoxAdd(If_LibBox_t *p, If_Box_t *pBox)
void If_ManSetupSetAll(If_Man_t *p, int nCrossCut)
int If_DsdManReadMark(If_DsdMan_t *p, int iDsd)
float If_CutEdgeRef(If_Man_t *p, If_Cut_t *pCut)
int If_ManPerformMappingSeq(If_Man_t *p)
int If_Lut2DecEval(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pObj, int optDelay, int fFirst)
void If_CutSort(If_Man_t *p, If_Set_t *pCutSet, If_Cut_t *pCut)
If_Box_t * If_LibBoxFindBox(If_LibBox_t *p, char *pName)
int If_CutCheckTruth6(If_Man_t *p, If_Cut_t *pCut)
void If_CutOrder(If_Cut_t *pCut)
float If_CutAreaRefed(If_Man_t *p, If_Cut_t *pCut)
void If_CutLift(If_Cut_t *pCut)
int If_ManPerformMappingRound(If_Man_t *p, int nCutsUsed, int Mode, int fPreprocess, int fFirst, char *pLabel)
void * If_ManSatBuildFromCell(char *pStr, Vec_Int_t **pvPiVars, Vec_Int_t **pvPoVars, Ifn_Ntk_t **ppNtk)
float If_CutPowerDeref(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
#define IF_MAX_FUNC_LUTSIZE
int If_CluCheckExt(void *p, word *pTruth, int nVars, int nLutLeaf, int nLutRoot, char *pLut0, char *pLut1, word *pFunc0, word *pFunc1)
int If_ManSatCheckXY(void *pSat, int nLutSize, word *pTruth, int nVars, unsigned uSet, word *pTBound, word *pTFree, Vec_Int_t *vLits)
struct If_Man_t_ If_Man_t
BASIC TYPES ///.
struct If_Box_t_ If_Box_t
void If_ManDerefNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
int If_LibLutDelaysAreDifferent(If_LibLut_t *pLutLib)
If_Man_t * If_ManStart(If_Par_t *pPars)
FUNCTION DEFINITIONS ///.
If_Obj_t * If_ManCreateCi(If_Man_t *p)
void If_LibBoxFree(If_LibBox_t *p)
float If_LibLutSlowestPinDelay(If_LibLut_t *p)
float If_CutAreaDerefed(If_Man_t *p, If_Cut_t *pCut)
If_LibBox_t * If_LibBoxStart()
void If_ManImproveMapping(If_Man_t *p)
FUNCTION DEFINITIONS ///.
int If_DsdManPermBitNum(If_DsdMan_t *p)
int If_LibBoxLoad(char *pFileName)
int If_CutPerformCheck16(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
int If_CutSopBalanceEvalInt(Vec_Int_t *vCover, int *pTimes, int *pFaninLits, Vec_Int_t *vAig, int *piRes, int nSuppAll, int *pArea)
int If_CutSopBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
int If_CutSopBalanceEval(If_Man_t *p, If_Cut_t *pCut, Vec_Int_t *vAig)
If_DsdMan_t * If_DsdManLoad(char *pFileName)
int If_CutMergeOrdered(If_Man_t *p, If_Cut_t *pCut0, If_Cut_t *pCut1, If_Cut_t *pCut)
struct If_Obj_t_ If_Obj_t
int If_ManCrossCut(If_Man_t *p)
void If_DsdManFree(If_DsdMan_t *p, int fVerbose)
struct Ifif_Par_t_ Ifif_Par_t
void If_DsdManSetLutSize(If_DsdMan_t *p, int nLutSize)
float If_CutPowerDerefed(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pRoot)
int If_CutComputeTruth(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int fCompl0, int fCompl1)
void If_CutPropagateRequired(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut, float Required)
void If_ManSatUnbuild(void *p)
If_LibLut_t * If_LibLutDup(If_LibLut_t *p)
void If_ManCleanNodeCopy(If_Man_t *p)
DECLARATIONS ///.
int If_CutSopBalancePinDelaysInt(Vec_Int_t *vCover, int *pTimes, word *pFaninRes, int nSuppAll, word *pRes)
int If_LutDecEval(If_Man_t *p, If_Cut_t *pCut, If_Obj_t *pObj, int optDelay, int fFirst)
int If_DsdManCheckDec(If_DsdMan_t *p, int iDsd)
int If_DsdManTtBitNum(If_DsdMan_t *p)
int If_CutDsdBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
char * If_DsdManFileName(If_DsdMan_t *p)
FUNCTION DEFINITIONS ///.
int If_CutPerformCheck45(If_Man_t *p, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
float If_ManScanMappingDirect(If_Man_t *p)
void * If_ManSatBuildXYZ(int nLutSize)
unsigned __int64 word
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Mem_Fixed_t_ Mem_Fixed_t
DECLARATIONS ///.
float pLutAreas[IF_MAX_LUTSIZE+1]
float pLutDelays[IF_MAX_LUTSIZE+1][IF_MAX_LUTSIZE+1]
Vec_Int_t * vTtDsds[IF_MAX_FUNC_LUTSIZE+1]
Vec_Str_t * vTtVars[IF_MAX_FUNC_LUTSIZE+1]
int pPerm[3][IF_MAX_LUTSIZE]
Vec_Int_t * vTtOccurs[IF_MAX_FUNC_LUTSIZE+1]
Vec_Mem_t * vTtMem[IF_MAX_FUNC_LUTSIZE+1]
Mem_Fixed_t * pMemEntries
Hash_IntMan_t * vPairHash
Vec_Str_t * vTtPerms[IF_MAX_FUNC_LUTSIZE+1]
int nTruth6Words[IF_MAX_FUNC_LUTSIZE+1]
int pArrTimeProfile[IF_MAX_FUNC_LUTSIZE]
Vec_Wec_t * vTtIsops[IF_MAX_FUNC_LUTSIZE+1]
Vec_Int_t * vTtDecs[IF_MAX_FUNC_LUTSIZE+1]
char pCanonPerm[IF_MAX_LUTSIZE]
int(* pFuncUser)(If_Man_t *, If_Obj_t *, If_Cut_t *)
int(* pFuncCell2)(If_Man_t *, word *, int, Vec_Str_t *, char **)
int(* pFuncCell)(If_Man_t *, unsigned *, int, int, char *)
int(* pFuncWrite)(If_Man_t *)
int(* pFuncCost)(If_Man_t *, If_Cut_t *)
float pLutDelays[IF_MAX_LUTSIZE]
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Mem_t_ Vec_Mem_t
DECLARATIONS ///.
struct Hash_IntMan_t_ Hash_IntMan_t
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.