From ea7d10d45da5f6c60ddd4a250ecd93991d31426b Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 12 May 2016 13:59:30 -0700 Subject: Adding 'read_pla -d' to read dc-set along with on-set (useful to derive offset). --- src/base/io/io.c | 14 +++++++++----- src/base/io/ioAbc.h | 2 +- src/base/io/ioReadPla.c | 27 +++++++++++++++++++-------- src/base/io/ioUtil.c | 2 +- 4 files changed, 30 insertions(+), 15 deletions(-) (limited to 'src/base') diff --git a/src/base/io/io.c b/src/base/io/io.c index ad6c76ba..e0e524fd 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, fSkipPrepro = 0, fCheck = 1; + int c, fZeros = 0, fBoth = 0, fOnDc = 0, fSkipPrepro = 0, fCheck = 1; Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "zbxch" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "zbdxch" ) ) != EOF ) { switch ( c ) { @@ -916,6 +916,9 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'b': fBoth ^= 1; break; + case 'd': + fOnDc ^= 1; + break; case 'x': fSkipPrepro ^= 1; break; @@ -933,10 +936,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 || fSkipPrepro ) + if ( fZeros || fBoth || fOnDc || fSkipPrepro ) { Abc_Ntk_t * pTemp; - pNtk = Io_ReadPla( pFileName, fZeros, fBoth, fSkipPrepro, fCheck ); + pNtk = Io_ReadPla( pFileName, fZeros, fBoth, fOnDc, fSkipPrepro, fCheck ); if ( pNtk == NULL ) { printf( "Reading PLA file has failed.\n" ); @@ -955,10 +958,11 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - fprintf( pAbc->Err, "usage: read_pla [-zbxch] \n" ); + fprintf( pAbc->Err, "usage: read_pla [-zbdxch] \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-d : toggle reading both on-set and dc-set as on-set [default = %s]\n", fOnDc? "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" ); diff --git a/src/base/io/ioAbc.h b/src/base/io/ioAbc.h index a1239558..ea4ad2c3 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 fSkipPrepro, int fCheck ); +extern Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fOnDc, 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 2c261dc3..909ff871 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, int fSkipPrepro ); +static Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fOnDc, 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 fSkipPrepro, int fCheck ) +Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fOnDc, 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 fSkipPrepro return NULL; // read the network - pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth, fSkipPrepro ); + pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth, fOnDc, 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 fSkipPrepro SeeAlso [] ***********************************************************************/ -Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fSkipPrepro ) +Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, int fOnDc, int fSkipPrepro ) { ProgressBar * pProgress; Vec_Ptr_t * vTokens; @@ -514,7 +514,18 @@ Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, in ABC_FREE( ppSops ); return NULL; } - if ( fBoth ) + if ( fZeros ) + { + for ( i = 0; i < nOutputs; i++ ) + { + if ( pCubeOut[i] == '0' ) + { + Vec_StrPrintStr( ppSops[i], pCubeIn ); + Vec_StrPrintStr( ppSops[i], " 1\n" ); + } + } + } + else if ( fBoth ) { for ( i = 0; i < nOutputs; i++ ) { @@ -525,18 +536,18 @@ Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth, in } } } - else if ( fZeros ) + else if ( fOnDc ) { for ( i = 0; i < nOutputs; i++ ) { - if ( pCubeOut[i] == '0' ) + if ( pCubeOut[i] == '-' || pCubeOut[i] == '1' ) { Vec_StrPrintStr( ppSops[i], pCubeIn ); Vec_StrPrintStr( ppSops[i], " 1\n" ); } } } - else + else { for ( i = 0; i < nOutputs; i++ ) { diff --git a/src/base/io/ioUtil.c b/src/base/io/ioUtil.c index 7e8ece6e..088ae858 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, 0, fCheck ); + pNtk = Io_ReadPla( pFileName, 0, 0, 0, 0, fCheck ); else if ( FileType == IO_FILE_VERILOG ) pNtk = Io_ReadVerilog( pFileName, fCheck ); else -- cgit v1.2.3