summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaIf.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-01-30 19:04:45 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-01-30 19:04:45 +0700
commit686f8fdaa64243155e09ec4deed3ebf8f099edec (patch)
tree80812fb69c0ce605d43816e8aa803baee0d466d9 /src/aig/gia/giaIf.c
parenta2eb6f9a07f484d6ec941949b2e0e6421d8176dc (diff)
downloadabc-686f8fdaa64243155e09ec4deed3ebf8f099edec.tar.gz
abc-686f8fdaa64243155e09ec4deed3ebf8f099edec.tar.bz2
abc-686f8fdaa64243155e09ec4deed3ebf8f099edec.zip
Integration of timing manager.
Diffstat (limited to 'src/aig/gia/giaIf.c')
-rw-r--r--src/aig/gia/giaIf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/aig/gia/giaIf.c b/src/aig/gia/giaIf.c
index 1c2a56b3..64cc7cf7 100644
--- a/src/aig/gia/giaIf.c
+++ b/src/aig/gia/giaIf.c
@@ -624,6 +624,11 @@ Gia_Man_t * Gia_ManPerformMapping( Gia_Man_t * p, void * pp )
Gia_Man_t * pNew;
If_Man_t * pIfMan;
If_Par_t * pPars = (If_Par_t *)pp;
+ // reconstruct GIA according to the hierarchy manager
+ if ( p->pManTime )
+ p = Gia_ManDupWithHierarchy( p );
+ else
+ p = Gia_ManDup( p );
// set the arrival times
assert( pPars->pTimesArr == NULL );
pPars->pTimesArr = ABC_ALLOC( float, Gia_ManCiNum(p) );
@@ -631,12 +636,16 @@ Gia_Man_t * Gia_ManPerformMapping( Gia_Man_t * p, void * pp )
// translate into the mapper
pIfMan = Gia_ManToIf( p, pPars );
if ( pIfMan == NULL )
+ {
+ Gia_ManStop( p );
return NULL;
+ }
if ( p->pManTime )
pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, 0 );
if ( !If_ManPerformMapping( pIfMan ) )
{
If_ManStop( pIfMan );
+ Gia_ManStop( p );
return NULL;
}
// transform the result of mapping into the new network