summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-03-18 10:18:46 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-03-18 10:18:46 +0700
commitfb5d4a664dc3790e98036a94734a33a848fd3666 (patch)
tree29497d3dd6d38b8e0ec0fff62a7374232680f216
parent120a30c2e4d8bd0455c706a5b1664aaaf82e4c74 (diff)
downloadabc-fb5d4a664dc3790e98036a94734a33a848fd3666.tar.gz
abc-fb5d4a664dc3790e98036a94734a33a848fd3666.tar.bz2
abc-fb5d4a664dc3790e98036a94734a33a848fd3666.zip
Adding switch '-b' in 'read_pla'.
-rw-r--r--src/base/abci/abc.c2
-rw-r--r--src/base/io/io.c18
-rw-r--r--src/base/io/ioAbc.h2
-rw-r--r--src/base/io/ioReadPla.c25
-rw-r--r--src/base/io/ioUtil.c2
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] <file>\n" );
+ fprintf( pAbc->Err, "usage: read_pla [-zbch] <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-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