summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-09-22 19:51:24 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-09-22 19:51:24 -0700
commitbfebc0751c37d8353b2b2b9e61fe37f2a3f6f6f4 (patch)
tree3051cd28c2dc4e425302f640911ee6d3a75f4079
parentedf6c1372113ceedd833d312214fc677b996cc5b (diff)
downloadabc-bfebc0751c37d8353b2b2b9e61fe37f2a3f6f6f4.tar.gz
abc-bfebc0751c37d8353b2b2b9e61fe37f2a3f6f6f4.tar.bz2
abc-bfebc0751c37d8353b2b2b9e61fe37f2a3f6f6f4.zip
Fixing corner-cases in 'tempor' and in 'unfold'.
-rw-r--r--src/aig/gia/giaDup.c5
-rw-r--r--src/base/abci/abc.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/src/aig/gia/giaDup.c b/src/aig/gia/giaDup.c
index 1cdf12a3..38adfb41 100644
--- a/src/aig/gia/giaDup.c
+++ b/src/aig/gia/giaDup.c
@@ -3068,6 +3068,11 @@ Gia_Man_t * Gia_ManDupWithConstr( Gia_Man_t * p )
printf( "The miter's output is not AND-decomposable.\n" );
return NULL;
}
+ if ( Gia_ObjFaninId0p(p, pObj) == 0 )
+ {
+ printf( "The miter's output is a constant.\n" );
+ return NULL;
+ }
vSuper = Vec_IntAlloc( 100 );
Gia_ManDupWithConstrCollectAnd_rec( p, Gia_ObjChild0(pObj), vSuper, 1 );
assert( Vec_IntSize(vSuper) > 1 );
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 26d28543..e1dd7bb4 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -23548,6 +23548,11 @@ int Abc_CommandTempor( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_Print( 0, "The current network is combinational.\n");
return 0;
}
+ if ( Abc_NtkPiNum(pNtk) == 0 )
+ {
+ Abc_Print( 0, "The current network does not have primary inputs. Use \"addpi\".\n");
+ return 0;
+ }
if ( fUpdateCex )
{
Abc_Cex_t * pCexNew;
@@ -24020,12 +24025,12 @@ int Abc_CommandUnfold( Abc_Frame_t * pAbc, int argc, char ** argv )
Gia_Man_t * pGia = Gia_ManFromAigSimple( pAig );
Aig_ManStop( pAig );
pNew = Gia_ManDupWithConstr( pGia );
+ Gia_ManStop( pGia );
if ( pNew == NULL )
{
Abc_Print( -1, "Cannot extract constrains from the miter.\n" );
return 0;
}
- Gia_ManStop( pGia );
pAig = Gia_ManToAigSimple( pNew );
Gia_ManStop( pNew );
pNtkRes = Abc_NtkFromAigPhase( pAig );