summaryrefslogtreecommitdiffstats
path: root/src/aig/ssw/sswCore.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/aig/ssw/sswCore.c')
-rw-r--r--src/aig/ssw/sswCore.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/aig/ssw/sswCore.c b/src/aig/ssw/sswCore.c
index 1e314b78..6c19ab70 100644
--- a/src/aig/ssw/sswCore.c
+++ b/src/aig/ssw/sswCore.c
@@ -48,7 +48,7 @@ void Ssw_ManSetDefaultParams( Ssw_Pars_t * p )
p->nConstrs = 0; // treat the last nConstrs POs as seq constraints
p->nBTLimit = 1000; // conflict limit at a node
p->fPolarFlip = 0; // uses polarity adjustment
- p->fLatchCorr = 0; // performs register correspondence
+ p->fLatchCorr = 1; // performs register correspondence
p->fVerbose = 1; // verbose stats
p->nIters = 0; // the number of iterations performed
}
@@ -66,6 +66,7 @@ void Ssw_ManSetDefaultParams( Ssw_Pars_t * p )
***********************************************************************/
Aig_Man_t * Ssw_SignalCorrespondence( Aig_Man_t * pAig, Ssw_Pars_t * pPars )
{
+ Aig_Man_t * pAigNew;
Ssw_Man_t * p;
int RetValue, nIter, clk, clkTotal = clock();
// reset random numbers
@@ -75,27 +76,33 @@ Aig_Man_t * Ssw_SignalCorrespondence( Aig_Man_t * pAig, Ssw_Pars_t * pPars )
// compute candidate equivalence classes
p->ppClasses = Ssw_ClassesPrepareSimple( pAig, pPars->fLatchCorr, pPars->nMaxLevs );
// refine classes using BMC
- Ssw_ClassesPrint( p->ppClasses, 0 );
+ if ( pPars->fVerbose )
+ Ssw_ClassesPrint( p->ppClasses, 0 );
Ssw_ManSweepBmc( p );
- Ssw_ClassesPrint( p->ppClasses, 0 );
+ Ssw_ManCleanup( p );
+ if ( pPars->fVerbose )
+ Ssw_ClassesPrint( p->ppClasses, 0 );
// refine classes using induction
for ( nIter = 0; ; nIter++ )
{
clk = clock();
- RetValue = Ssw_ManSweep(p);
+ RetValue = Ssw_ManSweep( p );
if ( pPars->fVerbose )
{
- printf( "%3d : Const = %6d. Class = %6d. L = %6d. LR = %6d. NR = %6d. ",
+ printf( "%3d : Const = %6d. Cl = %6d. L = %6d. LR = %6d. NR = %6d. ",
nIter, Ssw_ClassesCand1Num(p->ppClasses), Ssw_ClassesClassNum(p->ppClasses),
- p->nConstrTotal, p->nConstrReduced, p->nFrameNodes );
+ p->nConstrTotal, p->nConstrReduced, Aig_ManNodeNum(p->pFrames) );
PRT( "T", clock() - clk );
}
+ Ssw_ManCleanup( p );
if ( !RetValue )
break;
- }
+ }
p->timeTotal = clock() - clkTotal;
Ssw_ManStop( p );
- return Aig_ManDupRepr( pAig, 0 );
+ pAigNew = Aig_ManDupRepr( pAig, 0 );
+ Aig_ManSeqCleanup( pAigNew );
+ return pAigNew;
}
////////////////////////////////////////////////////////////////////////