mirror of https://github.com/YosysHQ/abc.git
112 lines
3.1 KiB
C
112 lines
3.1 KiB
C
/**CFile****************************************************************
|
|
|
|
FileName [dauDivs.c]
|
|
|
|
SystemName [ABC: Logic synthesis and verification system.]
|
|
|
|
PackageName [DAG-aware unmapping.]
|
|
|
|
Synopsis [Divisor computation.]
|
|
|
|
Author [Alan Mishchenko]
|
|
|
|
Affiliation [UC Berkeley]
|
|
|
|
Date [Ver. 1.0. Started - June 20, 2005.]
|
|
|
|
Revision [$Id: dauDivs.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
|
|
|
|
***********************************************************************/
|
|
|
|
#include "dauInt.h"
|
|
#include "misc/util/utilTruth.h"
|
|
|
|
ABC_NAMESPACE_IMPL_START
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
/// DECLARATIONS ///
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
/// FUNCTION DEFINITIONS ///
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
/**Function*************************************************************
|
|
|
|
Synopsis []
|
|
|
|
Description []
|
|
|
|
SideEffects []
|
|
|
|
SeeAlso []
|
|
|
|
***********************************************************************/
|
|
Vec_Int_t * Dau_DsdDivisors( word * pTruth, int nVars )
|
|
{
|
|
word Copy[DAU_MAX_WORD];
|
|
int nWords = Abc_TtWordNum(nVars);
|
|
int nDigits = Abc_TtHexDigitNum(nVars);
|
|
int i, j, k, Digit, Counter[5];
|
|
|
|
printf( " " );
|
|
printf( " !a *!b" );
|
|
printf( " !a * b" );
|
|
printf( " a *!b" );
|
|
printf( " a * b" );
|
|
printf( " a + b" );
|
|
printf( "\n" );
|
|
|
|
for ( i = 0; i < nVars; i++ )
|
|
for ( j = i+1; j < nVars; j++ )
|
|
{
|
|
Abc_TtCopy( Copy, pTruth, nWords, 0 );
|
|
Abc_TtSwapVars( Copy, nVars, 0, i );
|
|
Abc_TtSwapVars( Copy, nVars, 1, j );
|
|
for ( k = 0; k < 5; k++ )
|
|
Counter[k] = 0;
|
|
for ( k = 0; k < nDigits; k++ )
|
|
{
|
|
Digit = Abc_TtGetHex( Copy, k );
|
|
if ( Digit == 1 || Digit == 14 )
|
|
Counter[0]++;
|
|
else if ( Digit == 2 || Digit == 13 )
|
|
Counter[1]++;
|
|
else if ( Digit == 4 || Digit == 11 )
|
|
Counter[2]++;
|
|
else if ( Digit == 8 || Digit == 7 )
|
|
Counter[3]++;
|
|
else if ( Digit == 6 || Digit == 9 )
|
|
Counter[4]++;
|
|
}
|
|
printf( "%c %c ", 'a'+i, 'a'+j );
|
|
for ( k = 0; k < 5; k++ )
|
|
printf( "%7d", Counter[k] );
|
|
printf( "\n" );
|
|
}
|
|
return NULL;
|
|
}
|
|
void Dau_DsdTest000()
|
|
{
|
|
// char * pDsd = "!(!(abc)!(def))";
|
|
// char * pDsd = "[(abc)(def)]";
|
|
char * pDsd = "<<abc>d(ef)>";
|
|
word t = Dau_Dsd6ToTruth( pDsd );
|
|
// word t = 0xCA88CA88CA88CA88;
|
|
// word t = 0x9ef7a8d9c7193a0f;
|
|
int nVars = Abc_TtSupportSize( &t, 6 );
|
|
return;
|
|
// word t = 0xCACACACACACACACA;
|
|
Dau_DsdDivisors( &t, nVars );
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
/// END OF FILE ///
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
ABC_NAMESPACE_IMPL_END
|
|
|