From 3f6c08dfc62e4dee007b97c84560432f475b594a Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Tue, 23 Sep 2014 12:54:57 -0400 Subject: Debugging the bit-blaster. --- src/base/cmd/cmdHist.c | 2 +- src/base/wlc/wlcBlast.c | 34 +++++++++++++++++++++++++++------- 2 files changed, 28 insertions(+), 8 deletions(-) (limited to 'src/base') diff --git a/src/base/cmd/cmdHist.c b/src/base/cmd/cmdHist.c index 8275bc2e..f1b29330 100644 --- a/src/base/cmd/cmdHist.c +++ b/src/base/cmd/cmdHist.c @@ -61,7 +61,7 @@ void Cmd_HistoryAddCommand( Abc_Frame_t * p, const char * command ) strncmp(Buffer,"set",3) && strncmp(Buffer,"time",4) && strncmp(Buffer,"quit",4) && - strncmp(Buffer,"source",6) && +// strncmp(Buffer,"source",6) && strncmp(Buffer,"history",7) && strncmp(Buffer,"hi ", 3) && strcmp(Buffer,"hi") && Buffer[strlen(Buffer)-1] != '?' ) { diff --git a/src/base/wlc/wlcBlast.c b/src/base/wlc/wlcBlast.c index 46947c55..b4460d62 100644 --- a/src/base/wlc/wlcBlast.c +++ b/src/base/wlc/wlcBlast.c @@ -87,6 +87,7 @@ void Wlc_BlastShiftRight( Gia_Man_t * pNew, int * pNum, int nNum, int * pShift, int * pRes = Wlc_VecCopy( vRes, pNum, nNum ); int Fill = fSticky ? pNum[nNum-1] : 0; int i, j, fShort = 0; + assert( nShift <= 32 ); for( i = 0; i < nShift; i++ ) for( j = 0; j < nNum - fSticky; j++ ) { @@ -105,6 +106,7 @@ void Wlc_BlastShiftLeft( Gia_Man_t * pNew, int * pNum, int nNum, int * pShift, i int * pRes = Wlc_VecCopy( vRes, pNum, nNum ); int Fill = fSticky ? pNum[0] : 0; int i, j, fShort = 0; + assert( nShift <= 32 ); for( i = 0; i < nShift; i++ ) for( j = nNum-1; j >= fSticky; j-- ) { @@ -120,18 +122,22 @@ void Wlc_BlastShiftLeft( Gia_Man_t * pNew, int * pNum, int nNum, int * pShift, i } void Wlc_BlastRotateRight( Gia_Man_t * pNew, int * pNum, int nNum, int * pShift, int nShift, Vec_Int_t * vRes ) { + int * pRes = Wlc_VecCopy( vRes, pNum, nNum ); int i, j, * pTemp = ABC_ALLOC( int, nNum ); - for( i = 0; i < nShift; i++, Wlc_VecCopy(vRes, pTemp, nNum) ) + assert( nShift <= 32 ); + for( i = 0; i < nShift; i++, pRes = Wlc_VecCopy(vRes, pTemp, nNum) ) for( j = 0; j < nNum; j++ ) - pTemp[j] = Gia_ManHashMux( pNew, pShift[i], pNum[(j+(1<Type == WLC_OBJ_REDUCT_AND || pObj->Type == WLC_OBJ_REDUCT_OR || pObj->Type == WLC_OBJ_REDUCT_XOR ) Vec_IntPush( vRes, Wlc_BlastReduction( pNew, pFans0, nRange, pObj->Type ) ); - else if ( pObj->Type == WLC_OBJ_ARI_ADD || pObj->Type == WLC_OBJ_ARI_SUB ) // SUBTRACT is not implemented! + else if ( pObj->Type == WLC_OBJ_ARI_ADD || pObj->Type == WLC_OBJ_ARI_SUB ) { int * pArg0 = Wlc_VecLoadFanins( vRes, pFans0, nRange0, nRange, Wlc_ObjFanin0(p, pObj)->Signed ); int * pArg1 = Wlc_VecLoadFanins( vTemp1, pFans1, nRange1, nRange, Wlc_ObjFanin1(p, pObj)->Signed ); - Wlc_BlastAdder( pNew, pArg0, pArg1, nRange ); // result is in pFan0 (vRes) + if ( pObj->Type == WLC_OBJ_ARI_ADD ) + Wlc_BlastAdder( pNew, pArg0, pArg1, nRange ); // result is in pFan0 (vRes) + else + Wlc_BlastSubtract( pNew, pArg0, pArg1, nRange ); // result is in pFan0 (vRes) } else if ( pObj->Type == WLC_OBJ_ARI_MULTI ) { @@ -485,7 +505,7 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p ) int * pArg0 = Wlc_VecLoadFanins( vTemp0, pFans0, nRange0, nRange, Wlc_ObjFanin0(p, pObj)->Signed ); int * pArg1 = Wlc_VecLoadFanins( vTemp1, pFans1, nRange1, nRange, Wlc_ObjFanin1(p, pObj)->Signed ); assert( nRange0 <= nRange && nRange1 <= nRange ); - Wlc_BlastDivider( pNew, pArg0, nRange0, pArg1, nRange1, pObj->Type == WLC_OBJ_ARI_DIVIDE, vRes ); + Wlc_BlastDivider( pNew, pArg0, nRange, pArg1, nRange, pObj->Type == WLC_OBJ_ARI_DIVIDE, vRes ); } else if ( pObj->Type == WLC_OBJ_ARI_MINUS ) { -- cgit v1.2.3