summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-03-25 23:10:35 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-03-25 23:10:35 -0700
commit45f07795ef18d66d74f67f939d0998bed06cf703 (patch)
treee2d523219e3ce675d043b7a1411f2c5b14200786
parent8ed3e40a52479fe802325bf24415c31d423adedc (diff)
downloadabc-45f07795ef18d66d74f67f939d0998bed06cf703.tar.gz
abc-45f07795ef18d66d74f67f939d0998bed06cf703.tar.bz2
abc-45f07795ef18d66d74f67f939d0998bed06cf703.zip
Logic sharing for multi-input gates.
-rw-r--r--src/base/abci/abcExtract.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/base/abci/abcExtract.c b/src/base/abci/abcExtract.c
index 2d3c4a6c..1a543eaa 100644
--- a/src/base/abci/abcExtract.c
+++ b/src/base/abci/abcExtract.c
@@ -95,7 +95,7 @@ void Abc_ShaManStop( Abc_ShaMan_t * p )
Vec_Wrd_t * Abc_NtkShareSuperXor( Abc_Obj_t * pObj, int * pfCompl, int * pCounter )
{
Abc_Ntk_t * pNtk = Abc_ObjNtk(pObj);
- Abc_Obj_t * pObjC, * pObj0, * pObj1, * pRoot;
+ Abc_Obj_t * pObjC, * pObj0, * pObj1, * pRoot = NULL;
Vec_Wrd_t * vSuper;
word Num, NumNext;
int i, k, fCompl = 0;
@@ -159,7 +159,7 @@ Vec_Wrd_t * Abc_NtkShareSuperXor( Abc_Obj_t * pObj, int * pfCompl, int * pCounte
Vec_Wrd_t * Abc_NtkShareSuperAnd( Abc_Obj_t * pObj, int * pCounter )
{
Abc_Ntk_t * pNtk = Abc_ObjNtk(pObj);
- Abc_Obj_t * pObj0, * pObj1, * pRoot;
+ Abc_Obj_t * pObj0, * pObj1, * pRoot = NULL;
Vec_Wrd_t * vSuper;
word Num, NumNext;
int i, k;
@@ -245,7 +245,7 @@ void Abc_NtkTraverseSupersXor_rec( Abc_ShaMan_t * p, Abc_Obj_t * pObj, Vec_Ptr_t
int k, fCompl;
word Num;
vSuper = Abc_NtkShareSuperXor( pObj, &fCompl, &p->nFoundGates );
- if ( Vec_WrdSize(vSuper) >= p->nMultiSize )
+ if ( Vec_WrdSize(vSuper) <= 1 || Vec_WrdSize(vSuper) >= p->nMultiSize )
{
Vec_WrdForEachEntry( vSuper, Num, k )
{
@@ -285,7 +285,7 @@ void Abc_NtkTraverseSupersAnd_rec( Abc_ShaMan_t * p, Abc_Obj_t * pObj, Vec_Ptr_t
return;
assert( Abc_ObjIsNode(pObj) );
vSuper = Abc_NtkShareSuperAnd( pObj, &p->nFoundGates );
- if ( Vec_WrdSize(vSuper) == 0 || Vec_WrdSize(vSuper) >= p->nMultiSize )
+ if ( Vec_WrdSize(vSuper) <= 1 || Vec_WrdSize(vSuper) >= p->nMultiSize )
{
Vec_WrdForEachEntry( vSuper, Num, k )
{