diff options
Diffstat (limited to 'src/base/pla/plaMan.c')
-rw-r--r-- | src/base/pla/plaMan.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/base/pla/plaMan.c b/src/base/pla/plaMan.c index 23ea8368..c396a264 100644 --- a/src/base/pla/plaMan.c +++ b/src/base/pla/plaMan.c @@ -32,6 +32,47 @@ ABC_NAMESPACE_IMPL_START /**Function************************************************************* + Synopsis [Generates PLA description of a sorter.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Pla_GenSorter( int nVars ) +{ + int i, k, Count, nMints = ( 1 << nVars ); + char Buffer[20]; + FILE * pFile; + sprintf( Buffer, "sorter%02d.pla", nVars ); + pFile = fopen( Buffer, "wb" ); + fprintf( pFile, "# This file was generated by ABC on %s.\n", Extra_TimeStamp() ); + fprintf( pFile, ".i %d\n", nVars ); + fprintf( pFile, ".o %d\n", nVars ); + fprintf( pFile, ".p %d\n", nMints-1 ); + for ( i = 1; i < nMints; i++ ) + { + Count = 0; + for ( k = nVars-1; k >= 0; k-- ) + { + Count += ((i >> k) & 1); + fprintf( pFile, "%d", (i >> k) & 1 ); + } + fprintf( pFile, " " ); + for ( k = 0; k < Count; k++ ) + fprintf( pFile, "1" ); + for ( ; k < nVars; k++ ) + fprintf( pFile, "0" ); + fprintf( pFile, "\n" ); + } + fprintf( pFile, ".end\n" ); + fclose( pFile ); +} + +/**Function************************************************************* + Synopsis [Generates prime detector for the given bit-widths.] Description [] |