summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-04-28 05:36:38 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-04-28 05:36:38 +0700
commit334911a116309accef78bf28f267f883d2f228f4 (patch)
treed984c4478e854a336084f717f347ceea28c2a05f /src
parentd1e82047ffa4da33d00d6092a36bbdbb8f4da269 (diff)
downloadabc-334911a116309accef78bf28f267f883d2f228f4.tar.gz
abc-334911a116309accef78bf28f267f883d2f228f4.tar.bz2
abc-334911a116309accef78bf28f267f883d2f228f4.zip
Added supporting dual-output seq miters in &trim.
Diffstat (limited to 'src')
-rw-r--r--src/aig/gia/giaDup.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/aig/gia/giaDup.c b/src/aig/gia/giaDup.c
index 28af14da..254c5607 100644
--- a/src/aig/gia/giaDup.c
+++ b/src/aig/gia/giaDup.c
@@ -944,6 +944,13 @@ Gia_Man_t * Gia_ManDupTrimmed( Gia_Man_t * p, int fTrimCis, int fTrimCos, int fD
pPo1->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pPo1) );
}
Gia_ManStop( pNonDual );
+ if ( Gia_ManPoNum(pNew) == 0 ) // nothing - add dummy PO
+ {
+ pPo0 = Gia_ManPo( p, 0 );
+ pPo1 = Gia_ManPo( p, 1 );
+ pPo0->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pPo0) );
+ pPo1->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pPo1) );
+ }
Gia_ManForEachRi( p, pObj, i )
pObj->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );
Gia_ManSetRegNum( pNew, Gia_ManRegNum(p) );
@@ -956,6 +963,12 @@ Gia_Man_t * Gia_ManDupTrimmed( Gia_Man_t * p, int fTrimCis, int fTrimCos, int fD
}
else
{
+ // check if there are POs to be added
+ Gia_ManForEachPo( p, pObj, i )
+ if ( !fTrimCos || !Gia_ObjIsConst0(Gia_ObjFanin0(pObj)) )
+ break;
+ if ( i == Gia_ManPoNum(p) ) // there is no POs - add dummy PO
+ Gia_ManAppendCo( pNew, 0 );
Gia_ManForEachCo( p, pObj, i )
if ( !fTrimCos || !Gia_ObjIsConst0(Gia_ObjFanin0(pObj)) || Gia_ObjIsRi(p, pObj) )
pObj->Value = Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );