summaryrefslogtreecommitdiffstats
path: root/src/map/if
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-04-05 09:58:43 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-04-05 09:58:43 -0700
commit424b86a55673f53ec102687c04d2762b88ad5a47 (patch)
treeabcdeb29c2921c1e7341a78bb35691eb76475f75 /src/map/if
parent6ab0d68d5653b5411c298116c9502a23a50cdbf0 (diff)
downloadabc-424b86a55673f53ec102687c04d2762b88ad5a47.tar.gz
abc-424b86a55673f53ec102687c04d2762b88ad5a47.tar.bz2
abc-424b86a55673f53ec102687c04d2762b88ad5a47.zip
Performance bug fix in SOP balancing.
Diffstat (limited to 'src/map/if')
-rw-r--r--src/map/if/ifMap.c5
-rw-r--r--src/map/if/ifTime.c27
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;
}