Commit 424b86a5 by Alan Mishchenko

Performance bug fix in SOP balancing.

parent 6ab0d68d
......@@ -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 )
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment