Small improvement to SOP balancing.

This commit is contained in:
Alan Mishchenko 2014-07-22 10:13:40 -07:00
parent ba29267563
commit 9fa827aacf
1 changed files with 18 additions and 6 deletions

View File

@ -122,12 +122,12 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
// recompute the parameters of the best cut
if ( p->pPars->fDelayOpt )
pCut->Delay = If_CutSopBalanceEval( p, pCut, NULL );
else if ( p->pPars->fDelayOptLut )
pCut->Delay = If_CutLutBalanceEval( p, pCut );
else if ( p->pPars->fDsdBalance )
pCut->Delay = If_CutDsdBalanceEval( p, pCut, NULL );
else if ( p->pPars->fUserRecLib )
pCut->Delay = If_CutDelayRecCost3( p, pCut, pObj );
else if ( p->pPars->fDelayOptLut )
pCut->Delay = If_CutLutBalanceEval( p, pCut );
else if( p->pPars->nGateSize > 0 )
pCut->Delay = If_CutDelaySop( p, pCut );
else
@ -271,13 +271,25 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep
continue;
// check if the cut satisfies the required times
if ( p->pPars->fDelayOpt )
{
pCut->Delay = If_CutSopBalanceEval( p, pCut, NULL );
if ( pCut->Delay >= pObj->Level && pCut->nLeaves > 2 )
pCut->Delay += 1;
}
else if ( p->pPars->fDsdBalance )
{
pCut->Delay = If_CutDsdBalanceEval( p, pCut, NULL );
if ( pCut->Delay >= pObj->Level && pCut->nLeaves > 2 )
pCut->Delay += 1;
}
else if ( p->pPars->fUserRecLib )
{
pCut->Delay = If_CutDelayRecCost3( p, pCut, pObj );
if ( pCut->Delay >= pObj->Level && pCut->nLeaves > 2 )
pCut->Delay += 1;
}
else if ( p->pPars->fDelayOptLut )
pCut->Delay = If_CutLutBalanceEval( p, pCut );
else if ( p->pPars->fDsdBalance )
pCut->Delay = If_CutDsdBalanceEval( p, pCut, NULL );
else if ( p->pPars->fUserRecLib )
pCut->Delay = If_CutDelayRecCost3( p, pCut, pObj );
else if( p->pPars->nGateSize > 0 )
pCut->Delay = If_CutDelaySop( p, pCut );
else