summaryrefslogtreecommitdiffstats
path: root/src/aig/llb/llb4Cex.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-08-20 20:29:11 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2011-08-20 20:29:11 +0700
commit56035ab9ab1051f87e1186d06bd250375f9d4227 (patch)
treea15057b597b4da9fccb58bed3a4e7faad20d8a95 /src/aig/llb/llb4Cex.c
parent21dfaedebd842c240e770d3bcfb62e2fb4531b40 (diff)
downloadabc-56035ab9ab1051f87e1186d06bd250375f9d4227.tar.gz
abc-56035ab9ab1051f87e1186d06bd250375f9d4227.tar.bz2
abc-56035ab9ab1051f87e1186d06bd250375f9d4227.zip
Making sure reconcile does not change the PO number.
Diffstat (limited to 'src/aig/llb/llb4Cex.c')
-rw-r--r--src/aig/llb/llb4Cex.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/aig/llb/llb4Cex.c b/src/aig/llb/llb4Cex.c
index 6c4cedfb..603c6e59 100644
--- a/src/aig/llb/llb4Cex.c
+++ b/src/aig/llb/llb4Cex.c
@@ -44,7 +44,7 @@ ABC_NAMESPACE_IMPL_START
SeeAlso []
***********************************************************************/
-Abc_Cex_t * Llb4_Nonlin4TransformCex( Aig_Man_t * pAig, Vec_Ptr_t * vStates, int fVerbose )
+Abc_Cex_t * Llb4_Nonlin4TransformCex( Aig_Man_t * pAig, Vec_Ptr_t * vStates, int iCexPo, int fVerbose )
{
Abc_Cex_t * pCex;
Cnf_Dat_t * pCnf;
@@ -124,8 +124,18 @@ Abc_Cex_t * Llb4_Nonlin4TransformCex( Aig_Man_t * pAig, Vec_Ptr_t * vStates, int
// add the last frame when the property fails
Vec_IntClear( vAssumps );
- Saig_ManForEachPo( pAig, pObj, k )
- Vec_IntPush( vAssumps, toLitCond( pCnf->pVarNums[Aig_ObjId(pObj)], 0 ) );
+ if ( iCexPo >= 0 )
+ {
+ Saig_ManForEachPo( pAig, pObj, k )
+ if ( k == iCexPo )
+ Vec_IntPush( vAssumps, toLitCond( pCnf->pVarNums[Aig_ObjId(pObj)], 0 ) );
+ }
+ else
+ {
+ Saig_ManForEachPo( pAig, pObj, k )
+ Vec_IntPush( vAssumps, toLitCond( pCnf->pVarNums[Aig_ObjId(pObj)], 0 ) );
+ }
+
// add clause
status = sat_solver_addclause( pSat, Vec_IntArray(vAssumps), Vec_IntArray(vAssumps) + Vec_IntSize(vAssumps) );
if ( status == 0 )
@@ -292,7 +302,7 @@ Abc_Cex_t * Llb4_Nonlin4NormalizeCex( Aig_Man_t * pAigOrg, Aig_Man_t * pAigRpm,
return NULL;
}
// derive updated counter-example
- pCexOrg = Llb4_Nonlin4TransformCex( pAigOrg, vStates, 0 );
+ pCexOrg = Llb4_Nonlin4TransformCex( pAigOrg, vStates, pCexRpm->iPo, 0 );
Vec_PtrFree( vStates );
return pCexOrg;
}