summaryrefslogtreecommitdiffstats
path: root/src/proof/int/intFrames.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-02-21 12:10:35 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2013-02-21 12:10:35 -0800
commitdd52905fa394bb276cee1442c680f8c02937b7fb (patch)
treef1b5705546076609b044c5f55b07201650f807ad /src/proof/int/intFrames.c
parent24823dce0c2c6efb03948b69fff4e6da31b5b2c1 (diff)
downloadabc-dd52905fa394bb276cee1442c680f8c02937b7fb.tar.gz
abc-dd52905fa394bb276cee1442c680f8c02937b7fb.tar.bz2
abc-dd52905fa394bb276cee1442c680f8c02937b7fb.zip
Enabling two-timeframe property check in the interpolation procedure.
Diffstat (limited to 'src/proof/int/intFrames.c')
-rw-r--r--src/proof/int/intFrames.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/proof/int/intFrames.c b/src/proof/int/intFrames.c
index 7c5231b7..186f1c54 100644
--- a/src/proof/int/intFrames.c
+++ b/src/proof/int/intFrames.c
@@ -44,10 +44,11 @@ ABC_NAMESPACE_IMPL_START
SeeAlso []
***********************************************************************/
-Aig_Man_t * Inter_ManFramesInter( Aig_Man_t * pAig, int nFrames, int fAddRegOuts )
+Aig_Man_t * Inter_ManFramesInter( Aig_Man_t * pAig, int nFrames, int fAddRegOuts, int fUseTwoFrames )
{
Aig_Man_t * pFrames;
Aig_Obj_t * pObj, * pObjLi, * pObjLo;
+ Aig_Obj_t * pLastPo = NULL;
int i, f;
assert( Saig_ManRegNum(pAig) > 0 );
assert( Saig_ManPoNum(pAig)-Saig_ManConstrNum(pAig) == 1 );
@@ -83,6 +84,9 @@ Aig_Man_t * Inter_ManFramesInter( Aig_Man_t * pAig, int nFrames, int fAddRegOuts
}
if ( f == nFrames - 1 )
break;
+ // remember the last PO
+ pObj = Aig_ManCo( pAig, 0 );
+ pLastPo = Aig_ObjChild0Copy(pObj);
// save register inputs
Saig_ManForEachLi( pAig, pObj, i )
pObj->pData = Aig_ObjChild0Copy(pObj);
@@ -100,7 +104,12 @@ Aig_Man_t * Inter_ManFramesInter( Aig_Man_t * pAig, int nFrames, int fAddRegOuts
else
{
pObj = Aig_ManCo( pAig, 0 );
- Aig_ObjCreateCo( pFrames, Aig_ObjChild0Copy(pObj) );
+ // add the last PO
+ if ( pLastPo == NULL || !fUseTwoFrames )
+ pLastPo = Aig_ObjChild0Copy(pObj);
+ else
+ pLastPo = Aig_Or( pFrames, pLastPo, Aig_ObjChild0Copy(pObj) );
+ Aig_ObjCreateCo( pFrames, pLastPo );
}
Aig_ManCleanup( pFrames );
return pFrames;