From 45f07795ef18d66d74f67f939d0998bed06cf703 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sun, 25 Mar 2012 23:10:35 -0700 Subject: Logic sharing for multi-input gates. --- src/base/abci/abcExtract.c | 8 ++++---- 1 file 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 ) { -- cgit v1.2.3