diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-14 22:50:49 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-14 22:50:49 -0700 |
commit | 6de83eb3b6c92bcf0889350456bfdcfde88e58b7 (patch) | |
tree | 94d96d93d3833662dad9ce6ee817b3c64e76270d | |
parent | 728291b087b253e839c4a29b3e1b31e45401b472 (diff) | |
download | abc-6de83eb3b6c92bcf0889350456bfdcfde88e58b7.tar.gz abc-6de83eb3b6c92bcf0889350456bfdcfde88e58b7.tar.bz2 abc-6de83eb3b6c92bcf0889350456bfdcfde88e58b7.zip |
Enabling LUT decomposition in two special cases.
-rw-r--r-- | src/aig/gia/giaIf.c | 8 | ||||
-rw-r--r-- | src/map/mpm/mpmAbc.c | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/aig/gia/giaIf.c b/src/aig/gia/giaIf.c index ab4b8206..b0b7b1b4 100644 --- a/src/aig/gia/giaIf.c +++ b/src/aig/gia/giaIf.c @@ -235,7 +235,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p ) 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, "\n" ); -/* + { char * pFileName = "stats_map.txt"; static char FileNameOld[1000] = {0}; @@ -262,7 +262,7 @@ void Gia_ManPrintMappingStats( Gia_Man_t * p ) } fclose( pTable ); } -*/ + } /**Function************************************************************* @@ -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 i, Length, nLutLeaf, nLutLeaf2, nLutRoot, iObjLit1, iObjLit2, iObjLit3; // workaround for the special case - if ( p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u ) + if ( p && (p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u) ) pStr = "54"; // check if there is no LUT structures if ( pStr == NULL ) @@ -746,7 +746,7 @@ int Gia_ManFromIfLogicNode( If_Man_t * p, Gia_Man_t * pNew, int iObj, Vec_Int_t } // 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_CluCheckExt( NULL, pRes, nLeaves, 4, 4, pLut0, pLut1, &Func0, &Func1 ) ) diff --git a/src/map/mpm/mpmAbc.c b/src/map/mpm/mpmAbc.c index 0e3e27ff..2b809e73 100644 --- a/src/map/mpm/mpmAbc.c +++ b/src/map/mpm/mpmAbc.c @@ -248,7 +248,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan ) Vec_IntPush( vLeaves, Mig_ObjCopy(pFanin) ); 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 ); if ( pMan->pPars->fUseTruth ) pTruth = Mpm_CutTruth(pMan, Abc_Lit2Var(pCutBest->iFunc)); @@ -256,7 +256,7 @@ void * Mpm_ManFromIfLogic( Mpm_Man_t * pMan ) uTruth = Mpm_CutTruthFromDsd( pMan, pCutBest, Abc_Lit2Var(pCutBest->iFunc) ); // Kit_DsdPrintFromTruth( pTruth, Vec_IntSize(vLeaves) ); printf( "\n" ); // 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) ); } else |