From 0d09071f141cf1a7d48493c66e329f00dbfe5e91 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 11 Jul 2015 19:30:52 -0700 Subject: Adding new Python API 'is_func_iso2'. --- src/base/abc/abc.h | 2 +- src/base/abc/abcDfs.c | 22 ++++++++++++++++------ src/base/pla/plaFxch.c | 4 ++-- src/base/pla/plaHash.c | 2 +- src/base/pla/plaSimple.c | 4 ++-- 5 files changed, 22 insertions(+), 12 deletions(-) (limited to 'src/base') diff --git a/src/base/abc/abc.h b/src/base/abc/abc.h index ae7c02a5..7f516d79 100644 --- a/src/base/abc/abc.h +++ b/src/base/abc/abc.h @@ -626,7 +626,7 @@ extern ABC_DLL Vec_Ptr_t * Abc_NtkDfsWithBoxes( Abc_Ntk_t * pNtk ); extern ABC_DLL Vec_Ptr_t * Abc_NtkSupport( Abc_Ntk_t * pNtk ); extern ABC_DLL Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); extern ABC_DLL Vec_Int_t * Abc_NtkNodeSupportInt( Abc_Ntk_t * pNtk, int iCo ); -extern ABC_DLL int Abc_NtkFunctionalIso( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ); +extern ABC_DLL int Abc_NtkFunctionalIso( Abc_Ntk_t * pNtk, int iCo1, int iCo2, int fCommon ); extern ABC_DLL Vec_Ptr_t * Abc_AigDfs( Abc_Ntk_t * pNtk, int fCollectAll, int fCollectCos ); extern ABC_DLL Vec_Ptr_t * Abc_AigDfsMap( Abc_Ntk_t * pNtk ); extern ABC_DLL Vec_Vec_t * Abc_DfsLevelized( Abc_Obj_t * pNode, int fTfi ); diff --git a/src/base/abc/abcDfs.c b/src/base/abc/abcDfs.c index 9bca1e64..bb960ddc 100644 --- a/src/base/abc/abcDfs.c +++ b/src/base/abc/abcDfs.c @@ -980,7 +980,7 @@ int Abc_NtkFunctionalIsoGia_rec( Gia_Man_t * pNew, Abc_Obj_t * pNode ) iLit1 = Abc_LitNotCond( iLit1, Abc_ObjFaninC1(pNode) ); return (pNode->iTemp = Gia_ManHashAnd(pNew, iLit0, iLit1)); } -Gia_Man_t * Abc_NtkFunctionalIsoGia( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) +Gia_Man_t * Abc_NtkFunctionalIsoGia( Abc_Ntk_t * pNtk, int iCo1, int iCo2, int fCommon ) { Gia_Man_t * pNew = NULL, * pTemp; Vec_Int_t * vSupp1 = Abc_NtkNodeSupportInt( pNtk, iCo1 ); @@ -993,6 +993,16 @@ Gia_Man_t * Abc_NtkFunctionalIsoGia( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) pNew->pName = Abc_UtilStrsav( pNtk->pName ); pNew->pSpec = Abc_UtilStrsav( pNtk->pSpec ); Gia_ManHashStart( pNew ); + // put commom together + if ( fCommon ) + { + Vec_Int_t * vCommon = Vec_IntAlloc( Vec_IntSize(vSupp1) ); + Vec_IntTwoRemoveCommon( vSupp1, vSupp2, vCommon ); + Vec_IntAppend( vSupp1, vCommon ); + Vec_IntAppend( vSupp2, vCommon ); + Vec_IntFree( vCommon ); + assert( Vec_IntSize(vSupp1) == Vec_IntSize(vSupp2) ); + } // primary inputs Abc_AigConst1(pNtk)->iTemp = 1; Vec_IntForEachEntry( vSupp1, iCi, i ) @@ -1020,7 +1030,7 @@ Gia_Man_t * Abc_NtkFunctionalIsoGia( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) Vec_IntFree( vSupp2 ); return pNew; } -int Abc_NtkFunctionalIsoInt( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) +int Abc_NtkFunctionalIsoInt( Abc_Ntk_t * pNtk, int iCo1, int iCo2, int fCommon ) { Gia_Man_t * pGia; int Value; assert( Abc_NtkIsStrash(pNtk) ); @@ -1028,20 +1038,20 @@ int Abc_NtkFunctionalIsoInt( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) return 0; if ( iCo2 < 0 || iCo2 >= Abc_NtkCoNum(pNtk) ) return 0; - pGia = Abc_NtkFunctionalIsoGia( pNtk, iCo1, iCo2 ); + pGia = Abc_NtkFunctionalIsoGia( pNtk, iCo1, iCo2, fCommon ); if ( pGia == NULL ) return 0; Value = Cec_ManVerifySimple( pGia ); Gia_ManStop( pGia ); return (int)(Value == 1); } -int Abc_NtkFunctionalIso( Abc_Ntk_t * pNtk, int iCo1, int iCo2 ) +int Abc_NtkFunctionalIso( Abc_Ntk_t * pNtk, int iCo1, int iCo2, int fCommon ) { Abc_Ntk_t * pNtkNew; int Result; if ( Abc_NtkIsStrash(pNtk) ) - return Abc_NtkFunctionalIsoInt( pNtk, iCo1, iCo2 ); + return Abc_NtkFunctionalIsoInt( pNtk, iCo1, iCo2, fCommon ); pNtkNew = Abc_NtkStrash( pNtk, 0, 0, 0 ); - Result = Abc_NtkFunctionalIsoInt( pNtkNew, iCo1, iCo2 ); + Result = Abc_NtkFunctionalIsoInt( pNtkNew, iCo1, iCo2, fCommon ); Abc_NtkDelete( pNtkNew ); return Result; } diff --git a/src/base/pla/plaFxch.c b/src/base/pla/plaFxch.c index fd06b9a5..6534edbb 100644 --- a/src/base/pla/plaFxch.c +++ b/src/base/pla/plaFxch.c @@ -99,7 +99,7 @@ void Fxch_ManWriteBlif( char * pFileName, Vec_Wec_t * vCubes, Vec_Wrd_t * vDivs printf( "Cannot open file \"%s\" for writing.\n", pFileName ); else { - char * pLits = "-01?"; + //char * pLits = "-01?"; Vec_Str_t * vStr; Vec_Int_t * vCube; int i, k, Lit; @@ -617,7 +617,7 @@ void Fxch_ManCreateDivisors( Fxch_Man_t * p ) void Fxch_ManUpdate( Fxch_Man_t * p, int iDiv ) { Vec_Int_t * vCube1, * vCube2, * vLitP, * vLitN; - int nLitsNew = p->nLits - (int)Vec_FltEntry(&p->vWeights, iDiv); + //int nLitsNew = p->nLits - (int)Vec_FltEntry(&p->vWeights, iDiv); int i, Lit0, Lit1, hCube1, hCube2, iVarNew; //float Diff = Vec_FltEntry(&p->vWeights, iDiv) - (float)((int)Vec_FltEntry(&p->vWeights, iDiv)); //assert( Diff > 0.0 && Diff < 1.0 ); diff --git a/src/base/pla/plaHash.c b/src/base/pla/plaHash.c index b51ba4c1..33f2fba3 100644 --- a/src/base/pla/plaHash.c +++ b/src/base/pla/plaHash.c @@ -272,7 +272,7 @@ Vec_Int_t * Pla_ManComputeDistance1Int( Pla_Man_t * p ) Vec_Int_t * vCounts = Vec_IntStart( Vec_WecSize(&p->vCubeLits) ); Vec_Int_t * vEntries = Vec_IntAlloc( p->nIns ); int nBits = Abc_Base2Log( Vec_WecSizeSize(&p->vCubeLits) ) + 2; - int v, i, k, Count = 0; + int v, i, k;//, Count = 0; int iCube1, iCube2, iVar1, iVar2; assert( nBits <= 26 ); pTab = Tab_ManAlloc( nBits, p ); diff --git a/src/base/pla/plaSimple.c b/src/base/pla/plaSimple.c index 8fea5c1f..80254ba1 100644 --- a/src/base/pla/plaSimple.c +++ b/src/base/pla/plaSimple.c @@ -50,7 +50,7 @@ void Pla_ManDumpPla( Pla_Man_t * p, char * pFileName ) printf( "Cannot open file \"%s\" for writing.\n", pFileName ); else { - char * pLits = "-01?"; + //char * pLits = "-01?"; Vec_Str_t * vStr; Vec_Int_t * vCube; int i, k, Lit; @@ -89,7 +89,7 @@ void Pla_ManDumpBlif( Pla_Man_t * p, char * pFileName ) printf( "Cannot open file \"%s\" for writing.\n", pFileName ); else { - char * pLits = "-01?"; + //char * pLits = "-01?"; Vec_Str_t * vStr; Vec_Int_t * vCube; int i, k, Lit, Div; -- cgit v1.2.3