summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2018-02-07 09:02:28 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2018-02-07 09:02:28 -0800
commitc6bce9c20e07587de48b157ed676d175ca8c1b31 (patch)
treee68ae136be8a9cdb1777167c0fea055e5e57380f
parente839091ba05083f166356f5455cea7ba3adad8d6 (diff)
downloadabc-c6bce9c20e07587de48b157ed676d175ca8c1b31.tar.gz
abc-c6bce9c20e07587de48b157ed676d175ca8c1b31.tar.bz2
abc-c6bce9c20e07587de48b157ed676d175ca8c1b31.zip
Fixing input swapping issue in MUXes derived from NDR.
-rw-r--r--src/base/wlc/wlc.h2
-rw-r--r--src/base/wlc/wlcNdr.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/base/wlc/wlc.h b/src/base/wlc/wlc.h
index 61a71b65..55e85330 100644
--- a/src/base/wlc/wlc.h
+++ b/src/base/wlc/wlc.h
@@ -331,6 +331,8 @@ extern void Wlc_SetNtk( Abc_Frame_t * pAbc, Wlc_Ntk_t * pNtk );
/*=== wlcNdr.c ========================================================*/
extern Wlc_Ntk_t * Wlc_ReadNdr( char * pFileName );
extern void Wlc_WriteNdr( Wlc_Ntk_t * pNtk, char * pFileName );
+extern Wlc_Ntk_t * Wlc_NtkFromNdr( void * pData );
+extern void * Wlc_NtkToNdr( Wlc_Ntk_t * pNtk );
/*=== wlcNtk.c ========================================================*/
extern void Wlc_ManSetDefaultParams( Wlc_Par_t * pPars );
extern char * Wlc_ObjTypeName( Wlc_Obj_t * p );
diff --git a/src/base/wlc/wlcNdr.c b/src/base/wlc/wlcNdr.c
index e0a00a56..7caa4656 100644
--- a/src/base/wlc/wlcNdr.c
+++ b/src/base/wlc/wlcNdr.c
@@ -332,6 +332,8 @@ Wlc_Ntk_t * Wlc_NtkFromNdr( void * pData )
Vec_IntPushTwo( vFanins, End, Beg );
else if ( Type == ABC_OPER_CONST )
Ndr_ObjReadConstant( vFanins, (char *)Ndr_ObjReadBodyP(p, Obj, NDR_FUNCTION) );
+ else if ( Type == ABC_OPER_BIT_MUX && Vec_IntSize(vFanins) == 3 )
+ ABC_SWAP( int, Vec_IntEntryP(vFanins, 1)[0], Vec_IntEntryP(vFanins, 2)[0] );
Wlc_ObjAddFanins( pNtk, Wlc_NtkObj(pNtk, iObj), vFanins );
Wlc_ObjSetNameId( pNtk, iObj, NameId );
}