diff options
Diffstat (limited to 'src/misc')
-rw-r--r-- | src/misc/util/utilTruth.h | 2 | ||||
-rw-r--r-- | src/misc/vec/vecMem.h | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/misc/util/utilTruth.h b/src/misc/util/utilTruth.h index c6937b40..0faf8330 100644 --- a/src/misc/util/utilTruth.h +++ b/src/misc/util/utilTruth.h @@ -1156,7 +1156,7 @@ static inline int Abc_TtMinBase( word * pTruth, int * pVars, int nVars, int nVar continue; if ( k < i ) { - pVars[k] = pVars[i]; + if ( pVars ) pVars[k] = pVars[i]; Abc_TtSwapVars( pTruth, nVarsAll, k, i ); } k++; diff --git a/src/misc/vec/vecMem.h b/src/misc/vec/vecMem.h index cba76a59..3f1b4517 100644 --- a/src/misc/vec/vecMem.h +++ b/src/misc/vec/vecMem.h @@ -310,6 +310,8 @@ static inline void Vec_MemHashAlloc( Vec_Mem_t * p, int nTableSize ) } static inline void Vec_MemHashFree( Vec_Mem_t * p ) { + if ( p == NULL ) + return; Vec_IntFreeP( &p->vTable ); Vec_IntFreeP( &p->vNexts ); } @@ -362,6 +364,43 @@ static int Vec_MemHashInsert( Vec_Mem_t * p, word * pEntry ) } +/**Function************************************************************* + + Synopsis [Allocates memory vector for storing truth tables.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +static inline Vec_Mem_t * Vec_MemAllocForTT( int nVars ) +{ + int Value, nWords = (nVars <= 6 ? 1 : (1 << (nVars - 6))); + word * uTruth = ABC_ALLOC( word, nWords ); + Vec_Mem_t * vTtMem = Vec_MemAlloc( nWords, 12 ); + Vec_MemHashAlloc( vTtMem, 10000 ); + memset( uTruth, 0x00, sizeof(word) * nWords ); + Value = Vec_MemHashInsert( vTtMem, uTruth ); assert( Value == 0 ); + memset( uTruth, 0xAA, sizeof(word) * nWords ); + Value = Vec_MemHashInsert( vTtMem, uTruth ); assert( Value == 1 ); + ABC_FREE( uTruth ); + return vTtMem; +} +static inline void Vec_MemDumpTruthTables( Vec_Mem_t * p, char * pName, int nLutSize ) +{ + FILE * pFile; + char pFileName[1000]; + sprintf( pFileName, "tt_%s_%02d.txt", pName, nLutSize ); + pFile = fopen( pFileName, "wb" ); + Vec_MemDump( pFile, p ); + fclose( pFile ); + printf( "Dumped %d %d-var truth tables into file \"%s\" (%.2f MB).\n", + Vec_MemEntryNum(p), nLutSize, pFileName, + 8.0 * Vec_MemEntryNum(p) * Vec_MemEntrySize(p) / (1 << 20) ); +} + ABC_NAMESPACE_HEADER_END #endif |