summaryrefslogtreecommitdiffstats
path: root/src/sat/bmc/bmcBmc3.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-09-17 23:19:54 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-09-17 23:19:54 -0700
commitd4bd7846c3bb80c89ae646d20d8c144d089564b0 (patch)
tree569aeaf2cafe986e034e07d6334158a8e0453c45 /src/sat/bmc/bmcBmc3.c
parent3d8dc1217c3634963e36f793d475cb73622d8719 (diff)
downloadabc-d4bd7846c3bb80c89ae646d20d8c144d089564b0.tar.gz
abc-d4bd7846c3bb80c89ae646d20d8c144d089564b0.tar.bz2
abc-d4bd7846c3bb80c89ae646d20d8c144d089564b0.zip
Added bridge integration for multi-output 'bmc3 -a'.
Diffstat (limited to 'src/sat/bmc/bmcBmc3.c')
-rw-r--r--src/sat/bmc/bmcBmc3.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sat/bmc/bmcBmc3.c b/src/sat/bmc/bmcBmc3.c
index e312e3be..8e22a0d5 100644
--- a/src/sat/bmc/bmcBmc3.c
+++ b/src/sat/bmc/bmcBmc3.c
@@ -64,6 +64,8 @@ struct Gia_ManBmc_t_
char * pSopSizes, ** pSops; // CNF representation
};
+extern int Gia_ManToBridgeResult( FILE * pFile, int Result, Abc_Cex_t * pCex, int iPoProved );
+
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
@@ -1424,6 +1426,11 @@ clkOther += Abc_Clock() - clk2;
nOutDigits, i, f, nOutDigits, pPars->nFailOuts, nOutDigits, Saig_ManPoNum(pAig) );
if ( p->vCexes == NULL )
p->vCexes = Vec_PtrStart( Saig_ManPoNum(pAig) );
+ if ( p->pPars->fUseBridge )
+ {
+ Abc_Cex_t * pCexNew = Abc_CexMakeTriv( Aig_ManRegNum(pAig), Saig_ManPiNum(pAig), Saig_ManPoNum(pAig), f*Saig_ManPoNum(pAig)+i );
+ Gia_ManToBridgeResult( stdout, 0, pCexNew, pCexNew->iPo );
+ }
Vec_PtrWriteEntry( p->vCexes, i, pPars->fStoreCex ? Abc_CexMakeTriv( Aig_ManRegNum(pAig), Saig_ManPiNum(pAig), Saig_ManPoNum(pAig), f*Saig_ManPoNum(pAig)+i ) : (void *)(ABC_PTRINT_T)1 );
if ( pPars->pFuncOnFail && pPars->pFuncOnFail(i, pPars->fStoreCex ? (Abc_Cex_t *)Vec_PtrEntry(p->vCexes, i) : NULL) )
{
@@ -1514,6 +1521,11 @@ nTimeSat += Abc_Clock() - clk2;
nOutDigits, i, f, nOutDigits, pPars->nFailOuts, nOutDigits, Saig_ManPoNum(pAig) );
if ( p->vCexes == NULL )
p->vCexes = Vec_PtrStart( Saig_ManPoNum(pAig) );
+ if ( p->pPars->fUseBridge )
+ {
+ Abc_Cex_t * pCexNew = Saig_ManGenerateCex( p, f, i );
+ Gia_ManToBridgeResult( stdout, 0, pCexNew, pCexNew->iPo );
+ }
Vec_PtrWriteEntry( p->vCexes, i, pPars->fStoreCex? Saig_ManGenerateCex( p, f, i ) : (void *)(ABC_PTRINT_T)1 );
if ( pPars->pFuncOnFail && pPars->pFuncOnFail(i, pPars->fStoreCex ? (Abc_Cex_t *)Vec_PtrEntry(p->vCexes, i) : NULL) )
{