summaryrefslogtreecommitdiffstats
path: root/src/base/abci/abcGen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/abci/abcGen.c')
-rw-r--r--src/base/abci/abcGen.c50
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 ///