diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2017-07-12 12:22:48 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2017-07-12 12:22:48 -0700 |
commit | ff89090dad94b4b245c6f694bd6d599b7dcb30d2 (patch) | |
tree | d5ee8c61e53138fd600f8f588793f6df91b63499 | |
parent | ccdc974f8a1ea5539ee1c96bc167b5fd01ddc341 (diff) | |
download | abc-ff89090dad94b4b245c6f694bd6d599b7dcb30d2.tar.gz abc-ff89090dad94b4b245c6f694bd6d599b7dcb30d2.tar.bz2 abc-ff89090dad94b4b245c6f694bd6d599b7dcb30d2.zip |
Supporting CO attributes in GIA.
-rw-r--r-- | src/aig/gia/gia.h | 1 | ||||
-rw-r--r-- | src/aig/gia/giaIf.c | 9 | ||||
-rw-r--r-- | src/aig/gia/giaMan.c | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/aig/gia/gia.h b/src/aig/gia/gia.h index a72b2936..a102940f 100644 --- a/src/aig/gia/gia.h +++ b/src/aig/gia/gia.h @@ -166,6 +166,7 @@ struct Gia_Man_t_ Vec_Int_t * vCiArrs; // CI arrival times Vec_Int_t * vCoReqs; // CO required times Vec_Int_t * vCoArrs; // CO arrival times + Vec_Int_t * vCoAttrs; // CO attributes int And2Delay; // delay of the AND gate float DefInArrs; // default PI arrival times float DefOutReqs; // default PO required times diff --git a/src/aig/gia/giaIf.c b/src/aig/gia/giaIf.c index d45fcb17..70cf707d 100644 --- a/src/aig/gia/giaIf.c +++ b/src/aig/gia/giaIf.c @@ -2118,11 +2118,12 @@ void Gia_ManTransferPacking( Gia_Man_t * p, Gia_Man_t * pGia ) } void Gia_ManTransferTiming( Gia_Man_t * p, Gia_Man_t * pGia ) { - if ( pGia->vCiArrs || pGia->vCoReqs || pGia->vCoArrs ) + if ( pGia->vCiArrs || pGia->vCoReqs || pGia->vCoArrs || pGia->vCoAttrs ) { p->vCiArrs = pGia->vCiArrs; pGia->vCiArrs = NULL; p->vCoReqs = pGia->vCoReqs; pGia->vCoReqs = NULL; p->vCoArrs = pGia->vCoArrs; pGia->vCoArrs = NULL; + p->vCoAttrs = pGia->vCoAttrs; pGia->vCoAttrs = NULL; p->And2Delay = pGia->And2Delay; } if ( pGia->vInArrs || pGia->vOutReqs ) @@ -2277,6 +2278,12 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars ) if ( p->pManTime ) pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, pPars->fDelayOpt || pPars->fDelayOptLut || pPars->fDsdBalance || pPars->fUserRecLib || pPars->fUserSesLib ); // Tim_ManPrint( pIfMan->pManTim ); + if ( p->vCoAttrs ) + { + assert( If_ManCoNum(pIfMan) == Vec_IntSize(p->vCoAttrs) ); + Vec_IntForEachEntry( p->vCoAttrs, Entry, i ) + If_ObjFanin0( If_ManCo(pIfMan, i) )->fSpec = (Entry != 0); + } if ( !If_ManPerformMapping( pIfMan ) ) { If_ManStop( pIfMan ); diff --git a/src/aig/gia/giaMan.c b/src/aig/gia/giaMan.c index 65ff46b5..6ca74491 100644 --- a/src/aig/gia/giaMan.c +++ b/src/aig/gia/giaMan.c @@ -131,6 +131,7 @@ void Gia_ManStop( Gia_Man_t * p ) Vec_IntFreeP( &p->vCiArrs ); Vec_IntFreeP( &p->vCoReqs ); Vec_IntFreeP( &p->vCoArrs ); + Vec_IntFreeP( &p->vCoAttrs ); Gia_ManStopP( &p->pAigExtra ); Vec_IntFree( p->vCis ); Vec_IntFree( p->vCos ); |