summaryrefslogtreecommitdiffstats
path: root/src/aig
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2022-01-21 11:09:10 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2022-01-21 11:09:10 -0800
commit79f04c66534c1a517481a2006dcbbb8e27d1688c (patch)
tree175da1084db4b1374df2e6fdeb995cd56d5ba1c1 /src/aig
parent48498af8189ef321ee876065d8947875cf711294 (diff)
downloadabc-79f04c66534c1a517481a2006dcbbb8e27d1688c.tar.gz
abc-79f04c66534c1a517481a2006dcbbb8e27d1688c.tar.bz2
abc-79f04c66534c1a517481a2006dcbbb8e27d1688c.zip
Experiments with word-level data structures.
Diffstat (limited to 'src/aig')
-rw-r--r--src/aig/gia/giaDup.c14
-rw-r--r--src/aig/gia/giaPat2.c4
-rw-r--r--src/aig/miniaig/abcOper.h4
3 files changed, 20 insertions, 2 deletions
diff --git a/src/aig/gia/giaDup.c b/src/aig/gia/giaDup.c
index da4881cd..55f8901f 100644
--- a/src/aig/gia/giaDup.c
+++ b/src/aig/gia/giaDup.c
@@ -1086,6 +1086,20 @@ Gia_Man_t * Gia_ManDupAppendNew( Gia_Man_t * pOne, Gia_Man_t * pTwo )
Gia_ManSetRegNum( pNew, Gia_ManRegNum(pOne) + Gia_ManRegNum(pTwo) );
return pNew;
}
+void Gia_ManDupRebuild( Gia_Man_t * pNew, Gia_Man_t * p, Vec_Int_t * vLits )
+{
+ Gia_Obj_t * pObj; int i;
+ assert( Vec_IntSize(vLits) == Gia_ManCiNum(p) );
+ Gia_ManConst0(p)->Value = 0;
+ Gia_ManForEachCi( p, pObj, i )
+ pObj->Value = Vec_IntEntry(vLits, i);
+ Gia_ManForEachAnd( p, pObj, i )
+ pObj->Value = Gia_ManHashAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
+ Vec_IntClear( vLits );
+ Gia_ManForEachCo( p, pObj, i )
+ Vec_IntPush( vLits, Gia_ObjFanin0Copy(pObj) );
+ assert( Vec_IntSize(vLits) == Gia_ManCoNum(p) );
+}
/**Function*************************************************************
diff --git a/src/aig/gia/giaPat2.c b/src/aig/gia/giaPat2.c
index f2cdfe79..fef4cf5a 100644
--- a/src/aig/gia/giaPat2.c
+++ b/src/aig/gia/giaPat2.c
@@ -1025,9 +1025,9 @@ Vec_Wec_t * Min_ManComputeCexes( Gia_Man_t * p, Vec_Int_t * vOuts0, int nMaxTrie
if ( fVerbose )
printf( "Used simulation for %d and SAT for %d outputs (out of %d).\n", nSimOuts, nSatOuts, nOuts );
if ( fVerbose )
- Abc_PrintTime( 1, "Simulation time ", clkSim );
+ Abc_PrintTime( 1, "Simulation time ", clkSim );
if ( fVerbose )
- Abc_PrintTime( 1, "SAT solving time", clkSat );
+ Abc_PrintTime( 1, "SAT solving time ", clkSat );
//Vec_WecPrint( vCexes, 0 );
if ( vOuts != vOuts0 )
Vec_IntFreeP( &vOuts );
diff --git a/src/aig/miniaig/abcOper.h b/src/aig/miniaig/abcOper.h
index c3d6e176..cbe2a0f3 100644
--- a/src/aig/miniaig/abcOper.h
+++ b/src/aig/miniaig/abcOper.h
@@ -226,6 +226,10 @@ static inline const char * Abc_OperName( int Type )
if ( Type == ABC_OPER_ZEROPAD ) return "zPad";
if ( Type == ABC_OPER_SIGNEXT ) return "sExt";
+ if ( Type == ABC_OPER_BIT_MUX ) return "mux";
+ if ( Type == ABC_OPER_SEL_NMUX ) return "nmux";
+ if ( Type == ABC_OPER_SEL_SEL ) return "pmux";
+
if ( Type == ABC_OPER_CONST ) return "const";
if ( Type == ABC_OPER_TABLE ) return "table";
if ( Type == ABC_OPER_LUT ) return "lut";