summaryrefslogtreecommitdiffstats
path: root/src/aig
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2021-09-16 21:51:10 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2021-09-16 21:51:10 -0700
commit6ca31c475f7ae1605be34a0629559db2beef49d1 (patch)
tree12cb762bf42ce60f51da561abef3109bcf55cbf7 /src/aig
parent997e1a2ddceacf8eaeb32ab1d28143da095b63ce (diff)
downloadabc-6ca31c475f7ae1605be34a0629559db2beef49d1.tar.gz
abc-6ca31c475f7ae1605be34a0629559db2beef49d1.tar.bz2
abc-6ca31c475f7ae1605be34a0629559db2beef49d1.zip
Improving MiniAIG and name manager.
Diffstat (limited to 'src/aig')
-rw-r--r--src/aig/gia/gia.h2
-rw-r--r--src/aig/gia/giaMini.c26
2 files changed, 16 insertions, 12 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