diff options
Diffstat (limited to 'src/opt/dau')
-rw-r--r-- | src/opt/dau/dauGia.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/opt/dau/dauGia.c b/src/opt/dau/dauGia.c index c7f5c11f..6489cd86 100644 --- a/src/opt/dau/dauGia.c +++ b/src/opt/dau/dauGia.c @@ -243,7 +243,11 @@ int Dau_DsdBalance( Gia_Man_t * pGia, int * pFans, int nFans, int fAnd ) if ( fAnd ) iFan = Gia_ManAppendAnd( pGia, iFan0, iFan1 ); else if ( pGia->pMuxes ) - iFan = Gia_ManAppendXorReal( pGia, iFan0, iFan1 ); + { + int fCompl = Abc_LitIsCompl(iFan0) ^ Abc_LitIsCompl(iFan1); + iFan = Gia_ManAppendXorReal( pGia, Abc_LitRegular(iFan0), Abc_LitRegular(iFan1) ); + iFan = Abc_LitNotCond( iFan, fCompl ); + } else iFan = Gia_ManAppendXor( pGia, iFan0, iFan1 ); } @@ -369,7 +373,7 @@ int Dau_DsdToGia_rec( Gia_Man_t * pGia, char * pStr, char ** p, int * pMatches, pObj = Gia_ManObj(pGia, Abc_Lit2Var(Res)); if ( Gia_ObjIsAnd(pObj) ) { - if ( pGia->pMuxes ) + if ( pGia->pMuxes && pGia->pHTable != NULL ) Gia_ObjSetMuxLevel( pGia, pObj ); else { |