/**CFile**************************************************************** FileName [mvcApi.c] PackageName [MVSIS 2.0: Multi-valued logic synthesis system.] Synopsis [] Author [MVSIS Group] Affiliation [UC Berkeley] Date [Ver. 1.0. Started - February 1, 2003.] Revision [$Id: mvcApi.c,v 1.4 2003/04/03 06:31:48 alanmi Exp $] ***********************************************************************/ #include "mvc.h" ABC_NAMESPACE_IMPL_START //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Mvc_CoverReadWordNum( Mvc_Cover_t * pCover ) { return pCover->nWords; } int Mvc_CoverReadBitNum( Mvc_Cover_t * pCover ) { return pCover->nBits; } int Mvc_CoverReadCubeNum( Mvc_Cover_t * pCover ) { return pCover->lCubes.nItems; } Mvc_Cube_t * Mvc_CoverReadCubeHead( Mvc_Cover_t * pCover ) { return pCover->lCubes.pHead; } Mvc_Cube_t * Mvc_CoverReadCubeTail( Mvc_Cover_t * pCover ) { return pCover->lCubes.pTail; } Mvc_List_t * Mvc_CoverReadCubeList( Mvc_Cover_t * pCover ) { return &pCover->lCubes; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Mvc_ListReadCubeNum( Mvc_List_t * pList ) { return pList->nItems; } Mvc_Cube_t * Mvc_ListReadCubeHead( Mvc_List_t * pList ) { return pList->pHead; } Mvc_Cube_t * Mvc_ListReadCubeTail( Mvc_List_t * pList ) { return pList->pTail; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Mvc_CoverSetCubeNum( Mvc_Cover_t * pCover,int nItems ) { pCover->lCubes.nItems = nItems; } void Mvc_CoverSetCubeHead( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pHead = pCube; } void Mvc_CoverSetCubeTail( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pTail = pCube; } void Mvc_CoverSetCubeList( Mvc_Cover_t * pCover, Mvc_List_t * pList ) { pCover->lCubes = *pList; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Mvc_CoverIsEmpty( Mvc_Cover_t * pCover ) { return Mvc_CoverReadCubeNum(pCover) == 0; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Mvc_CoverIsTautology( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCube; int iBit, Value; if ( Mvc_CoverReadCubeNum(pCover) != 1 ) return 0; pCube = Mvc_CoverReadCubeHead( pCover ); Mvc_CubeForEachBit( pCover, pCube, iBit, Value ) if ( Value == 0 ) return 0; return 1; } /**Function************************************************************* Synopsis [Returns 1 if the cover is a binary buffer.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Mvc_CoverIsBinaryBuffer( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCube; if ( pCover->nBits != 2 ) return 0; if ( Mvc_CoverReadCubeNum(pCover) != 1 ) return 0; pCube = pCover->lCubes.pHead; if ( Mvc_CubeBitValue(pCube, 0) == 0 && Mvc_CubeBitValue(pCube, 1) == 1 ) return 1; return 0; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Mvc_CoverMakeEmpty( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCube, * pCube2; Mvc_CoverForEachCubeSafe( pCover, pCube, pCube2 ) Mvc_CubeFree( pCover, pCube ); pCover->lCubes.nItems = 0; pCover->lCubes.pHead = NULL; pCover->lCubes.pTail = NULL; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Mvc_CoverMakeTautology( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCubeNew; Mvc_CoverMakeEmpty( pCover ); pCubeNew = Mvc_CubeAlloc( pCover ); Mvc_CubeBitFill( pCubeNew ); Mvc_CoverAddCubeTail( pCover, pCubeNew ); } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Mvc_Cover_t * Mvc_CoverCreateEmpty( Mvc_Cover_t * pCover ) { Mvc_Cover_t * pCoverNew; pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits ); return pCoverNew; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Mvc_Cover_t * Mvc_CoverCreateTautology( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCubeNew; Mvc_Cover_t * pCoverNew; pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits ); pCubeNew = Mvc_CubeAlloc( pCoverNew ); Mvc_CubeBitFill( pCubeNew ); Mvc_CoverAddCubeTail( pCoverNew, pCubeNew ); return pCoverNew; } //////////////////////////////////////////////////////////////////////// /// END OF FILE /// //////////////////////////////////////////////////////////////////////// ABC_NAMESPACE_IMPL_END