mirror of https://github.com/YosysHQ/abc.git
Small bug fix in FXCH.
This commit is contained in:
parent
118eea8465
commit
621fbcbd4d
|
|
@ -395,7 +395,7 @@ static inline void Fxch_ManExtractDivFromCubePairs( Fxch_Man_t* pFxchMan,
|
||||||
Vec_IntForEachEntryDouble( pFxchMan->vPairs, iCube0, iCube1, i )
|
Vec_IntForEachEntryDouble( pFxchMan->vPairs, iCube0, iCube1, i )
|
||||||
{
|
{
|
||||||
int j, Lit,
|
int j, Lit,
|
||||||
RetValue,
|
RetValue,
|
||||||
fCompl = 0;
|
fCompl = 0;
|
||||||
int * pOutputID0, * pOutputID1;
|
int * pOutputID0, * pOutputID1;
|
||||||
|
|
||||||
|
|
@ -431,9 +431,9 @@ static inline void Fxch_ManExtractDivFromCubePairs( Fxch_Man_t* pFxchMan,
|
||||||
/* Update Lit -> Cube mapping */
|
/* Update Lit -> Cube mapping */
|
||||||
Vec_IntForEachEntry( pFxchMan->vDiv, Lit, j )
|
Vec_IntForEachEntry( pFxchMan->vDiv, Lit, j )
|
||||||
{
|
{
|
||||||
Vec_IntRemove( Vec_WecEntry( pFxchMan->vLits, Abc_Lit2Var( Lit ) ),
|
Vec_IntRemove( Vec_WecEntry( pFxchMan->vLits, Abc_Lit2Var( Lit ) ),
|
||||||
Vec_WecLevelId( pFxchMan->vCubes, vCube0 ) );
|
Vec_WecLevelId( pFxchMan->vCubes, vCube0 ) );
|
||||||
Vec_IntRemove( Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Abc_Lit2Var( Lit ) ) ),
|
Vec_IntRemove( Vec_WecEntry( pFxchMan->vLits, Abc_LitNot( Abc_Lit2Var( Lit ) ) ),
|
||||||
Vec_WecLevelId( pFxchMan->vCubes, vCube0 ) );
|
Vec_WecLevelId( pFxchMan->vCubes, vCube0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -447,7 +447,7 @@ static inline void Fxch_ManExtractDivFromCubePairs( Fxch_Man_t* pFxchMan,
|
||||||
/* Create new cube */
|
/* Create new cube */
|
||||||
vCube = Vec_WecPushLevel( pFxchMan->vCubes );
|
vCube = Vec_WecPushLevel( pFxchMan->vCubes );
|
||||||
Vec_IntAppend( vCube, vCube0Copy );
|
Vec_IntAppend( vCube, vCube0Copy );
|
||||||
Vec_IntPushArray( pFxchMan->vOutputID, pFxchMan->pTempOutputID, pFxchMan->nSizeOutputID );
|
Vec_IntPushArray( pFxchMan->vOutputID, pFxchMan->pTempOutputID, pFxchMan->nSizeOutputID );
|
||||||
Vec_IntPush( pFxchMan->vCubesToUpdate, Vec_WecLevelId( pFxchMan->vCubes, vCube ) );
|
Vec_IntPush( pFxchMan->vCubesToUpdate, Vec_WecLevelId( pFxchMan->vCubes, vCube ) );
|
||||||
|
|
||||||
/* Update Lit -> Cube mapping */
|
/* Update Lit -> Cube mapping */
|
||||||
|
|
@ -489,7 +489,7 @@ static inline void Fxch_ManExtractDivFromCubePairs( Fxch_Man_t* pFxchMan,
|
||||||
{
|
{
|
||||||
Vec_Int_t* vLitP = Vec_WecEntry( pFxchMan->vLits, Vec_WecSize( pFxchMan->vLits ) - 2 ),
|
Vec_Int_t* vLitP = Vec_WecEntry( pFxchMan->vLits, Vec_WecSize( pFxchMan->vLits ) - 2 ),
|
||||||
* vLitN = Vec_WecEntry( pFxchMan->vLits, Vec_WecSize( pFxchMan->vLits ) - 1 );
|
* vLitN = Vec_WecEntry( pFxchMan->vLits, Vec_WecSize( pFxchMan->vLits ) - 1 );
|
||||||
|
|
||||||
assert( vCube );
|
assert( vCube );
|
||||||
if ( Vec_IntSize( pFxchMan->vDiv ) == 2 || fCompl )
|
if ( Vec_IntSize( pFxchMan->vDiv ) == 2 || fCompl )
|
||||||
{
|
{
|
||||||
|
|
@ -514,11 +514,11 @@ static inline int Fxch_ManCreateCube( Fxch_Man_t* pFxchMan,
|
||||||
int Lit1 )
|
int Lit1 )
|
||||||
{
|
{
|
||||||
int Level,
|
int Level,
|
||||||
iVarNew,
|
iVarNew,
|
||||||
j;
|
j;
|
||||||
Vec_Int_t* vCube0,
|
Vec_Int_t* vCube0,
|
||||||
* vCube1;
|
* vCube1;
|
||||||
|
|
||||||
/* Create a new variable */
|
/* Create a new variable */
|
||||||
iVarNew = pFxchMan->nVars;
|
iVarNew = pFxchMan->nVars;
|
||||||
pFxchMan->nVars++;
|
pFxchMan->nVars++;
|
||||||
|
|
@ -526,7 +526,7 @@ static inline int Fxch_ManCreateCube( Fxch_Man_t* pFxchMan,
|
||||||
/* Clear temporary outputID vector */
|
/* Clear temporary outputID vector */
|
||||||
for ( j = 0; j < pFxchMan->nSizeOutputID; j++ )
|
for ( j = 0; j < pFxchMan->nSizeOutputID; j++ )
|
||||||
pFxchMan->pTempOutputID[j] = 0;
|
pFxchMan->pTempOutputID[j] = 0;
|
||||||
|
|
||||||
/* Create new Lit hash keys */
|
/* Create new Lit hash keys */
|
||||||
Vec_IntPush( pFxchMan->vLitHashKeys, Gia_ManRandom(0) & 0x3FFFFFF );
|
Vec_IntPush( pFxchMan->vLitHashKeys, Gia_ManRandom(0) & 0x3FFFFFF );
|
||||||
Vec_IntPush( pFxchMan->vLitHashKeys, Gia_ManRandom(0) & 0x3FFFFFF );
|
Vec_IntPush( pFxchMan->vLitHashKeys, Gia_ManRandom(0) & 0x3FFFFFF );
|
||||||
|
|
@ -657,7 +657,7 @@ void Fxch_ManUpdate( Fxch_Man_t* pFxchMan,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Fxch_ManExtractDivFromCubePairs( pFxchMan, 0 );
|
Fxch_ManExtractDivFromCubePairs( pFxchMan, 0 );
|
||||||
|
|
||||||
assert( Vec_IntSize( pFxchMan->vCubesToUpdate ) );
|
assert( Vec_IntSize( pFxchMan->vCubesToUpdate ) );
|
||||||
|
|
||||||
/* Add cost */
|
/* Add cost */
|
||||||
|
|
@ -670,7 +670,7 @@ void Fxch_ManUpdate( Fxch_Man_t* pFxchMan,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Deal with SCC */
|
/* Deal with SCC */
|
||||||
if ( Vec_IntSize( pFxchMan->vSCC ) && pFxchMan->nExtDivs < 17 )
|
if ( Vec_IntSize( pFxchMan->vSCC ) )
|
||||||
{
|
{
|
||||||
Vec_IntUniqifyPairs( pFxchMan->vSCC );
|
Vec_IntUniqifyPairs( pFxchMan->vSCC );
|
||||||
assert( Vec_IntSize( pFxchMan->vSCC ) % 2 == 0 );
|
assert( Vec_IntSize( pFxchMan->vSCC ) % 2 == 0 );
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue