diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2014-03-30 12:07:49 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2014-03-30 12:07:49 -0700 |
commit | 2f926f2fafba8dc2ec073c51b5ac9fdabd9ad201 (patch) | |
tree | 52433920b47875bfb0ed7befc022ac60c3e86138 /src/aig/gia | |
parent | 7d500c8920c87bb04731960e065d2b8f7748050b (diff) | |
download | abc-2f926f2fafba8dc2ec073c51b5ac9fdabd9ad201.tar.gz abc-2f926f2fafba8dc2ec073c51b5ac9fdabd9ad201.tar.bz2 abc-2f926f2fafba8dc2ec073c51b5ac9fdabd9ad201.zip |
Improving cut computation.
Diffstat (limited to 'src/aig/gia')
-rw-r--r-- | src/aig/gia/giaIf.c | 2 | ||||
-rw-r--r-- | src/aig/gia/giaJf.c | 2 | ||||
-rw-r--r-- | src/aig/gia/giaKf.c | 20 |
3 files changed, 4 insertions, 20 deletions
diff --git a/src/aig/gia/giaIf.c b/src/aig/gia/giaIf.c index f73c39b6..d8a354e4 100644 --- a/src/aig/gia/giaIf.c +++ b/src/aig/gia/giaIf.c @@ -1291,7 +1291,7 @@ Gia_Man_t * Gia_ManFromIfLogic( If_Man_t * pIfMan ) { pCutBest = If_ObjCutBest( pIfObj ); // perform sorting of cut leaves by delay, so that the slowest pin drives the fastest input of the LUT - if ( !pIfMan->pPars->fDelayOpt && !pIfMan->pPars->pLutStruct && !pIfMan->pPars->fUserRecLib && !pIfMan->pPars->nGateSize && !pIfMan->pPars->fEnableCheck75 && !pIfMan->pPars->fEnableCheck75u && !pIfMan->pPars->fEnableCheck07 ) + if ( !pIfMan->pPars->fUseTtPerm && !pIfMan->pPars->fDelayOpt && !pIfMan->pPars->pLutStruct && !pIfMan->pPars->fUserRecLib && !pIfMan->pPars->nGateSize && !pIfMan->pPars->fEnableCheck75 && !pIfMan->pPars->fEnableCheck75u && !pIfMan->pPars->fEnableCheck07 ) If_CutRotatePins( pIfMan, pCutBest ); // collect leaves of the best cut Vec_IntClear( vLeaves ); diff --git a/src/aig/gia/giaJf.c b/src/aig/gia/giaJf.c index 04dfb719..37c91ec5 100644 --- a/src/aig/gia/giaJf.c +++ b/src/aig/gia/giaJf.c @@ -594,6 +594,8 @@ static inline int Jf_CutMergeOrder( int * pCut0, int * pCut1, int * pCut, int Lu } // compare two cuts with different numbers i = k = c = s = 0; + if ( nSize0 == 0 ) goto FlushCut1; + if ( nSize1 == 0 ) goto FlushCut0; while ( 1 ) { if ( c == LutSize ) return 0; diff --git a/src/aig/gia/giaKf.c b/src/aig/gia/giaKf.c index ad3aca53..d7941732 100644 --- a/src/aig/gia/giaKf.c +++ b/src/aig/gia/giaKf.c @@ -534,14 +534,7 @@ static inline int Kf_SetCutIsContainedSimple( Kf_Cut_t * pBase, Kf_Cut_t * pCut int * pB = pBase->pLeaves; int * pC = pCut->pLeaves; int i, k; - if ( nSizeB == nSizeC ) - { - for ( i = 0; i < nSizeB; i++ ) - if ( pBase->pLeaves[i] != pCut->pLeaves[i] ) - return 0; - return 1; - } - assert( nSizeB > nSizeC ); + assert( nSizeB >= nSizeC ); for ( i = 0; i < nSizeC; i++ ) { for ( k = 0; k < nSizeB; k++ ) @@ -560,17 +553,6 @@ static inline int Kf_SetMergeSimpleOne( Kf_Cut_t * pCut0, Kf_Cut_t * pCut1, Kf_C int * pC1 = pCut1->pLeaves; int * pC = pCut->pLeaves; int i, k, c; - // the case of the largest cut sizes - if ( nSize0 == nLutSize && nSize1 == nLutSize ) - { - for ( i = 0; i < nSize0; i++ ) - { - if ( pC0[i] != pC1[i] ) return 0; - pC[i] = pC0[i]; - } - pCut->nLeaves = nLutSize; - return 1; - } // compare two cuts with different numbers c = nSize0; for ( i = 0; i < nSize1; i++ ) |