Commit a6352369 by Mathias Soeken

Depth optimal synthesis.

parent 59077dab
...@@ -1111,8 +1111,8 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char * ...@@ -1111,8 +1111,8 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char *
{ {
int l; int l;
Ses_Man_t * pSes; Ses_Man_t * pSes;
char * pSol, * p; char * pSol = NULL, * p;
int Delay; int Delay = ABC_INFINITY, nMaxDepth = nVars - 1;
abctime timeStart; abctime timeStart;
/* some checks */ /* some checks */
...@@ -1120,12 +1120,25 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char * ...@@ -1120,12 +1120,25 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char *
timeStart = Abc_Clock(); timeStart = Abc_Clock();
pSes = Ses_ManAlloc( pTruth, nVars, 1, nVars - 1, pArrTimeProfile, 1, 0 ); *Cost = ABC_INFINITY;
pSes = Ses_ManAlloc( pTruth, nVars, 1 /* fSpecFunc */, nMaxDepth, pArrTimeProfile, 1 /* fMakeAIG */, 0 );
while ( 1 ) /* there is improvement */
{
if ( Ses_ManFindMinimumSize( pSes ) ) if ( Ses_ManFindMinimumSize( pSes ) )
{ {
if ( pSol )
ABC_FREE( pSol );
pSol = Ses_ManExtractSolution( pSes ); pSol = Ses_ManExtractSolution( pSes );
pSes->nMaxDepth--;
}
else
break;
}
if ( pSol )
{
*Cost = pSol[ABC_EXACT_SOL_NGATES]; *Cost = pSol[ABC_EXACT_SOL_NGATES];
p = pSol + 3 + 4 * ABC_EXACT_SOL_NGATES + 1; p = pSol + 3 + 4 * ABC_EXACT_SOL_NGATES + 1;
Delay = *p++; Delay = *p++;
...@@ -1134,8 +1147,6 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char * ...@@ -1134,8 +1147,6 @@ int Abc_ExactDelayCost( word * pTruth, int nVars, int * pArrTimeProfile, char *
ABC_FREE( pSol ); ABC_FREE( pSol );
} }
else
*Cost = Delay = ABC_INFINITY;
pSes->timeTotal = Abc_Clock() - timeStart; pSes->timeTotal = Abc_Clock() - timeStart;
......
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