diff options
Diffstat (limited to 'src/base/abci/abcGen.c')
-rw-r--r-- | src/base/abci/abcGen.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/base/abci/abcGen.c b/src/base/abci/abcGen.c index e40c21d6..f6111dfd 100644 --- a/src/base/abci/abcGen.c +++ b/src/base/abci/abcGen.c @@ -599,6 +599,56 @@ void Abc_GenOneHotIntervals( char * pFileName, int nPis, int nRegs, Vec_Ptr_t * fclose( pFile ); } +#include "aig.h" + +/**Function************************************************************* + + Synopsis [Generates structure of L K-LUTs implementing an N-var function.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Abc_GenRandom( char * pFileName, int nPis ) +{ + FILE * pFile; + unsigned * pTruth; + int i, b, w, nWords = Aig_TruthWordNum( nPis ); + int nDigitsIn; + Aig_ManRandom( 1 ); + pTruth = ABC_ALLOC( unsigned, nWords ); + for ( w = 0; w < nWords; w++ ) + pTruth[w] = Aig_ManRandom( 0 ); + pFile = fopen( pFileName, "w" ); + fprintf( pFile, "# Random function with %d inputs generated by ABC on %s\n", nPis, Extra_TimeStamp() ); + fprintf( pFile, ".model rand%d\n", nPis ); + fprintf( pFile, ".inputs" ); + nDigitsIn = Extra_Base10Log( nPis ); + for ( i = 0; i < nPis; i++ ) + fprintf( pFile, " i%0*d", nDigitsIn, i ); + fprintf( pFile, "\n" ); + fprintf( pFile, ".outputs f\n" ); + fprintf( pFile, ".names" ); + nDigitsIn = Extra_Base10Log( nPis ); + for ( i = 0; i < nPis; i++ ) + fprintf( pFile, " i%0*d", nDigitsIn, i ); + fprintf( pFile, " f\n" ); + for ( i = 0; i < (1<<nPis); i++ ) + if ( Aig_InfoHasBit(pTruth, i) ) + { + for ( b = nPis-1; b >= 0; b-- ) + fprintf( pFile, "%d", (i>>b)&1 ); + fprintf( pFile, " 1\n" ); + } + fprintf( pFile, ".end\n" ); + fprintf( pFile, "\n" ); + fclose( pFile ); + ABC_FREE( pTruth ); +} + //////////////////////////////////////////////////////////////////////// /// END OF FILE /// |