diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2005-10-09 08:01:00 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2005-10-09 08:01:00 -0700 |
commit | 8ed83f17b853ea7bd7afa7dd1098d0abb3e98c69 (patch) | |
tree | c0a4902f065ab11ca8d33a5c0c9184a47fdea744 /src/misc/npn | |
parent | 20c2b197984ad6da0f28eb9ef86f95b362d96335 (diff) | |
download | abc-8ed83f17b853ea7bd7afa7dd1098d0abb3e98c69.tar.gz abc-8ed83f17b853ea7bd7afa7dd1098d0abb3e98c69.tar.bz2 abc-8ed83f17b853ea7bd7afa7dd1098d0abb3e98c69.zip |
Version abc51009
Diffstat (limited to 'src/misc/npn')
-rw-r--r-- | src/misc/npn/npn.c | 202 | ||||
-rw-r--r-- | src/misc/npn/npn.h | 105 | ||||
-rw-r--r-- | src/misc/npn/npnGenStr.c | 473 | ||||
-rw-r--r-- | src/misc/npn/npnTruth.c | 137 | ||||
-rw-r--r-- | src/misc/npn/npnUtil.c | 78 |
5 files changed, 0 insertions, 995 deletions
diff --git a/src/misc/npn/npn.c b/src/misc/npn/npn.c deleted file mode 100644 index ad4b4de6..00000000 --- a/src/misc/npn/npn.c +++ /dev/null @@ -1,202 +0,0 @@ -/**CFile**************************************************************** - - FileName [npn.c] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [] - - Synopsis [] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: npn.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#include "extra.h" -#include "npn.h" -#include "vec.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -static int Npn_CompareVecs( void ** p0, void ** p1 ); -static Vec_Int_t * Npn_GetSignature( unsigned uTruth, int nVars ); -static void Npn_VecPrint( FILE * pFile, Vec_Int_t * vVec ); -static int Npn_VecProperty( Vec_Int_t * vVec ); - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_Experiment() -{ - Vec_Int_t ** pVecs; - FILE * pFile; - int nFuncs, Num, i; - - pFile = fopen( "npn5.txt", "r" ); - pVecs = ALLOC( Vec_Int_t *, 1000000 ); - for ( i = 0; ; i++ ) - { - if ( fscanf( pFile, "%x", &Num ) != 1 ) - break; - pVecs[i] = Npn_GetSignature( Num, 5 ); - if ( Npn_VecProperty( pVecs[i] ) ) - { - printf( "1s = %2d. ", Extra_CountOnes((unsigned char *)&Num, (1 << 5) / 8) ); - Extra_PrintHex( stdout, Num, 5 ); fprintf( stdout, "\n" ); - } - - } - nFuncs = i; - printf( "Read %d numbers.\n", nFuncs ); - fclose( pFile ); - /* - // sort the vectors - qsort( (void *)pVecs, nFuncs, sizeof(void *), - (int (*)(const void *, const void *)) Npn_CompareVecs ); - pFile = fopen( "npn5ar.txt", "w" ); - for ( i = 0; i < nFuncs; i++ ) - { - Npn_VecPrint( pFile, pVecs[i] ); - Vec_IntFree( pVecs[i] ); - } - fclose( pFile ); - */ - - free( pVecs ); -} - - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Int_t * Npn_GetSignature( unsigned uTruth, int nVars ) -{ - // elementary truth tables - static unsigned Signs[5] = { - 0xAAAAAAAA, // 1010 1010 1010 1010 1010 1010 1010 1010 - 0xCCCCCCCC, // 1010 1010 1010 1010 1010 1010 1010 1010 - 0xF0F0F0F0, // 1111 0000 1111 0000 1111 0000 1111 0000 - 0xFF00FF00, // 1111 1111 0000 0000 1111 1111 0000 0000 - 0xFFFF0000 // 1111 1111 1111 1111 0000 0000 0000 0000 - }; - Vec_Int_t * vVec; - unsigned uCofactor; - int Count0, Count1, i; - int nBytes = (1 << nVars) / 8; - - // collect the number of 1s in each cofactor - vVec = Vec_IntAlloc( 5 ); - for ( i = 0; i < nVars; i++ ) - { - uCofactor = uTruth & ~Signs[i]; - Count0 = Extra_CountOnes( (unsigned char *)&uCofactor, nBytes ); - uCofactor = uTruth & Signs[i]; - Count1 = Extra_CountOnes( (unsigned char *)&uCofactor, nBytes ); - if ( Count0 < Count1 ) - Vec_IntPush( vVec, Count0 ); - else - Vec_IntPush( vVec, Count1 ); - } - // sort them - Vec_IntSort( vVec, 0 ); - return vVec; - -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_CompareVecs( void ** p0, void ** p1 ) -{ - Vec_Int_t * vVec0 = *p0; - Vec_Int_t * vVec1 = *p1; - int i; - assert( vVec0->nSize == vVec1->nSize ); - for ( i = 0; i < vVec0->nSize; i++ ) - if ( vVec0->pArray[i] < vVec1->pArray[i] ) - return -1; - else if ( vVec0->pArray[i] > vVec1->pArray[i] ) - return 1; - return 0; -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_VecPrint( FILE * pFile, Vec_Int_t * vVec ) -{ - int i; - for ( i = 0; i < vVec->nSize; i++ ) - fprintf( pFile, "%2d ", vVec->pArray[i] ); - fprintf( pFile, "\n" ); -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_VecProperty( Vec_Int_t * vVec ) -{ - int i; - for ( i = 0; i < vVec->nSize; i++ ) - if ( vVec->pArray[i] != i + 1 ) - return 0; - return 1; -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - diff --git a/src/misc/npn/npn.h b/src/misc/npn/npn.h deleted file mode 100644 index 61aa6297..00000000 --- a/src/misc/npn/npn.h +++ /dev/null @@ -1,105 +0,0 @@ -/**CFile**************************************************************** - - FileName [npn.h] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [] - - Synopsis [External declarations.] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: npn.h,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#ifndef __NPN_H__ -#define __NPN_H__ - -//////////////////////////////////////////////////////////////////////// -/// INCLUDES /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// PARAMETERS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// BASIC TYPES /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// MACRO DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -#define EXTRA_WORD_VARS 5 - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFINITIONS /// -//////////////////////////////////////////////////////////////////////// - -static inline int Extra_BitCharNum( int nVars ) { if ( nVars <= 3 ) return 1; return 1 << (nVars - 3); } -static inline int Extra_BitWordNum( int nVars ) { if ( nVars <= EXTRA_WORD_VARS ) return 1; return 1 << (nVars - EXTRA_WORD_VARS); } - -static inline int Extra_BitRead( uint8 * pBits, int iBit ) { return ( (pBits[iBit/8] & (1 << (iBit%8))) > 0 ); } -static inline void Extra_BitSet( uint8 * pBits, int iBit ) { pBits[iBit/8] |= (1 << (iBit%8)); } -static inline void Extra_BitXor( uint8 * pBits, int iBit ) { pBits[iBit/8] ^= (1 << (iBit%8)); } - -static inline void Extra_BitClean( int nVars, uint8 * pBits ) -{ - unsigned * pWords = (unsigned *)pBits; - int i; - for ( i = Extra_BitWordNum(nVars) - 1; i >= 0; i-- ) - pWords[i] = 0; -} -static inline void Extra_BitNot( int nVars, uint8 * pBits ) -{ - unsigned * pWords = (unsigned *)pBits; - int i; - for ( i = Extra_BitWordNum(nVars) - 1; i >= 0; i-- ) - pWords[i] = ~pWords[i]; -} -static inline void Extra_BitCopy( int nVars, uint8 * pBits1, uint8 * pBits ) -{ - unsigned * pWords = (unsigned *)pBits; - unsigned * pWords1 = (unsigned *)pBits1; - int i; - for ( i = Extra_BitWordNum(nVars) - 1; i >= 0; i-- ) - pWords[i] = pWords1[i]; -} -static inline void Extra_BitAnd( int nVars, uint8 * pBits1, uint8 * pBits2, uint8 * pBits ) -{ - unsigned * pWords = (unsigned *)pBits; - unsigned * pWords1 = (unsigned *)pBits1; - unsigned * pWords2 = (unsigned *)pBits2; - int i; - for ( i = Extra_BitWordNum(nVars) - 1; i >= 0; i-- ) - pWords[i] = pWords1[i] & pWords2[i]; -} -static inline void Extra_BitSharp( int nVars, uint8 * pBits1, uint8 * pBits2, uint8 * pBits ) -{ - unsigned * pWords = (unsigned *)pBits; - unsigned * pWords1 = (unsigned *)pBits1; - unsigned * pWords2 = (unsigned *)pBits2; - int i; - for ( i = Extra_BitWordNum(nVars) - 1; i >= 0; i-- ) - pWords[i] = pWords1[i] & ~pWords2[i]; -} - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -/*=== zzz.c ==========================================================*/ - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - -#endif - diff --git a/src/misc/npn/npnGenStr.c b/src/misc/npn/npnGenStr.c deleted file mode 100644 index adbfdcdf..00000000 --- a/src/misc/npn/npnGenStr.c +++ /dev/null @@ -1,473 +0,0 @@ -/**CFile**************************************************************** - - FileName [npnUtil.c] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [] - - Synopsis [] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: npnUtil.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#include "extra.h" -#include "npn.h" -#include "vec.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -static Vec_Ptr_t * Npn_Generate_rec( int nVars, int fFold ); -static void Npn_GenerateMerge( Vec_Ptr_t * vVec1, Vec_Ptr_t * vVec2, Vec_Ptr_t * vVec ); -static void Npn_GenerateFree( Vec_Ptr_t * vVec ); -static Vec_Ptr_t * Npn_GenerateFold( Vec_Ptr_t * vVec ); -static void Npn_GenerateEmbed( Vec_Ptr_t * vVec ); -static void Npn_GeneratePrint( Vec_Ptr_t * vVec ); - - -static void Npn_RewritePrint( Vec_Ptr_t * vVec ); -static Vec_Ptr_t * Npn_Rewrite( char * pStruct ); - -static int Npn_RewriteNumEntries( char * pString ); -static int Npn_RewriteLastAnd( char * pBeg, char * pString ); -static int Npn_RewriteLastExor( char * pBeg, char * pString ); - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_Generate() -{ - Vec_Ptr_t * vVec; - vVec = Npn_Generate_rec( 7, 1 ); - Npn_GenerateEmbed( vVec ); - Npn_GeneratePrint( vVec ); - Npn_GenerateFree( vVec ); -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Ptr_t * Npn_Generate_rec( int nVars, int fFold ) -{ - char Buffer[20], * pChar; - Vec_Ptr_t * vVec, * vVec1, * vVec2, * pTemp; - int i; - - vVec = Vec_PtrAlloc( 100 ); - - // generate the combination - pChar = Buffer; - for ( i = 0; i < nVars; i++ ) - *pChar++ = '.'; - *pChar++ = 0; - - Vec_PtrPush( vVec, util_strsav(Buffer) ); - if ( nVars == 2 || !fFold ) - return vVec; - - assert( nVars > 2 ); - for ( i = 2; i < nVars; i++ ) - { - vVec1 = Npn_Generate_rec( i, 1 ); - vVec1 = Npn_GenerateFold( pTemp = vVec1 ); - Npn_GenerateFree( pTemp ); - // add folded pairs - if ( nVars - i > 1 ) - { - vVec2 = Npn_Generate_rec( nVars - i, 1 ); - vVec2 = Npn_GenerateFold( pTemp = vVec2 ); - Npn_GenerateFree( pTemp ); - Npn_GenerateMerge( vVec1, vVec2, vVec ); - Npn_GenerateFree( vVec2 ); - } - // add unfolded pairs - vVec2 = Npn_Generate_rec( nVars - i, 0 ); - Npn_GenerateMerge( vVec1, vVec2, vVec ); - Npn_GenerateFree( vVec2 ); - Npn_GenerateFree( vVec1 ); - } - return vVec; -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_GenerateMerge( Vec_Ptr_t * vVec1, Vec_Ptr_t * vVec2, Vec_Ptr_t * vVec ) -{ - char Buffer[100]; - char * pEntry1, * pEntry2, * pEntry; - int i, k, m; - Vec_PtrForEachEntry( vVec1, pEntry1, i ) - Vec_PtrForEachEntry( vVec2, pEntry2, k ) - { - if ( *pEntry1 == '(' && *pEntry2 == '(' ) - if ( strcmp( pEntry1, pEntry2 ) > 0 ) - continue; - - // get the new entry - sprintf( Buffer, "%s%s", pEntry1, pEntry2 ); - // skip duplicates - Vec_PtrForEachEntry( vVec, pEntry, m ) - if ( strcmp( pEntry, Buffer ) == 0 ) - break; - if ( m != Vec_PtrSize(vVec) ) - continue; - // add the new entry - Vec_PtrPush( vVec, util_strsav(Buffer) ); - } -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_GenerateFree( Vec_Ptr_t * vVec ) -{ - char * pEntry; - int i; - Vec_PtrForEachEntry( vVec, pEntry, i ) - free( pEntry ); - Vec_PtrFree( vVec ); -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Ptr_t * Npn_GenerateFold( Vec_Ptr_t * vVec ) -{ - Vec_Ptr_t * vVecR; - char Buffer[100]; - char * pEntry; - int i; - vVecR = Vec_PtrAlloc( 10 ); - Vec_PtrForEachEntry( vVec, pEntry, i ) - { - // add entry without folding if the second part is folded - if ( pEntry[strlen(pEntry) - 1] == ')' ) - Vec_PtrPush( vVecR, util_strsav(pEntry) ); - // add the entry with folding - sprintf( Buffer, "(%s)", pEntry ); - Vec_PtrPush( vVecR, util_strsav(Buffer) ); - } - return vVecR; -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_GenerateEmbed( Vec_Ptr_t * vVec ) -{ - char Buffer[100]; - char * pEntry; - int i; - Vec_PtrForEachEntry( vVec, pEntry, i ) - { - sprintf( Buffer, "(%s)", pEntry ); - Vec_PtrWriteEntry( vVec, i, util_strsav(Buffer) ); - free( pEntry ); - } -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_GeneratePrint( Vec_Ptr_t * vVec ) -{ - char * pEntry; - int i; - Vec_PtrForEachEntry( vVec, pEntry, i ) - { - printf( "%5d : %s\n", i, pEntry ); - - { - Vec_Ptr_t * vFuncs; - vFuncs = Npn_Rewrite( pEntry ); - Npn_RewritePrint( vFuncs ); - Vec_PtrFree( vFuncs ); - } - } -} - - - - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_RewritePrint( Vec_Ptr_t * vVec ) -{ - char * pEntry; - int i; - Vec_PtrForEachEntry( vVec, pEntry, i ) - printf( " %3d : %s\n", i, pEntry ); -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_Rewrite_rec( char * pStruct, Vec_Ptr_t * vVec, Vec_Str_t * vForm ) -{ - int nSizeOld; - char * pCur; - // find the next opening paranthesis - for ( pCur = pStruct; *pCur; pCur++ ) - { - if ( *pCur == '(' ) - break; - Vec_StrPush( vForm, *pCur ); - } - // the paranthesis is not found quit - if ( *pCur == 0 ) - { - Vec_StrPush( vForm, 0 ); - Vec_PtrPush( vVec, util_strsav( vForm->pArray ) ); - return; - } - assert( *pCur == '(' ); - pCur++; - // remember the current size - nSizeOld = vForm->nSize; - // add different types - if ( Npn_RewriteLastAnd(vForm->pArray, vForm->pArray+vForm->nSize) ) - { - Vec_StrPush( vForm, 'N' ); - Vec_StrPush( vForm, '(' ); - Npn_Rewrite_rec( pCur, vVec, vForm ); - Vec_StrShrink( vForm, nSizeOld ); - } - else - { - Vec_StrPush( vForm, 'A' ); - Vec_StrPush( vForm, '(' ); - Npn_Rewrite_rec( pCur, vVec, vForm ); - Vec_StrShrink( vForm, nSizeOld ); - } - // add different types - if ( Npn_RewriteNumEntries(pCur) == 3 ) - { - Vec_StrPush( vForm, 'P' ); - Vec_StrPush( vForm, '(' ); - Npn_Rewrite_rec( pCur, vVec, vForm ); - Vec_StrShrink( vForm, nSizeOld ); - } - // add different types - if ( !Npn_RewriteLastExor(vForm->pArray, vForm->pArray+vForm->nSize) ) - { - Vec_StrPush( vForm, 'X' ); - Vec_StrPush( vForm, '(' ); - Npn_Rewrite_rec( pCur, vVec, vForm ); - Vec_StrShrink( vForm, nSizeOld ); - } -} - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -Vec_Ptr_t * Npn_Rewrite( char * pStruct ) -{ - Vec_Ptr_t * vVec; - Vec_Str_t * vForm; - vVec = Vec_PtrAlloc( 10 ); - vForm = Vec_StrAlloc( 10 ); - Npn_Rewrite_rec( pStruct, vVec, vForm ); - Vec_StrFree( vForm ); - return vVec; -} - - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_RewriteNumEntries( char * pString ) -{ - char * pCur; - int Counter = 0; - int nPars = 0; - for ( pCur = pString; *pCur; pCur++ ) - { - if ( nPars == 0 ) - { - if ( *pCur == '.' ) - Counter++; - else if ( *pCur == '(' ) - { - Counter++; - nPars++; - } - else if ( *pCur == ')' ) - nPars--; - } - else if ( nPars > 0 ) - { - if ( *pCur == '(' ) - nPars++; - else if ( *pCur == ')' ) - nPars--; - } - else - break; - } - return Counter; -} - -/**Function************************************************************* - - Synopsis [Returns 1 if the last was EXOR.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_RewriteLastAnd( char * pBeg, char * pEnd ) -{ - char * pCur; - int nPars = 1; - for ( pCur = pEnd - 1; pCur >= pBeg; pCur-- ) - { - if ( *pCur == ')' ) - nPars++; - else if ( *pCur == '(' ) - nPars--; - - if ( nPars == 0 && *pCur == 'A' ) - return 1; - } - return 0; -} - -/**Function************************************************************* - - Synopsis [Returns 1 if the last was EXOR.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_RewriteLastExor( char * pBeg, char * pEnd ) -{ - char * pCur; - int nPars = 1; - for ( pCur = pEnd - 1; pCur >= pBeg; pCur-- ) - { - if ( *pCur == ')' ) - nPars++; - else if ( *pCur == '(' ) - nPars--; - - if ( nPars == 0 && *pCur == 'X' ) - return 1; - } - return 0; -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - diff --git a/src/misc/npn/npnTruth.c b/src/misc/npn/npnTruth.c deleted file mode 100644 index b6be775b..00000000 --- a/src/misc/npn/npnTruth.c +++ /dev/null @@ -1,137 +0,0 @@ -/**CFile**************************************************************** - - FileName [npnUtil.c] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [] - - Synopsis [] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: npnUtil.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#include "extra.h" -#include "npn.h" -#include "vec.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [Checks if the variable belongs to the support.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Extra_TruthCofactors( int nVars, uint8 * puTruth, uint8 * puElem[][32], - uint8 * puTruthCofs0[][32], uint8 * puTruthCofs1[][32] ) -{ - int v; - for ( v = 0; v < nVars; v++ ) - { - Extra_BitSharp( nVars, puTruth, puElem[v], (uint8 *)puTruthCofs0[v] ); - Extra_BitAnd ( nVars, puTruth, puElem[v], (uint8 *)puTruthCofs1[v] ); - } -} - -/**Function************************************************************* - - Synopsis [Checks if the variable belongs to the support.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Extra_TruthCountCofactorOnes( int nVars, uint8 * puTruthCofs[][32], int * pCounts ) -{ - int v, nBytes; - nBytes = Extra_BitCharNum( nVars ); - for ( v = 0; v < nVars; v++ ) - pCounts[v] = Extra_CountOnes( puTruthCofs[v], nBytes ); -} - -/**Function************************************************************* - - Synopsis [Checks if the variable belongs to the support.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Extra_TruthHasVar( int nVars, uint8 * puTruth, int iVar ) -{ - // elementary truth tables - static uint8 Signs[3] = { - 0xAA, // 1010 1010 - 0xCC, // 1100 1100 - 0xF0 // 1111 0000 - }; - int nChars, nShift, i; - assert( iVar < nVars ); - nChars = Extra_BitCharNum( nVars ); - if ( iVar < 3 ) - { - nShift = (1 << iVar); - for ( i = 0; i < nChars; i++ ) - if ( ((puTruth[i] & Signs[iVar]) >> nShift) != (puTruth[i] & ~Signs[iVar]) ) - return 1; - } - else - { - nShift = (1 << (iVar-3)); - for ( i = 0; i < nChars; i++, i = (i % nShift)? i : i + nShift ) - if ( puTruth[i] != puTruth[i+nShift] ) - return 1; - } - return 0; -} - -/**Function************************************************************* - - Synopsis [Checks if the variable belongs to the support.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Npn_VarsTest( int nVars, uint8 * puTruth ) -{ - int v; - int Counter = 0; - for ( v = 0; v < nVars; v++ ) - Counter += Extra_TruthHasVar( nVars, puTruth, v ); - return Counter; -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - diff --git a/src/misc/npn/npnUtil.c b/src/misc/npn/npnUtil.c deleted file mode 100644 index b12ad092..00000000 --- a/src/misc/npn/npnUtil.c +++ /dev/null @@ -1,78 +0,0 @@ -/**CFile**************************************************************** - - FileName [npnUtil.c] - - SystemName [ABC: Logic synthesis and verification system.] - - PackageName [] - - Synopsis [] - - Author [Alan Mishchenko] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - June 20, 2005.] - - Revision [$Id: npnUtil.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $] - -***********************************************************************/ - -#include "extra.h" -#include "npn.h" -#include "vec.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -void Npn_StartTruth8( uint8 uTruths[][32] ) -{ - // elementary truth tables - static uint8 Signs[3] = { - 0xAA, // 1010 1010 - 0xCC, // 1100 1100 - 0xF0 // 1111 0000 - }; - int v, i, nShift; - for ( v = 0; v < 3; v++ ) - for ( i = 0; i < 32; i++ ) - uTruths[v][i] = Signs[v]; - for ( v = 3; v < 8; v++ ) - { - nShift = (1 << (v-3)); - for ( i = 0; i < 32; i++, i = (i % nShift)? i : i + nShift ) - { - uTruths[v][i] = 0; - uTruths[v][i + nShift] = 0xFF; - } - } -/* - for ( v = 0; v < 8; v++ ) - { - Extra_PrintBinary( stdout, (unsigned int*)uTruths[v], 90 ); - printf( "\n" ); - } -*/ -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - |