summaryrefslogtreecommitdiffstats
path: root/src/aig/gia
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-03-30 12:07:49 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-03-30 12:07:49 -0700
commit2f926f2fafba8dc2ec073c51b5ac9fdabd9ad201 (patch)
tree52433920b47875bfb0ed7befc022ac60c3e86138 /src/aig/gia
parent7d500c8920c87bb04731960e065d2b8f7748050b (diff)
downloadabc-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.c2
-rw-r--r--src/aig/gia/giaJf.c2
-rw-r--r--src/aig/gia/giaKf.c20
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++ )