diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2014-04-05 09:58:43 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2014-04-05 09:58:43 -0700 |
commit | 424b86a55673f53ec102687c04d2762b88ad5a47 (patch) | |
tree | abcdeb29c2921c1e7341a78bb35691eb76475f75 /src | |
parent | 6ab0d68d5653b5411c298116c9502a23a50cdbf0 (diff) | |
download | abc-424b86a55673f53ec102687c04d2762b88ad5a47.tar.gz abc-424b86a55673f53ec102687c04d2762b88ad5a47.tar.bz2 abc-424b86a55673f53ec102687c04d2762b88ad5a47.zip |
Performance bug fix in SOP balancing.
Diffstat (limited to 'src')
-rw-r--r-- | src/map/if/ifMap.c | 5 | ||||
-rw-r--r-- | src/map/if/ifTime.c | 27 |
2 files changed, 2 insertions, 30 deletions
diff --git a/src/map/if/ifMap.c b/src/map/if/ifMap.c index cd13ed34..c5e40dec 100644 --- a/src/map/if/ifMap.c +++ b/src/map/if/ifMap.c @@ -392,10 +392,7 @@ void If_ObjPerformMappingChoice( If_Man_t * p, If_Obj_t * pObj, int Mode, int fP if ( Mode && pCut->Delay > pObj->Required + p->fEpsilon ) continue; // set the phase attribute - assert( pCut->fCompl == 0 ); - pCut->fCompl ^= (pObj->fPhase ^ pTemp->fPhase); // why ^= ? - if ( p->pPars->fDelayOpt && pCut->fCompl ) - continue; + pCut->fCompl = pObj->fPhase ^ pTemp->fPhase; // compute area of the cut (this area may depend on the application specific cost) pCut->Area = (Mode == 2)? If_CutAreaDerefed( p, pCut ) : If_CutAreaFlow( p, pCut ); if ( p->pPars->fEdge ) diff --git a/src/map/if/ifTime.c b/src/map/if/ifTime.c index 7ad685b3..07258f95 100644 --- a/src/map/if/ifTime.c +++ b/src/map/if/ifTime.c @@ -267,33 +267,8 @@ Vec_Wrd_t * If_CutDelaySopArray( If_Man_t * p, If_Cut_t * pCut ) assert( RetValue == 0 || RetValue == 1 ); clk = Abc_Clock(); - vAnds = If_CutDelaySopAnds( p, pCut, p->vCover, RetValue ^ pCut->fCompl ); + vAnds = If_CutDelaySopAnds( p, pCut, p->vCover, RetValue ); s_timeOld += Abc_Clock() - clk; -/* - if ( pCut->nLeaves <= 5 ) - { - if ( *If_CutTruth(pCut) != (unsigned)If_AndVerifyArray(vAnds, pCut->nLeaves) ) - { - unsigned Truth0 = *If_CutTruth(pCut); - unsigned Truth1 = (unsigned)If_AndVerifyArray(vAnds, pCut->nLeaves); - - printf( "\n" ); - Extra_PrintBinary( stdout, &Truth0, 32 ); printf( "\n" ); - Extra_PrintBinary( stdout, &Truth1, 32 ); printf( "\n" ); - - printf( "Verification failed for %d vars.\n", pCut->nLeaves ); - } -// else -// printf( "Verification passed for %d vars.\n", pCut->nLeaves ); - } - else if ( pCut->nLeaves == 6 ) - { - if ( *((word *)If_CutTruth(pCut)) != If_AndVerifyArray(vAnds, pCut->nLeaves) ) - printf( "Verification failed for %d vars.\n", pCut->nLeaves ); -// else -// printf( "Verification passed for %d vars.\n", pCut->nLeaves ); - } -*/ return vAnds; } |