diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-02-21 12:10:35 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-02-21 12:10:35 -0800 |
commit | dd52905fa394bb276cee1442c680f8c02937b7fb (patch) | |
tree | f1b5705546076609b044c5f55b07201650f807ad /src/proof/int/intFrames.c | |
parent | 24823dce0c2c6efb03948b69fff4e6da31b5b2c1 (diff) | |
download | abc-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.c | 13 |
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; |