Commit 6de83eb3 by Alan Mishchenko

Enabling LUT decomposition in two special cases.

parent 728291b0
...@@ -235,7 +235,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p ) ...@@ -235,7 +235,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p )
Abc_Print( 1, "lev =%5d ", LevelMax ); Abc_Print( 1, "lev =%5d ", LevelMax );
Abc_Print( 1, "mem =%5.2f MB", 4.0*(Gia_ManObjNum(p) + 2*nLuts + nFanins)/(1<<20) ); Abc_Print( 1, "mem =%5.2f MB", 4.0*(Gia_ManObjNum(p) + 2*nLuts + nFanins)/(1<<20) );
Abc_Print( 1, "\n" ); Abc_Print( 1, "\n" );
/*
{ {
char * pFileName = "stats_map.txt"; char * pFileName = "stats_map.txt";
static char FileNameOld[1000] = {0}; static char FileNameOld[1000] = {0};
...@@ -262,7 +262,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p ) ...@@ -262,7 +262,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p )
} }
fclose( pTable ); fclose( pTable );
} }
*/
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -649,7 +649,7 @@ int Gia_ManFromIfLogicNode( If_Man_t * p, Gia_Man_t * pNew, int iObj, Vec_Int_t ...@@ -649,7 +649,7 @@ int Gia_ManFromIfLogicNode( If_Man_t * p, Gia_Man_t * pNew, int iObj, Vec_Int_t
int nLeaves = Vec_IntSize(vLeaves); int nLeaves = Vec_IntSize(vLeaves);
int i, Length, nLutLeaf, nLutLeaf2, nLutRoot, iObjLit1, iObjLit2, iObjLit3; int i, Length, nLutLeaf, nLutLeaf2, nLutRoot, iObjLit1, iObjLit2, iObjLit3;
// workaround for the special case // workaround for the special case
if ( p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u ) if ( p && (p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u) )
pStr = "54"; pStr = "54";
// check if there is no LUT structures // check if there is no LUT structures
if ( pStr == NULL ) if ( pStr == NULL )
...@@ -746,7 +746,7 @@ int Gia_ManFromIfLogicNode( If_Man_t * p, Gia_Man_t * pNew, int iObj, Vec_Int_t ...@@ -746,7 +746,7 @@ int Gia_ManFromIfLogicNode( If_Man_t * p, Gia_Man_t * pNew, int iObj, Vec_Int_t
} }
// perform decomposition // perform decomposition
if ( p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u ) if ( p && (p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u) )
{ {
// if ( nLeaves < 8 && If_CutPerformCheck16( p, (unsigned *)pTruth, nVars, nLeaves, "44" ) ) // if ( nLeaves < 8 && If_CutPerformCheck16( p, (unsigned *)pTruth, nVars, nLeaves, "44" ) )
if ( nLeaves < 8 && If_CluCheckExt( NULL, pRes, nLeaves, 4, 4, pLut0, pLut1, &Func0, &Func1 ) ) if ( nLeaves < 8 && If_CluCheckExt( NULL, pRes, nLeaves, 4, 4, pLut0, pLut1, &Func0, &Func1 ) )
......
...@@ -248,7 +248,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan ) ...@@ -248,7 +248,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan )
Vec_IntPush( vLeaves, Mig_ObjCopy(pFanin) ); Vec_IntPush( vLeaves, Mig_ObjCopy(pFanin) );
if ( pMan->pPars->fDeriveLuts && (pMan->pPars->fUseTruth || pMan->pPars->fUseDsd) ) if ( pMan->pPars->fDeriveLuts && (pMan->pPars->fUseTruth || pMan->pPars->fUseDsd) )
{ {
extern int Gia_ManFromIfLogicNode( Gia_Man_t * pNew, int iObj, Vec_Int_t * vLeaves, Vec_Int_t * vLeavesTemp, extern int Gia_ManFromIfLogicNode( void * p, Gia_Man_t * pNew, int iObj, Vec_Int_t * vLeaves, Vec_Int_t * vLeavesTemp,
word * pRes, char * pStr, Vec_Int_t * vCover, Vec_Int_t * vMapping, Vec_Int_t * vMapping2, Vec_Int_t * vPacking ); word * pRes, char * pStr, Vec_Int_t * vCover, Vec_Int_t * vMapping, Vec_Int_t * vMapping2, Vec_Int_t * vPacking );
if ( pMan->pPars->fUseTruth ) if ( pMan->pPars->fUseTruth )
pTruth = Mpm_CutTruth(pMan, Abc_Lit2Var(pCutBest->iFunc)); pTruth = Mpm_CutTruth(pMan, Abc_Lit2Var(pCutBest->iFunc));
...@@ -256,7 +256,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan ) ...@@ -256,7 +256,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan )
uTruth = Mpm_CutTruthFromDsd( pMan, pCutBest, Abc_Lit2Var(pCutBest->iFunc) ); uTruth = Mpm_CutTruthFromDsd( pMan, pCutBest, Abc_Lit2Var(pCutBest->iFunc) );
// Kit_DsdPrintFromTruth( pTruth, Vec_IntSize(vLeaves) ); printf( "\n" ); // Kit_DsdPrintFromTruth( pTruth, Vec_IntSize(vLeaves) ); printf( "\n" );
// perform decomposition of the cut // perform decomposition of the cut
iLitNew = Gia_ManFromIfLogicNode( pNew, Mig_ObjId(pObj), vLeaves, vLeaves2, pTruth, NULL, vCover, vMapping, vMapping2, vPacking ); iLitNew = Gia_ManFromIfLogicNode( NULL, pNew, Mig_ObjId(pObj), vLeaves, vLeaves2, pTruth, NULL, vCover, vMapping, vMapping2, vPacking );
iLitNew = Abc_LitNotCond( iLitNew, pCutBest->fCompl ^ Abc_LitIsCompl(pCutBest->iFunc) ); iLitNew = Abc_LitNotCond( iLitNew, pCutBest->fCompl ^ Abc_LitIsCompl(pCutBest->iFunc) );
} }
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment