diff options
Diffstat (limited to 'src/base/abci')
-rw-r--r-- | src/base/abci/abcMiter.c | 2 | ||||
-rw-r--r-- | src/base/abci/abcPrint.c | 2 | ||||
-rw-r--r-- | src/base/abci/abcVerify.c | 34 |
3 files changed, 36 insertions, 2 deletions
diff --git a/src/base/abci/abcMiter.c b/src/base/abci/abcMiter.c index feeaa617..8c5a4a83 100644 --- a/src/base/abci/abcMiter.c +++ b/src/base/abci/abcMiter.c @@ -60,7 +60,7 @@ Abc_Ntk_t * Abc_NtkMiter( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fComb, int n assert( Abc_NtkHasOnlyLatchBoxes(pNtk1) ); assert( Abc_NtkHasOnlyLatchBoxes(pNtk2) ); // check that the networks have the same PIs/POs/latches - if ( !Abc_NtkCompareSignals( pNtk1, pNtk2, 0, fComb ) ) + if ( !Abc_NtkCompareSignals( pNtk1, pNtk2, fImplic, fComb ) ) return NULL; // make sure the circuits are strashed fRemove1 = (!Abc_NtkIsStrash(pNtk1) || Abc_NtkGetChoiceNum(pNtk1)) && (pNtk1 = Abc_NtkStrash(pNtk1, 0, 0, 0)); diff --git a/src/base/abci/abcPrint.c b/src/base/abci/abcPrint.c index 38b21a13..d6883105 100644 --- a/src/base/abci/abcPrint.c +++ b/src/base/abci/abcPrint.c @@ -380,6 +380,8 @@ void Abc_NtkPrintStats( Abc_Ntk_t * pNtk, int fFactored, int fSaveBest, int fDum // printf( "The total number of cube pairs = %d.\n", Abc_NtkGetCubePairNum(pNtk) ); fflush( stdout ); + if ( pNtk->pExdc ) + Abc_NtkPrintStats( pNtk->pExdc, fFactored, fSaveBest, fDumpResult, fUseLutLib, fPrintMuxes, fPower, fGlitch ); } /**Function************************************************************* diff --git a/src/base/abci/abcVerify.c b/src/base/abci/abcVerify.c index 8367d23c..7d9973b1 100644 --- a/src/base/abci/abcVerify.c +++ b/src/base/abci/abcVerify.c @@ -125,9 +125,32 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fV Prove_Params_t Params, * pParams = &Params; // Fraig_Params_t Params; // Fraig_Man_t * pMan; - Abc_Ntk_t * pMiter; + Abc_Ntk_t * pMiter, * pTemp; + Abc_Ntk_t * pExdc = NULL; int RetValue; + if ( pNtk1->pExdc != NULL || pNtk2->pExdc != NULL ) + { + if ( pNtk1->pExdc != NULL && pNtk2->pExdc != NULL ) + { + printf( "Comparing EXDC of the two networks:\n" ); + Abc_NtkCecFraig( pNtk1->pExdc, pNtk2->pExdc, nSeconds, fVerbose ); + printf( "Comparing networks under EXDC of the first network.\n" ); + pExdc = pNtk1->pExdc; + } + else if ( pNtk1->pExdc != NULL ) + { + printf( "Second network has no EXDC. Comparing main networks under EXDC of the first network.\n" ); + pExdc = pNtk1->pExdc; + } + else if ( pNtk2->pExdc != NULL ) + { + printf( "First network has no EXDC. Comparing main networks under EXDC of the second network.\n" ); + pExdc = pNtk2->pExdc; + } + else assert( 0 ); + } + // get the miter of the two networks pMiter = Abc_NtkMiter( pNtk1, pNtk2, 1, 0, 0, 0 ); if ( pMiter == NULL ) @@ -135,6 +158,15 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fV printf( "Miter computation has failed.\n" ); return; } + // add EXDC to the miter + if ( pExdc ) + { + assert( Abc_NtkPoNum(pMiter) == 1 ); + assert( Abc_NtkPoNum(pExdc) == 1 ); + pMiter = Abc_NtkMiter( pTemp = pMiter, pExdc, 1, 0, 1, 0 ); + Abc_NtkDelete( pTemp ); + } + // handle trivial case RetValue = Abc_NtkMiterIsConstant( pMiter ); if ( RetValue == 0 ) { |