From fb5d4a664dc3790e98036a94734a33a848fd3666 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Wed, 18 Mar 2015 10:18:46 +0700 Subject: Adding switch '-b' in 'read_pla'. --- src/base/abci/abc.c | 2 +- src/base/io/io.c | 18 +++++++++--------- src/base/io/ioAbc.h | 2 +- src/base/io/ioReadPla.c | 25 ++++++++++++++++++++----- src/base/io/ioUtil.c | 2 +- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 1a9cf263..a9124d3d 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -25897,7 +25897,7 @@ int Abc_CommandAbc9Get( Abc_Frame_t * pAbc, int argc, char ** argv ) Vec_FltFreeP( &pGia->vInArrs ); Vec_FltFreeP( &pGia->vOutReqs ); pGia->vInArrs = Vec_FltAllocArray( Abc_NtkGetCiArrivalFloats(pNtk), Abc_NtkCiNum(pNtk) ); - pGia->vOutReqs = Vec_FltAllocArray( Abc_NtkGetCiArrivalFloats(pNtk), Abc_NtkCoNum(pNtk) ); + pGia->vOutReqs = Vec_FltAllocArray( Abc_NtkGetCoRequiredFloats(pNtk), Abc_NtkCoNum(pNtk) ); } Abc_FrameUpdateGia( pAbc, pGia ); return 0; diff --git a/src/base/io/io.c b/src/base/io/io.c index 41b08e68..83ffaf53 100644 --- a/src/base/io/io.c +++ b/src/base/io/io.c @@ -903,20 +903,19 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) { Abc_Ntk_t * pNtk; char * pFileName; - int fCheck; - int fZeros; - int c; + int c, fZeros = 0, fBoth = 0, fCheck = 1; - fZeros = 0; - fCheck = 1; Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "zch" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "zbch" ) ) != EOF ) { switch ( c ) { case 'z': fZeros ^= 1; break; + case 'b': + fBoth ^= 1; + break; case 'c': fCheck ^= 1; break; @@ -931,10 +930,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 ) + if ( fZeros || fBoth ) { Abc_Ntk_t * pTemp; - pNtk = Io_ReadPla( pFileName, fZeros, fCheck ); + pNtk = Io_ReadPla( pFileName, fZeros, fBoth, fCheck ); if ( pNtk == NULL ) { printf( "Reading PLA file has failed.\n" ); @@ -953,9 +952,10 @@ int IoCommandReadPla( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - fprintf( pAbc->Err, "usage: read_pla [-zch] \n" ); + fprintf( pAbc->Err, "usage: read_pla [-zbch] \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-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 39eec63d..aa532ec5 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 fCheck ); +extern Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, 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 79133dc1..36302dcb 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 ); +static Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth ); //////////////////////////////////////////////////////////////////////// /// 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 fCheck ) +Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fBoth, int fCheck ) { Extra_FileReader_t * p; Abc_Ntk_t * pNtk; @@ -338,7 +338,7 @@ Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fCheck ) return NULL; // read the network - pNtk = Io_ReadPlaNetwork( p, fZeros ); + pNtk = Io_ReadPlaNetwork( p, fZeros, fBoth ); Extra_FileReaderFree( p ); if ( pNtk == NULL ) return NULL; @@ -363,7 +363,7 @@ Abc_Ntk_t * Io_ReadPla( char * pFileName, int fZeros, int fCheck ) SeeAlso [] ***********************************************************************/ -Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros ) +Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros, int fBoth ) { ProgressBar * pProgress; Vec_Ptr_t * vTokens; @@ -390,6 +390,10 @@ Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros ) if ( strncmp( (char *)vTokens->pArray[0], ".e", 2 ) == 0 ) break; + // if it is type directive, ignore it for now + if ( strncmp( (char *)vTokens->pArray[0], ".type", 5 ) == 0 ) + continue; + // if it is the model name, get the name if ( strcmp( (char *)vTokens->pArray[0], ".model" ) == 0 ) { @@ -510,7 +514,18 @@ Abc_Ntk_t * Io_ReadPlaNetwork( Extra_FileReader_t * p, int fZeros ) ABC_FREE( ppSops ); return NULL; } - if ( fZeros ) + if ( fBoth ) + { + for ( i = 0; i < nOutputs; i++ ) + { + if ( pCubeOut[i] == '0' || pCubeOut[i] == '1' ) + { + Vec_StrPrintStr( ppSops[i], pCubeIn ); + Vec_StrPrintStr( ppSops[i], " 1\n" ); + } + } + } + else if ( fZeros ) { for ( i = 0; i < nOutputs; i++ ) { diff --git a/src/base/io/ioUtil.c b/src/base/io/ioUtil.c index 65705dfe..2432079f 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, fCheck ); + pNtk = Io_ReadPla( pFileName, 0, 0, fCheck ); else if ( FileType == IO_FILE_VERILOG ) pNtk = Io_ReadVerilog( pFileName, fCheck ); else -- cgit v1.2.3