diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2016-04-11 21:42:00 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2016-04-11 21:42:00 -0700 |
commit | 2d6a6f66547345e1f67923363c4f63125a07e242 (patch) | |
tree | c0c9b1505da6864bc697970ca3cb0c16cacd4b84 /src/base/io | |
parent | 2d1d315eceecf580011eb8f499d020eb60da1597 (diff) | |
download | abc-2d6a6f66547345e1f67923363c4f63125a07e242.tar.gz abc-2d6a6f66547345e1f67923363c4f63125a07e242.tar.bz2 abc-2d6a6f66547345e1f67923363c4f63125a07e242.zip |
Added Exorcism package, reading ESOP (read_pla -x file.esop) and deriving AIG (cubes -x; st).
Diffstat (limited to 'src/base/io')
-rw-r--r-- | src/base/io/io.c | 14 | ||||
-rw-r--r-- | src/base/io/ioAbc.h | 2 | ||||
-rw-r--r-- | src/base/io/ioReadPla.c | 11 | ||||
-rw-r--r-- | src/base/io/ioUtil.c | 2 |
4 files changed, 17 insertions, 12 deletions
diff --git a/src/base/io/io.c b/src/base/io/io.c index 83ffaf53..1abe6abf 100644 --- a/src/base/io/io.c +++ b/src/base/io/io.c @@ -903,10 +903,10 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) { Abc_Ntk_t * pNtk; char * pFileName; - int c, fZeros = 0, fBoth = 0, fCheck = 1; + int c, fZeros = 0, fBoth = 0, fSkipPrepro = 0, fCheck = 1; Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "zbch" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "zbxch" ) ) != EOF ) { switch ( c ) { @@ -916,6 +916,9 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'b': fBoth ^= 1; break; + case 'x': + fSkipPrepro ^= 1; + break; case 'c': fCheck ^= 1; break; @@ -930,10 +933,10 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) // get the input file name pFileName = argv[globalUtilOptind]; // read the file using the corresponding file reader - if ( fZeros || fBoth ) + if ( fZeros || fBoth || fSkipPrepro ) { Abc_Ntk_t * pTemp; - pNtk = Io_ReadPla( pFileName, fZeros, fBoth, fCheck ); + pNtk = Io_ReadPla( pFileName, fZeros, fBoth, fSkipPrepro, fCheck ); if ( pNtk == NULL ) { printf( "Reading PLA file has failed.\n" ); @@ -952,10 +955,11 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - fprintf( pAbc->Err, "usage: read_pla [-zbch] <file>\n" ); + fprintf( pAbc->Err, "usage: read_pla [-zbxch] <file>\n" ); fprintf( pAbc->Err, "\t reads the network in PLA\n" ); fprintf( pAbc->Err, "\t-z : toggle reading on-set and off-set [default = %s]\n", fZeros? "off-set":"on-set" ); fprintf( pAbc->Err, "\t-b : toggle reading both on-set and off-set as on-set [default = %s]\n", fBoth? "off-set":"on-set" ); + fprintf( pAbc->Err, "\t-x : toggle reading Exclusive SOP rather than SOP [default = %s]\n", fSkipPrepro? "yes":"no" ); fprintf( pAbc->Err, "\t-c : toggle network check after reading [default = %s]\n", fCheck? "yes":"no" ); fprintf( pAbc->Err, "\t-h : prints the command summary\n" ); fprintf( pAbc->Err, "\tfile : the name of a file to read\n" ); diff --git a/src/base/io/ioAbc.h b/src/base/io/ioAbc.h index aa532ec5..a1239558 100644 --- a/src/base/io/ioAbc.h +++ b/src/base/io/ioAbc.h @@ -93,7 +93,7 @@ extern Abc_Ntk_t * Io_ReadEdif( char * pFileName, int fCheck ); /*=== abcReadEqn.c ============================================================*/ extern Abc_Ntk_t * Io_ReadEqn( char * pFileName, int fCheck ); /*=== abcReadPla.c ============================================================*/ -extern Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fCheck ); +extern Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fSkipPrepro, int fCheck ); /*=== abcReadVerilog.c ========================================================*/ extern Abc_Ntk_t * Io_ReadVerilog( char * pFileName, int fCheck ); /*=== abcWriteAiger.c =========================================================*/ diff --git a/src/base/io/ioReadPla.c b/src/base/io/ioReadPla.c index ceadbebc..2c261dc3 100644 --- a/src/base/io/ioReadPla.c +++ b/src/base/io/ioReadPla.c @@ -28,7 +28,7 @@ ABC_NAMESPACE_IMPL_START /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// -static Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth ); +static Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fSkipPrepro ); //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// @@ -326,7 +326,7 @@ void Io_ReadPlaCubePreprocess( Vec_Str_t * vSop, int iCover, int fVerbose ) SeeAlso [] ***********************************************************************/ -Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fCheck ) +Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fSkipPrepro, int fCheck ) { Extra_FileReader_t * p; Abc_Ntk_t * pNtk; @@ -338,7 +338,7 @@ Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fCheck ) return NULL; // read the network - pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth ); + pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth, fSkipPrepro ); Extra_FileReaderFree( p ); if ( pNtk == NULL ) return NULL; @@ -363,7 +363,7 @@ Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fCheck ) SeeAlso [] ***********************************************************************/ -Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth ) +Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fSkipPrepro ) { ProgressBar * pProgress; Vec_Ptr_t * vTokens; @@ -567,7 +567,8 @@ Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth ) continue; } Vec_StrPush( ppSops[i], 0 ); - Io_ReadPlaCubePreprocess( ppSops[i], i, 0 ); + if ( !fSkipPrepro ) + Io_ReadPlaCubePreprocess( ppSops[i], i, 0 ); pNode->pData = Abc_SopRegister( (Mem_Flex_t *)pNtk->pManFunc, ppSops[i]->pArray ); Vec_StrFree( ppSops[i] ); } diff --git a/src/base/io/ioUtil.c b/src/base/io/ioUtil.c index 2432079f..7e8ece6e 100644 --- a/src/base/io/ioUtil.c +++ b/src/base/io/ioUtil.c @@ -144,7 +144,7 @@ Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck else if ( FileType == IO_FILE_EQN ) pNtk = Io_ReadEqn( pFileName, fCheck ); else if ( FileType == IO_FILE_PLA ) - pNtk = Io_ReadPla( pFileName, 0, 0, fCheck ); + pNtk = Io_ReadPla( pFileName, 0, 0, 0, fCheck ); else if ( FileType == IO_FILE_VERILOG ) pNtk = Io_ReadVerilog( pFileName, fCheck ); else |