diff options
-rw-r--r-- | abc.rc | 1 | ||||
-rw-r--r-- | src/aig/gia/giaBalance.c | 5 | ||||
-rw-r--r-- | src/misc/vec/vecHash.h | 13 | ||||
-rw-r--r-- | src/opt/dau/dauGia.c | 2 |
4 files changed, 18 insertions, 3 deletions
@@ -123,6 +123,7 @@ alias blif2aig "undc; strash; zero" alias v2p "&vta_gla; &ps; &gla_derive; &put; w 1.aig; pdr -v" alias g2p "&ps; &gla_derive; &put; w 2.aig; pdr -v" alias &fx_ "&put; sweep; sop; fx; st; &get" +alias &sw_ "&put; sweep; st; &get" # resubstitution scripts for the IWLS paper alias src_rw "st; rw -l; rwz -l; rwz -l" diff --git a/src/aig/gia/giaBalance.c b/src/aig/gia/giaBalance.c index 081ad9d7..b9ab2733 100644 --- a/src/aig/gia/giaBalance.c +++ b/src/aig/gia/giaBalance.c @@ -491,7 +491,7 @@ void Dam_ManCreatePairs( Dam_Man_t * p, int fVerbose ) Dam_ManCollectSets( p ); vSuper = p->pGia->vSuper; vDivs = Vec_IntAlloc( Gia_ManObjNum(p->pGia) ); - vHash = Hash_IntManStart( Gia_ManObjNum(p->pGia) ); + vHash = Hash_IntManStart( Gia_ManObjNum(p->pGia)/2 ); Dam_ManCreateMultiRefs( p, &vRefsAnd, &vRefsXor ); Gia_ManForEachAnd( p->pGia, pObj, i ) { @@ -537,8 +537,9 @@ void Dam_ManCreatePairs( Dam_Man_t * p, int fVerbose ) } Vec_IntFree( vRefsAnd ); Vec_IntFree( vRefsXor ); +// Hash_IntManProfile( vHash ); // remove entries that appear only once - p->vHash = Hash_IntManStart( 2 * nDivsUsed ); + p->vHash = Hash_IntManStart( 3 * nDivsUsed /2 ); p->vCounts = Vec_FltAlloc( 2 * nDivsUsed ); Vec_FltPush( p->vCounts, ABC_INFINITY ); p->vQue = Vec_QueAlloc( Vec_FltCap(p->vCounts) ); Vec_QueSetCosts( p->vQue, Vec_FltArrayP(p->vCounts) ); diff --git a/src/misc/vec/vecHash.h b/src/misc/vec/vecHash.h index e695f154..cdccb308 100644 --- a/src/misc/vec/vecHash.h +++ b/src/misc/vec/vecHash.h @@ -102,6 +102,19 @@ static inline int Hash_IntManEntryNum( Hash_IntMan_t * p ) { return Vec_IntSize(p->vObjs)/4 - 1; } +static inline void Hash_IntManProfile( Hash_IntMan_t * p ) +{ + Hash_IntObj_t * pObj; + int i, Count, Entry; + Vec_IntForEachEntry( p->vTable, Entry, i ) + { + Count = 0; + for ( pObj = Hash_IntObj( p, Entry ); pObj; pObj = Hash_IntObj( p, pObj->iNext ) ) + Count++; + printf( "%d ", Count ); + } + printf( "\n" ); +} /**Function************************************************************* diff --git a/src/opt/dau/dauGia.c b/src/opt/dau/dauGia.c index 7fc7c92e..b795336d 100644 --- a/src/opt/dau/dauGia.c +++ b/src/opt/dau/dauGia.c @@ -217,7 +217,7 @@ int Dsm_ManDeriveGia( void * p, word uTruth, Vec_Int_t * vLeaves, Vec_Int_t * vC int nSizeNonDec; m_Calls++; // static int Counter = 0; Counter++; - nSizeNonDec = Dau_DsdDecompose( &uTruth, Vec_IntSize(vLeaves), 1, 1, pDsd ); + nSizeNonDec = Dau_DsdDecompose( &uTruth, Vec_IntSize(vLeaves), 0, 1, pDsd ); if ( nSizeNonDec ) m_NonDsd++; // printf( "%s\n", pDsd ); |