mirror of https://github.com/YosysHQ/abc.git
Improvements to DSD balancing.
This commit is contained in:
parent
d0c4c0cd7b
commit
1bca32bae3
|
|
@ -15178,7 +15178,11 @@ int Abc_CommandIf( Abc_Frame_t * pAbc, int argc, char ** argv )
|
|||
|
||||
if ( pPars->fUserRecLib )
|
||||
{
|
||||
assert( Abc_NtkRecIsRunning3() );
|
||||
if ( !Abc_NtkRecIsRunning3() )
|
||||
{
|
||||
printf( "LMS manager is not running (use \"rec_start3\").\n" );
|
||||
return 0;
|
||||
}
|
||||
if ( Abc_NtkRecInputNum3() != pPars->nLutSize )
|
||||
{
|
||||
printf( "The number of library inputs (%d) different from the K parameters (%d).\n", Abc_NtkRecInputNum3(), pPars->nLutSize );
|
||||
|
|
@ -29945,6 +29949,20 @@ int Abc_CommandAbc9If( Abc_Frame_t * pAbc, int argc, char ** argv )
|
|||
Abc_FrameSetManDsd( If_DsdManAlloc(pPars->nLutSize, LutSize) );
|
||||
}
|
||||
|
||||
if ( pPars->fUserRecLib )
|
||||
{
|
||||
if ( !Abc_NtkRecIsRunning3() )
|
||||
{
|
||||
printf( "LMS manager is not running (use \"rec_start3\").\n" );
|
||||
return 0;
|
||||
}
|
||||
if ( Abc_NtkRecInputNum3() != pPars->nLutSize )
|
||||
{
|
||||
printf( "The number of library inputs (%d) different from the K parameters (%d).\n", Abc_NtkRecInputNum3(), pPars->nLutSize );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// complain if truth tables are requested but the cut size is too large
|
||||
if ( pPars->fTruth && pPars->nLutSize > IF_MAX_FUNC_LUTSIZE )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ int If_CutSopBalanceEval( If_Man_t * p, If_Cut_t * pCut, Vec_Int_t * vAig )
|
|||
assert( Vec_IntSize(vCover) > 0 );
|
||||
for ( i = 0; i < If_CutLeaveNum(pCut); i++ )
|
||||
pTimes[i] = (int)If_ObjCutBest(If_CutLeaf(p, pCut, i))->Delay;
|
||||
Delay = If_CutSopBalanceEvalIntInt( vCover, If_CutLeaveNum(pCut), pTimes, vAig, Abc_LitIsCompl(If_CutTruthLit(pCut)), &Area );
|
||||
Delay = If_CutSopBalanceEvalIntInt( vCover, If_CutLeaveNum(pCut), pTimes, vAig, Abc_LitIsCompl(If_CutTruthLit(pCut)) ^ pCut->fCompl, &Area );
|
||||
pCut->Cost = Area;
|
||||
return Delay;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2100,7 +2100,7 @@ int If_CutDsdBalanceEval( If_Man_t * p, If_Cut_t * pCut, Vec_Int_t * vAig )
|
|||
int Delay, Area = 0;
|
||||
for ( i = 0; i < If_CutLeaveNum(pCut); i++ )
|
||||
pTimes[i] = (int)If_ObjCutBest(If_CutLeaf(p, pCut, i))->Delay;
|
||||
Delay = If_CutDsdBalanceEvalInt( p->pIfDsdMan, If_CutDsdLit(p, pCut), pTimes, vAig, &Area, If_CutDsdPerm(p, pCut) );
|
||||
Delay = If_CutDsdBalanceEvalInt( p->pIfDsdMan, Abc_LitNotCond(If_CutDsdLit(p, pCut), pCut->fCompl), pTimes, vAig, &Area, If_CutDsdPerm(p, pCut) );
|
||||
pCut->Cost = Area;
|
||||
return Delay;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue