diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-20 12:04:41 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-20 12:04:41 -0700 |
commit | 42f8082c59db41307120a6d5dbfdef4c2350a722 (patch) | |
tree | df8f003becb0820fbc281536ac816bcd8c7335a1 /src/aig/gia | |
parent | 1ad363c1566bd878bd71f9032f446506efcbcc9a (diff) | |
download | abc-42f8082c59db41307120a6d5dbfdef4c2350a722.tar.gz abc-42f8082c59db41307120a6d5dbfdef4c2350a722.tar.bz2 abc-42f8082c59db41307120a6d5dbfdef4c2350a722.zip |
Added switch &sim -g to enable flop grouping.
Diffstat (limited to 'src/aig/gia')
-rw-r--r-- | src/aig/gia/giaDup.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/aig/gia/giaDup.c b/src/aig/gia/giaDup.c index 6f7b7242..74227531 100644 --- a/src/aig/gia/giaDup.c +++ b/src/aig/gia/giaDup.c @@ -591,37 +591,27 @@ Gia_Man_t * Gia_ManDupPerm( Gia_Man_t * p, Vec_Int_t * vPiPerm ) } Gia_Man_t * Gia_ManDupPermFlop( Gia_Man_t * p, Vec_Int_t * vFfPerm ) { - Vec_Int_t * vLits; + Vec_Int_t * vPermInv; Gia_Man_t * pNew; Gia_Obj_t * pObj; int i; assert( Vec_IntSize(vFfPerm) == Gia_ManRegNum(p) ); - + vPermInv = Vec_IntInvert( vFfPerm, -1 ); pNew = Gia_ManStart( Gia_ManObjNum(p) ); pNew->pName = Abc_UtilStrsav( p->pName ); pNew->pSpec = Abc_UtilStrsav( p->pSpec ); Gia_ManConst0(p)->Value = 0; - Gia_ManForEachCi( p, pObj, i ) + Gia_ManForEachPi( p, pObj, i ) pObj->Value = Gia_ManAppendCi(pNew); - - vLits = Vec_IntAlloc( Gia_ManRegNum(p) ); - for ( i = 0; i < Gia_ManRegNum(p); i++ ) - Vec_IntPush( vLits, Gia_ManRo(p, Vec_IntEntry(vFfPerm, i))->Value ); Gia_ManForEachRo( p, pObj, i ) - pObj->Value = Vec_IntEntry(vLits, i); - + Gia_ManRo(p, Vec_IntEntry(vPermInv, i))->Value = Gia_ManAppendCi(pNew); Gia_ManForEachAnd( p, pObj, i ) pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) ); Gia_ManForEachPo( p, pObj, i ) pObj->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) ); - - Vec_IntClear( vLits ); - for ( i = 0; i < Gia_ManRegNum(p); i++ ) - Vec_IntPush( vLits, Gia_ObjFanin0Copy( Gia_ManRi(p, Vec_IntEntry(vFfPerm, i)) ) ); Gia_ManForEachRi( p, pObj, i ) - pObj->Value = Gia_ManAppendCo( pNew, Vec_IntEntry(vLits, i) ); - Vec_IntFree( vLits ); - + pObj->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy( Gia_ManRi(p, Vec_IntEntry(vPermInv, i)) ) ); + Vec_IntFree( vPermInv ); Gia_ManSetRegNum( pNew, Gia_ManRegNum(p) ); return pNew; } |