diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/aig/gia/giaAbsGla2.c | 109 |
1 files changed, 1 insertions, 108 deletions
diff --git a/src/aig/gia/giaAbsGla2.c b/src/aig/gia/giaAbsGla2.c index 85f0c00d..8269ecbe 100644 --- a/src/aig/gia/giaAbsGla2.c +++ b/src/aig/gia/giaAbsGla2.c @@ -1015,7 +1015,7 @@ void Ga2_ManShrinkAbs( Ga2_Man_t * p, int nAbs, int nValues, int nSatVars ) Vec_PtrForEachEntry( Vec_Int_t *, p->vId2Lit, vMap, i ) { Vec_IntShrink( vMap, nValues ); - Vec_IntForEachEntry( vMap, Entry, k ) + Vec_IntForEachEntryStart( vMap, Entry, k, p->LimAbs ) if ( Entry >= 2*nSatVars ) Vec_IntWriteEntry( vMap, k, -1 ); } @@ -1107,114 +1107,7 @@ void Ga2_ManRestart( Ga2_Man_t * p ) memset( p->pTable, 0, 6 * sizeof(int) * p->nTable ); } -/**Function************************************************************* - - Synopsis [Unrolls one timeframe.]` - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -/* -int Ga2_ManUnroll_rec( Ga2_Man_t * p, Gia_Obj_t * pObj, int f ) -{ - int fSimple = 1; - int Id = Gia_ObjId(p->pGia, pObj); - unsigned uTruth; - Gia_Obj_t * pLeaf; - int nLeaves, * pLeaves; - int i, Lit, pLits[5]; - if ( Gia_ObjIsConst0(pObj) || (f==0 && Gia_ObjIsRo(p->pGia, pObj)) ) - { - if ( fSimple ) - { - Lit = Ga2_ObjFindOrAddLit( p, pObj, f ); - Lit = Abc_LitNot(Lit); - assert( Lit > 1 ); - sat_solver2_addclause( p->pSat, &Lit, &Lit + 1, -1 ); - return Abc_LitNot(Lit); - } - return 0; - } - if ( Gia_ObjIsCo(pObj) ) - return Abc_LitNotCond( Ga2_ManUnroll_rec(p, Gia_ObjFanin0(pObj), f), Gia_ObjFaninC0(pObj) ); - assert( pObj->fPhase ); - if ( Ga2_ObjIsLeaf0(p, pObj) ) - return Ga2_ObjFindOrAddLit( p, pObj, f ); - assert( !Gia_ObjIsPi(p->pGia, pObj) ); - Lit = Ga2_ObjFindLit( p, pObj, f ); - if ( Lit >= 0 ) - return Lit; - if ( Gia_ObjIsRo(p->pGia, pObj) ) - { - assert( f > 0 ); - Lit = Ga2_ManUnroll_rec( p, Gia_ObjRoToRi(p->pGia, pObj), f-1 ); - Ga2_ObjAddLit( p, pObj, f, Lit ); - return Lit; - } - assert( Gia_ObjIsAnd(pObj) ); - nLeaves = Ga2_ObjLeaveNum( p->pGia, pObj ); - pLeaves = Ga2_ObjLeavePtr( p->pGia, pObj ); - if ( fSimple ) - { - // collect fanin literals - for ( i = 0; i < nLeaves; i++ ) - { - pLeaf = Gia_ManObj(p->pGia, pLeaves[i]); - pLits[i] = Ga2_ManUnroll_rec( p, pLeaf, f ); - } - // create fanout literal - Lit = Ga2_ObjFindOrAddLit( p, pObj, f ); - // create clauses - Ga2_ManCnfAddStatic( p, Ga2_ObjCnf0(p, pObj), Ga2_ObjCnf1(p, pObj), pLits, Lit, Gia_ObjId(p->pGia, pObj) ); - return Lit; - } - // collect fanin literals - for ( i = 0; i < nLeaves; i++ ) - { - pLeaf = Gia_ManObj( p->pGia, pLeaves[i] ); - if ( Ga2_ObjIsAbs0(p, pLeaf) ) // belongs to original abstraction - pLits[i] = Ga2_ManUnroll_rec( p, pLeaf, f ); - else if ( Ga2_ObjIsLeaf0(p, pLeaf) ) // belongs to original PPIs - pLits[i] = GA2_BIG_NUM + i; - else assert( 0 ); - } - // collect literals - Vec_IntClear( p->vLits ); - for ( i = 0; i < nLeaves; i++ ) - Vec_IntPush( p->vLits, pLits[i] ); - // minimize truth table - uTruth = Ga2_ObjComputeTruthSpecial( p->pGia, pObj, Ga2_ObjLeaves(p->pGia, pObj), p->vLits ); - if ( uTruth == 0 || uTruth == ~0 ) // const 0 / 1 - { - Lit = (uTruth > 0); - Ga2_ObjAddLit( p, pObj, f, Lit ); - } - else if ( uTruth == 0xAAAAAAAA || uTruth == 0x55555555 ) // buffer / inverter - { - Lit = Vec_IntEntry( p->vLits, 0 ); - if ( Lit >= GA2_BIG_NUM ) - { - pLeaf = Gia_ManObj( p->pGia, pLeaves[Lit-GA2_BIG_NUM] ); - Lit = Ga2_ObjFindOrAddLit( p, pLeaf, f ); - } - Lit = Abc_LitNotCond( Lit, uTruth == 0x55555555 ); - Ga2_ObjAddLit( p, pObj, f, Lit ); - } - else - { - // perform structural hashing here!!! - // add new node - Lit = Ga2_ObjFindOrAddLit(p, pObj, f); - Ga2_ManCnfAddDynamic( p, uTruth, Vec_IntArray(p->vLits), Lit ); - } - return Lit; -} -*/ /**Function************************************************************* Synopsis [] |