Bug fix in %blast.

This commit is contained in:
Alan Mishchenko 2026-04-06 20:42:44 -07:00
parent ca2a410095
commit 80c8a9a192
1 changed files with 14 additions and 17 deletions

View File

@ -1856,29 +1856,26 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Wlc_BstPar_t * pParIn )
Wlc_Obj_t * pFanin = Wlc_ObjFanin0(p, pObj); Wlc_Obj_t * pFanin = Wlc_ObjFanin0(p, pObj);
int End = Wlc_ObjRangeEnd(pObj); int End = Wlc_ObjRangeEnd(pObj);
int Beg = Wlc_ObjRangeBeg(pObj); int Beg = Wlc_ObjRangeBeg(pObj);
if ( End >= Beg ) int Low = Abc_MinInt( End, Beg );
int High = Abc_MaxInt( End, Beg );
assert( nRange == High - Low + 1 );
if ( pFanin->End >= pFanin->Beg )
{ {
if ( pFanin->End >= pFanin->Beg ) assert( pFanin->Beg <= Low && High <= pFanin->End );
for ( k = 0; k < nRange; k++ )
{ {
assert( nRange == End - Beg + 1 ); int Label = End >= Beg ? Beg + k : Beg - k;
assert( pFanin->Beg <= Beg && End <= pFanin->End ); Vec_IntPush( vRes, pFans0[Label - pFanin->Beg] );
for ( k = Beg; k <= End; k++ )
Vec_IntPush( vRes, pFans0[k - pFanin->Beg] );
}
else
{
assert( nRange == End - Beg + 1 );
assert( pFanin->End <= Beg && End <= pFanin->Beg );
for ( k = Beg; k <= End; k++ )
Vec_IntPush( vRes, pFans0[k - pFanin->End] );
} }
} }
else else
{ {
assert( nRange == Beg - End + 1 ); assert( pFanin->End <= Low && High <= pFanin->Beg );
assert( pFanin->End <= End && Beg <= pFanin->Beg ); for ( k = 0; k < nRange; k++ )
for ( k = End; k <= Beg; k++ ) {
Vec_IntPush( vRes, pFans0[k - pFanin->End] ); int Label = End >= Beg ? Beg + k : Beg - k;
Vec_IntPush( vRes, pFans0[pFanin->Beg - Label] );
}
} }
} }
else if ( pObj->Type == WLC_OBJ_BIT_CONCAT ) else if ( pObj->Type == WLC_OBJ_BIT_CONCAT )