mirror of https://github.com/YosysHQ/abc.git
Adding a new feature to decompose special 6-input cuts.
This commit is contained in:
parent
feb3e7943d
commit
f9309ce949
|
|
@ -1091,6 +1091,34 @@ int Gia_ManFromIfLogicNode( void * pIfMan, Gia_Man_t * pNew, int iObj, Vec_Int_t
|
|||
}
|
||||
return Gia_ManFromIfLogicCreateLutSpecial( pNew, pRes, vLeaves, vLeavesTemp, vCover, vMapping, vMapping2, vPacking );
|
||||
}
|
||||
if ( ((If_Man_t *)pIfMan)->pPars->fLut6Filter && Vec_IntSize(vLeaves) == 6 )
|
||||
{
|
||||
extern word If_Dec6Perform( word t, int fDerive );
|
||||
extern void If_Dec6Verify( word t, word z );
|
||||
Vec_Int_t * vLeaves2 = Vec_IntAlloc( 4 );
|
||||
word t = pRes[0];
|
||||
word z = If_Dec6Perform( t, 1 );
|
||||
//If_DecPrintConfig( z );
|
||||
If_Dec6Verify( t, z );
|
||||
|
||||
t = Abc_Tt6Stretch( z & 0xffff, 4 );
|
||||
Vec_IntClear( vLeaves2 );
|
||||
for ( i = 0; i < 4; i++ )
|
||||
Vec_IntPush( vLeaves2, Vec_IntEntry( vLeaves, (int)((z >> (16+i*4)) & 7) ) );
|
||||
iObjLit1 = Gia_ManFromIfLogicCreateLut( pNew, &t, vLeaves2, vCover, vMapping, vMapping2 );
|
||||
|
||||
t = Abc_Tt6Stretch( (z >> 32) & 0xffff, 4 );
|
||||
Vec_IntClear( vLeaves2 );
|
||||
for ( i = 0; i < 4; i++ )
|
||||
if ( ((z >> (48+i*4)) & 7) == 7 )
|
||||
Vec_IntPush( vLeaves2, iObjLit1 );
|
||||
else
|
||||
Vec_IntPush( vLeaves2, Vec_IntEntry( vLeaves, (int)((z >> (48+i*4)) & 7) ) );
|
||||
iObjLit1 = Gia_ManFromIfLogicCreateLut( pNew, &t, vLeaves2, vCover, vMapping, vMapping2 );
|
||||
|
||||
Vec_IntFree( vLeaves2 );
|
||||
return iObjLit1;
|
||||
}
|
||||
// check if there is no LUT structures
|
||||
if ( pStr == NULL )
|
||||
return Gia_ManFromIfLogicCreateLut( pNew, pRes, vLeaves, vCover, vMapping, vMapping2 );
|
||||
|
|
|
|||
Loading…
Reference in New Issue