summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/aig/gia/gia.h2
-rw-r--r--src/aig/gia/giaMini.c26
-rw-r--r--src/base/abci/abc.c2
-rw-r--r--src/misc/util/utilNam.c39
-rw-r--r--src/misc/util/utilNam.h2
5 files changed, 58 insertions, 13 deletions
diff --git a/src/aig/gia/gia.h b/src/aig/gia/gia.h
index 9e215454..42eb71d5 100644
--- a/src/aig/gia/gia.h
+++ b/src/aig/gia/gia.h
@@ -1527,7 +1527,7 @@ extern void Mf_ManSetDefaultPars( Jf_Par_t * pPars );
extern Gia_Man_t * Mf_ManPerformMapping( Gia_Man_t * pGia, Jf_Par_t * pPars );
extern void * Mf_ManGenerateCnf( Gia_Man_t * pGia, int nLutSize, int fCnfObjIds, int fAddOrCla, int fMapping, int fVerbose );
/*=== giaMini.c ===========================================================*/
-extern Gia_Man_t * Gia_ManReadMiniAig( char * pFileName );
+extern Gia_Man_t * Gia_ManReadMiniAig( char * pFileName, int fGiaSimple );
extern void Gia_ManWriteMiniAig( Gia_Man_t * pGia, char * pFileName );
extern Gia_Man_t * Gia_ManReadMiniLut( char * pFileName );
extern void Gia_ManWriteMiniLut( Gia_Man_t * pGia, char * pFileName );
diff --git a/src/aig/gia/giaMini.c b/src/aig/gia/giaMini.c
index df0d6533..ad7ed197 100644
--- a/src/aig/gia/giaMini.c
+++ b/src/aig/gia/giaMini.c
@@ -59,7 +59,7 @@ int Gia_ObjFromMiniFanin1Copy( Gia_Man_t * pGia, Vec_Int_t * vCopies, Mini_Aig_t
int Lit = Mini_AigNodeFanin1( p, Id );
return Abc_LitNotCond( Vec_IntEntry(vCopies, Abc_Lit2Var(Lit)), Abc_LitIsCompl(Lit) );
}
-Gia_Man_t * Gia_ManFromMiniAig( Mini_Aig_t * p, Vec_Int_t ** pvCopies )
+Gia_Man_t * Gia_ManFromMiniAig( Mini_Aig_t * p, Vec_Int_t ** pvCopies, int fGiaSimple )
{
Gia_Man_t * pGia, * pTemp;
Vec_Int_t * vCopies;
@@ -73,7 +73,10 @@ Gia_Man_t * Gia_ManFromMiniAig( Mini_Aig_t * p, Vec_Int_t ** pvCopies )
vCopies = Vec_IntAlloc( nNodes );
Vec_IntPush( vCopies, 0 );
// iterate through the objects
- Gia_ManHashAlloc( pGia );
+ if ( fGiaSimple )
+ pGia->fGiaSimple = fGiaSimple;
+ else
+ Gia_ManHashAlloc( pGia );
for ( i = 1; i < nNodes; i++ )
{
if ( Mini_AigNodeIsPi( p, i ) )
@@ -85,17 +88,19 @@ Gia_Man_t * Gia_ManFromMiniAig( Mini_Aig_t * p, Vec_Int_t ** pvCopies )
else assert( 0 );
Vec_IntPush( vCopies, iGiaLit );
}
- Gia_ManHashStop( pGia );
assert( Vec_IntSize(vCopies) == nNodes );
if ( pvCopies )
*pvCopies = vCopies;
else
Vec_IntFree( vCopies );
Gia_ManSetRegNum( pGia, Mini_AigRegNum(p) );
- pGia = Gia_ManCleanup( pTemp = pGia );
- if ( pvCopies )
- Gia_ManDupRemapLiterals( *pvCopies, pTemp );
- Gia_ManStop( pTemp );
+ if ( !fGiaSimple )
+ {
+ pGia = Gia_ManCleanup( pTemp = pGia );
+ if ( pvCopies )
+ Gia_ManDupRemapLiterals( *pvCopies, pTemp );
+ Gia_ManStop( pTemp );
+ }
return pGia;
}
@@ -150,7 +155,7 @@ void Abc_FrameGiaInputMiniAig( Abc_Frame_t * pAbc, void * p )
printf( "ABC framework is not initialized by calling Abc_Start()\n" );
Gia_ManStopP( &pAbc->pGiaMiniAig );
Vec_IntFreeP( &pAbc->vCopyMiniAig );
- pGia = Gia_ManFromMiniAig( (Mini_Aig_t *)p, &pAbc->vCopyMiniAig );
+ pGia = Gia_ManFromMiniAig( (Mini_Aig_t *)p, &pAbc->vCopyMiniAig, 0 );
Abc_FrameUpdateGia( pAbc, pGia );
pAbc->pGiaMiniAig = Gia_ManDup( pGia );
// Gia_ManDelete( pGia );
@@ -177,10 +182,10 @@ void * Abc_FrameGiaOutputMiniAig( Abc_Frame_t * pAbc )
SeeAlso []
***********************************************************************/
-Gia_Man_t * Gia_ManReadMiniAig( char * pFileName )
+Gia_Man_t * Gia_ManReadMiniAig( char * pFileName, int fGiaSimple )
{
Mini_Aig_t * p = Mini_AigLoad( pFileName );
- Gia_Man_t * pGia = Gia_ManFromMiniAig( p, NULL );
+ Gia_Man_t * pGia = Gia_ManFromMiniAig( p, NULL, fGiaSimple );
ABC_FREE( pGia->pName );
pGia->pName = Extra_FileNameGeneric( pFileName );
Mini_AigStop( p );
@@ -281,7 +286,6 @@ Gia_Man_t * Gia_ManFromMiniLut2( Mini_Lut_t * p, Vec_Int_t ** pvCopies )
Vec_Int_t * vCover = Vec_IntAlloc( 1000 );
Vec_Int_t * vLits = Vec_IntAlloc( 100 );
int i, k, Fan, iGiaLit, nNodes;
- int LutSize = Abc_MaxInt( 2, Mini_LutSize(p) );
// get the number of nodes
nNodes = Mini_LutNodeNum(p);
// create ABC network
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 9853dced..009843ff 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -30176,7 +30176,7 @@ int Abc_CommandAbc9Read( Abc_Frame_t * pAbc, int argc, char ** argv )
if ( fNewReader )
pAig = Gia_FileSimpleRead( FileName, fGiaSimple, NULL );
else if ( fMiniAig )
- pAig = Gia_ManReadMiniAig( FileName );
+ pAig = Gia_ManReadMiniAig( FileName, fGiaSimple || fSkipStrash );
else if ( fMiniAig2 )
pAig = Gia_MiniAigSuperDerive( FileName, fVerbose );
else if ( fMiniLut )
diff --git a/src/misc/util/utilNam.c b/src/misc/util/utilNam.c
index 30a68c63..b1d2702c 100644
--- a/src/misc/util/utilNam.c
+++ b/src/misc/util/utilNam.c
@@ -144,6 +144,45 @@ void Abc_NamPrint( Abc_Nam_t * p, char * pFileName )
/**Function*************************************************************
+ Synopsis [Writes into a file and reads from a file.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Abc_NamSave( Abc_Nam_t * p, char * pFileName )
+{
+ FILE * pFile = fopen( pFileName, "wb" ); int h, i;
+ if ( pFile == NULL ) { printf( "Count node open input file %s\n", pFileName ); return; }
+ Vec_IntForEachEntryStart( &p->vInt2Handle, h, i, 1 )
+ fprintf( pFile, "%s\n", Abc_NamHandleToStr(p, h) );
+ fclose(pFile);
+}
+Abc_Nam_t * Abc_NamLoad( char * pFileName )
+{
+ Abc_Nam_t * p;
+ int fFound, NameId, nLineSize = 1 << 20;
+ char * pBuffer = ABC_ALLOC( char, nLineSize+1 );
+ FILE * pFile = fopen( pFileName, "rb" );
+ if ( pFile == NULL ) { printf( "Count node open output file %s\n", pFileName ); return NULL; }
+ p = Abc_NamStart( 1000, 20 );
+ while ( fgets( pBuffer, nLineSize, pFile ) != NULL )
+ {
+ pBuffer[strlen(pBuffer)-1] = 0;
+ NameId = Abc_NamStrFindOrAdd( p, pBuffer, &fFound );
+ assert( !fFound );
+ }
+ assert( NameId+1 == Abc_NamObjNumMax(p) );
+ fclose( pFile );
+ ABC_FREE( pBuffer );
+ return p;
+}
+
+/**Function*************************************************************
+
Synopsis [References the manager.]
Description []
diff --git a/src/misc/util/utilNam.h b/src/misc/util/utilNam.h
index 8e054fc1..cf2d27e7 100644
--- a/src/misc/util/utilNam.h
+++ b/src/misc/util/utilNam.h
@@ -53,6 +53,8 @@ typedef struct Abc_Nam_t_ Abc_Nam_t;
extern Abc_Nam_t * Abc_NamStart( int nObjs, int nAveSize );
extern void Abc_NamStop( Abc_Nam_t * p );
extern void Abc_NamPrint( Abc_Nam_t * p, char * pFileName );
+extern void Abc_NamSave( Abc_Nam_t * p, char * pFileName );
+extern Abc_Nam_t * Abc_NamLoad( char * pFileName );
extern Abc_Nam_t * Abc_NamRef( Abc_Nam_t * p );
extern void Abc_NamDeref( Abc_Nam_t * p );
extern int Abc_NamObjNumMax( Abc_Nam_t * p );