/**CFile****************************************************************
FileName [mvcPrint.c]
PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]
Synopsis [Printing cubes and covers.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - February 1, 2003.]
Revision [$Id: mvcPrint.c,v 1.6 2003/04/09 18:02:06 alanmi Exp $]
***********************************************************************/
#include "mvc.h"
//#include "vm.h"
//#include "vmInt.h"
ABC_NAMESPACE_IMPL_START
////////////////////////////////////////////////////////////////////////
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
static void Mvc_CubePrintBinary( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube );
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CoverPrint( Mvc_Cover_t * pCover )
{
Mvc_Cube_t * pCube;
int i;
// print general statistics
printf( "The cover contains %d cubes (%d bits and %d words)\n",
pCover->lCubes.nItems, pCover->nBits, pCover->nWords );
// iterate through the cubes
Mvc_CoverForEachCube( pCover, pCube )
Mvc_CubePrint( pCover, pCube );
if ( pCover->pLits )
{
for ( i = 0; i < pCover->nBits; i++ )
printf( " %d", pCover->pLits[i] );
printf( "\n" );
}
printf( "End of cover printout\n" );
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CubePrint( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube )
{
int iBit, Value;
// iterate through the literals
// printf( "Size = %2d ", Mvc_CubeReadSize(pCube) );
Mvc_CubeForEachBit( pCover, pCube, iBit, Value )
printf( "%c", '0' + Value );
printf( "\n" );
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CoverPrintBinary( Mvc_Cover_t * pCover )
{
Mvc_Cube_t * pCube;
int i;
// print general statistics
printf( "The cover contains %d cubes (%d bits and %d words)\n",
pCover->lCubes.nItems, pCover->nBits, pCover->nWords );
// iterate through the cubes
Mvc_CoverForEachCube( pCover, pCube )
Mvc_CubePrintBinary( pCover, pCube );
if ( pCover->pLits )
{
for ( i = 0; i < pCover->nBits; i++ )
printf( " %d", pCover->pLits[i] );
printf( "\n" );
}
printf( "End of cover printout\n" );
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CubePrintBinary( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube )
{
int iVar, Value;
// iterate through the literals
// printf( "Size = %2d ", Mvc_CubeReadSize(pCube) );
Mvc_CubeForEachVarValue( pCover, pCube, iVar, Value )
{
assert( Value != 0 );
if ( Value == 3 )
printf( "-" );
else if ( Value == 1 )
printf( "0" );
else
printf( "1" );
}
printf( "\n" );
}
#if 0
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CoverPrintMv( Mvc_Data_t * pData, Mvc_Cover_t * pCover )
{
Mvc_Cube_t * pCube;
int i;
// print general statistics
printf( "The cover contains %d cubes (%d bits and %d words)\n",
pCover->lCubes.nItems, pCover->nBits, pCover->nWords );
// iterate through the cubes
Mvc_CoverForEachCube( pCover, pCube )
Mvc_CubePrintMv( pData, pCover, pCube );
if ( pCover->pLits )
{
for ( i = 0; i < pCover->nBits; i++ )
printf( " %d", pCover->pLits[i] );
printf( "\n" );
}
printf( "End of cover printout\n" );
}
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_CubePrintMv( Mvc_Data_t * pData, Mvc_Cover_t * pCover, Mvc_Cube_t * pCube )
{
int iLit, iVar;
// iterate through the literals
printf( "Size = %2d ", Mvc_CubeReadSize(pCube) );
iVar = 0;
for ( iLit = 0; iLit < pData->pVm->nValuesIn; iLit++ )
{
if ( iLit == pData->pVm->pValuesFirst[iVar+1] )
{
printf( " " );
iVar++;
}
if ( Mvc_CubeBitValue( pCube, iLit ) )
printf( "%c", '0' + iLit - pData->pVm->pValuesFirst[iVar] );
else
printf( "-" );
}
printf( "\n" );
}
#endif
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
ABC_NAMESPACE_IMPL_END