summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaAbs.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-09-11 20:31:25 -0500
committerAlan Mishchenko <alanmi@berkeley.edu>2011-09-11 20:31:25 -0500
commit583bc4d71a403028d60fd676ce72c3c6d1e2e7fe (patch)
tree874fd6c2a37ecafa907c7fb820617a3401de00de /src/aig/gia/giaAbs.c
parenta7acb2f1046b24e9c6ad5b82a190f81e7bf4b0e8 (diff)
downloadabc-583bc4d71a403028d60fd676ce72c3c6d1e2e7fe.tar.gz
abc-583bc4d71a403028d60fd676ce72c3c6d1e2e7fe.tar.bz2
abc-583bc4d71a403028d60fd676ce72c3c6d1e2e7fe.zip
Added limit on the number of flops to add in one iteration of &abs_cba.
Diffstat (limited to 'src/aig/gia/giaAbs.c')
-rw-r--r--src/aig/gia/giaAbs.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/aig/gia/giaAbs.c b/src/aig/gia/giaAbs.c
index 37f5e315..2b5414e7 100644
--- a/src/aig/gia/giaAbs.c
+++ b/src/aig/gia/giaAbs.c
@@ -273,7 +273,7 @@ int Gia_ManCbaPerform( Gia_Man_t * pGia, void * pPars )
Saig_ParBmc_t * p = (Saig_ParBmc_t *)pPars;
Gia_Man_t * pAbs;
Aig_Man_t * pAig, * pOrig;
- Vec_Int_t * vAbsFfsToAdd;
+ Vec_Int_t * vAbsFfsToAdd, * vAbsFfsToAddBest;
// check if flop classes are given
if ( pGia->vFlopClasses == NULL )
{
@@ -298,6 +298,21 @@ int Gia_ManCbaPerform( Gia_Man_t * pGia, void * pPars )
Aig_ManStop( pAig );
return 0;
}
+ // select the most useful flops among those to be added
+ if ( p->nFfToAddMax > 0 && Vec_IntSize(vAbsFfsToAdd) > p->nFfToAddMax )
+ {
+ // compute new flops
+ Aig_Man_t * pAigBig = Gia_ManToAigSimple( pGia );
+ vAbsFfsToAddBest = Saig_ManCbaFilterFlops( pAigBig, pAig->pSeqModel, pGia->vFlopClasses, vAbsFfsToAdd, p->nFfToAddMax );
+ Aig_ManStop( pAigBig );
+ assert( Vec_IntSize(vAbsFfsToAddBest) == p->nFfToAddMax );
+ if ( p->fVerbose )
+ printf( "Filtering flops based on cost (%d -> %d).\n", Vec_IntSize(vAbsFfsToAdd), Vec_IntSize(vAbsFfsToAddBest) );
+ // update
+ Vec_IntFree( vAbsFfsToAdd );
+ vAbsFfsToAdd = vAbsFfsToAddBest;
+
+ }
Aig_ManStop( pAig );
// update flop classes
Gia_ManFlopsAddToClasses( pGia->vFlopClasses, vAbsFfsToAdd );