| /**CFile**************************************************************** |
| |
| FileName [lpkMan.c] |
| |
| SystemName [ABC: Logic synthesis and verification system.] |
| |
| PackageName [Fast Boolean matching for LUT structures.] |
| |
| Synopsis [] |
| |
| Author [Alan Mishchenko] |
| |
| Affiliation [UC Berkeley] |
| |
| Date [Ver. 1.0. Started - April 28, 2007.] |
| |
| Revision [$Id: lpkMan.c,v 1.00 2007/04/28 00:00:00 alanmi Exp $] |
| |
| ***********************************************************************/ |
| |
| #include "lpkInt.h" |
| |
| ABC_NAMESPACE_IMPL_START |
| |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// DECLARATIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// FUNCTION DEFINITIONS /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| Lpk_Man_t * Lpk_ManStart( Lpk_Par_t * pPars ) |
| { |
| Lpk_Man_t * p; |
| int i, nWords; |
| assert( pPars->nLutsMax <= 16 ); |
| assert( pPars->nVarsMax > 0 && pPars->nVarsMax <= 16 ); |
| p = ABC_ALLOC( Lpk_Man_t, 1 ); |
| memset( p, 0, sizeof(Lpk_Man_t) ); |
| p->pPars = pPars; |
| p->nCutsMax = LPK_CUTS_MAX; |
| p->vTtElems = Vec_PtrAllocTruthTables( pPars->nVarsMax ); |
| p->vTtNodes = Vec_PtrAllocSimInfo( 1024, Abc_TruthWordNum(pPars->nVarsMax) ); |
| p->vCover = Vec_IntAlloc( 1 << 12 ); |
| p->vLeaves = Vec_PtrAlloc( 32 ); |
| for ( i = 0; i < 8; i++ ) |
| p->vSets[i] = Vec_IntAlloc(100); |
| p->pDsdMan = Kit_DsdManAlloc( pPars->nVarsMax, 64 ); |
| p->vMemory = Vec_IntAlloc( 1024 * 32 ); |
| p->vBddDir = Vec_IntAlloc( 256 ); |
| p->vBddInv = Vec_IntAlloc( 256 ); |
| // allocate temporary storage for truth tables |
| nWords = Kit_TruthWordNum(pPars->nVarsMax); |
| p->ppTruths[0][0] = ABC_ALLOC( unsigned, 32 * nWords ); |
| p->ppTruths[1][0] = p->ppTruths[0][0] + 1 * nWords; |
| for ( i = 1; i < 2; i++ ) |
| p->ppTruths[1][i] = p->ppTruths[1][0] + i * nWords; |
| p->ppTruths[2][0] = p->ppTruths[1][0] + 2 * nWords; |
| for ( i = 1; i < 4; i++ ) |
| p->ppTruths[2][i] = p->ppTruths[2][0] + i * nWords; |
| p->ppTruths[3][0] = p->ppTruths[2][0] + 4 * nWords; |
| for ( i = 1; i < 8; i++ ) |
| p->ppTruths[3][i] = p->ppTruths[3][0] + i * nWords; |
| p->ppTruths[4][0] = p->ppTruths[3][0] + 8 * nWords; |
| for ( i = 1; i < 16; i++ ) |
| p->ppTruths[4][i] = p->ppTruths[4][0] + i * nWords; |
| return p; |
| } |
| |
| /**Function************************************************************* |
| |
| Synopsis [] |
| |
| Description [] |
| |
| SideEffects [] |
| |
| SeeAlso [] |
| |
| ***********************************************************************/ |
| void Lpk_ManStop( Lpk_Man_t * p ) |
| { |
| int i; |
| ABC_FREE( p->ppTruths[0][0] ); |
| Vec_IntFree( p->vBddDir ); |
| Vec_IntFree( p->vBddInv ); |
| Vec_IntFree( p->vMemory ); |
| Kit_DsdManFree( p->pDsdMan ); |
| for ( i = 0; i < 8; i++ ) |
| Vec_IntFree(p->vSets[i]); |
| if ( p->pIfMan ) |
| { |
| void * pPars = p->pIfMan->pPars; |
| If_ManStop( p->pIfMan ); |
| ABC_FREE( pPars ); |
| } |
| if ( p->vLevels ) |
| Vec_VecFree( p->vLevels ); |
| if ( p->vVisited ) |
| Vec_VecFree( p->vVisited ); |
| Vec_PtrFree( p->vLeaves ); |
| Vec_IntFree( p->vCover ); |
| Vec_PtrFree( p->vTtElems ); |
| Vec_PtrFree( p->vTtNodes ); |
| ABC_FREE( p ); |
| } |
| |
| //////////////////////////////////////////////////////////////////////// |
| /// END OF FILE /// |
| //////////////////////////////////////////////////////////////////////// |
| |
| |
| ABC_NAMESPACE_IMPL_END |
| |